Change history stores the field name translated into the acting user's language, so "field" varies by author while "fieldId" is stable

XMLWordPrintable

    • Severity 3 - Minor

      Issue Summary

      When a user whose Jira profile language is set to something other than English changes a
      work item, the resulting change history record stores the translated field name. The
      field value therefore varies depending on the language preference of the user who made
      the change, while fieldId remains stable and correct.

      This produces mixed-language change history within a single site. Consumers that filter or
      group issue history by field name miss records created by users whose language is not
      English. This affects REST changelog clients, CSV exports, and issue history data in
      Atlassian Analytics.

      Steps to Reproduce

      1. Set your personal language to French under Profile and visibility > Language. Any
        non-English language reproduces this; French is used here for illustration.
      2. Open any work item and transition it to a different status.
      3. Set your personal language back to English.
      4. Using a second account whose language is English, transition another work item to a
        different status.
      5. Retrieve the change history for both work items via
        GET /rest/api/3/issue/{issueIdOrKey}/changelog.

      Expected Results

      The field value is identical for both records, because the same field changed in both
      cases:

      "items": [ { "field": "status", "fieldId": "status", ... } ]
      

      Actual Results

      The field value differs according to the language of the user who made the change,
      while fieldId is correct in both cases:

      // changed by the French-language user
      "items": [ { "field": "\u00c9tat", "fieldId": "status", ... } ]
      
      // changed by the English-language user
      "items": [ { "field": "status", "fieldId": "status", ... } ]
      

      The stored value is not re-resolved for the viewing user, so everyone sees the language of
      the original author regardless of their own settings. The same behaviour affects other
      fields and other languages, for example Estado in Spanish.

      Workaround

      Filter and group on fieldId rather than field. fieldId is stable across
      languages and across field renames.

      For issue history in Atlassian Analytics, use the field_id column instead of field:

      where lower(split(field_id, '::')[1]) = 'status'
      

      JQL historical operators (WAS, WAS IN, CHANGED) are unaffected, as they resolve on the
      field ID rather than the stored display name.

              Assignee:
              Unassigned
              Reporter:
              Trevor Lao
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated: