How to analyze the history or changelog of an Issue in Jira

Platform Notice: Data Center Only - This article only applies to Atlassian products on the Data Center platform.

Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

Summary

This article offers a way to parse the Issue's changelog, or History, in a more readable format to help investigate or understand the changes.

This is particular useful when we suspect a change was made and shouldn't have been possible, or understand the correlation between Issues creations and updates.

Terminology

These terms refer to the same data‚ they're just named differently depending on the context or media:

User Interface

REST API or field

Database

Issue History

Changelog

Changegroup and Changeitem

Environment

All versions of Jira 8 and 9, both Jira Software and Jira Service Management.

Solution

Through REST API

Browse the Issues you want to analyze the History:

1 https://Jira-base-URL/rest/api/2/issue/JIRA-12345?expand=changelog

And save the page or output into a file named JIRA-12345.json. Replace the URL and Issue key (JIRA-12345) accordingly and as needed. Do this for every Issue you want to correlate changelog data. For additional details related to this REST API call please see our REST API documentation.

With the files saved in one location, run this Linux command on that folder. It requires the jq utility:

1 cat *.json | jq -j '.fields.created, "\t", .key, "\t", "CREATED", "\n", .key as $key | (.changelog.histories[] | .created as $changelogdate | (.items[] | select(.field != "description") | $changelogdate, "\t", $key, "\t", .field, "\t[", .fromString[0:30], "]\t->\t[", .toString[0:30], "]\n"))' | column -t -s $'\t' | sort -k1 -k2 -s

The command's filtering out the Description's updates because this field tends to have too much content and make the output hard to read. You can remove that filter or even exclude more fields if they mess up the output format.

It'll print the timeline of the Issue's changelog in this fashion:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2023-09-12T10:32:12.853-0400 JIRA-12345 CREATED 2023-09-12T10:32:14.767-0400 JIRA-12345 Request participants [Charlie] -> [Dan, Jessica] 2023-09-12T10:32:14.767-0400 JIRA-12345 status [Waiting for Support] -> [In Progress] 2023-09-12T10:57:14.160-0400 JIRA-12345 assignee [null] -> [Other Charlie] 2023-09-12T10:57:14.160-0400 JIRA-12345 resolution [null] -> [Resolved] 2023-09-12T10:57:14.160-0400 JIRA-12345 status [Waiting for Support] -> [Closed] 2023-09-12T11:39:52.143-0400 JIRA-12345 Satisfaction date [null] -> [09/12/23 11:39 AM] 2023-09-12T11:48:00.687-0400 JIRA-12345 priority [P3] -> [P2] 2023-09-12T11:48:01.743-0400 JIRA-12345 Attachment [null] -> [report_2023.xls] 2023-09-12T12:00:34.923-0400 JIRA-12345 resolution [Resolved] -> [null] 2023-09-12T12:00:34.923-0400 JIRA-12345 status [Closed] -> [Waiting for Support] 2023-09-12T12:01:44.427-0400 JIRA-12345 Customer Request Type [Incident] -> [Service Request] 2023-09-12T12:01:44.427-0400 JIRA-12345 Key [CONF-10100] -> [BB-70090] 2023-09-12T12:01:44.427-0400 JIRA-12345 component [Operating System] -> [] 2023-09-12T12:01:44.427-0400 JIRA-12345 Workflow [Connie Workflow] -> [BB Workflow] 2023-09-12T12:01:44.427-0400 JIRA-12345 project [Confluence] -> [BitBucket] 2023-09-12T12:01:44.427-0400 JIRA-12345 status [Waiting for Support] -> [Not Started] 2023-09-12T12:01:45.273-0400 JIRA-12345 assignee [Other Charlie] -> [null] 2023-09-12T12:19:14.723-0400 JIRA-12345 Key [BB-70090] -> [JIRA-12345] 2023-09-12T12:19:14.723-0400 JIRA-12345 Workflow [BB Workflow] -> [Jira Workflow] 2023-09-12T12:19:14.723-0400 JIRA-12345 project [BitBucket] -> [Jira] 2023-09-12T13:11:00.633-0400 JIRA-12345 Attachment [null] -> [report_2023.xls] 2023-09-12T13:46:45.083-0400 JIRA-12345 assignee [null] -> [Charlie] 2023-09-12T13:46:45.083-0400 JIRA-12345 status [Not Started] -> [Discovery]

This is from a single Issue's JSON.

Here we can see more easily when it changed from project CONF to BB and to JIRA, together with some Workflow and Status changes.

Updated on April 8, 2025

Still need help?

The Atlassian Community is here for you.