I’m working on building monthly reports for a client and need to track how long tickets spend in each workflow state like To Do, In Progress, and Done. The main thing they want to see is the time between when they submit a ticket and when we actually pick it up and start working on it.
I was really surprised that Jira’s built-in reporting doesn’t handle this basic requirement. I looked into some third-party plugins but they’re expensive and I’m not even sure they do what I need. This seems like such a common thing to want to measure.
I tried using a .NET REST client library but it doesn’t expose the historical data I need. Now I’m looking at the native Jira REST API but the JSON response structure is pretty complex when you try to get status change timestamps. Has anyone tackled this kind of reporting before? What approach did you take to extract the workflow transition data?
Been there! Built custom dashboards for management and here’s what works: use Jira’s changelog field in the REST API. It tracks all status changes with timestamps. Hit /rest/api/2/search with expand=changelog to pull the historical data. The JSON looks messy but you want the histories array - each item has items where field equals “status”. Grab the from, to, and created values to calculate how long tickets spend in each state. I wrote a script that dumps everything to CSV for easy analysis. Way cheaper than those overpriced plugins and you control exactly what metrics you track.
totally feel ya! the jira api can be a bit of a maze, but once you get the hang of it, you can do a lot. my buddy used python too—way cheaper than those plugins. good luck with your reports!
Had this exact problem six months ago when our PM started asking for workflow metrics. I built a scheduled job that hits the Jira API every night and dumps the status transition data into a separate database table. No more hammering the API during work hours, and monthly reports run against clean data. Here’s the key thing - track cumulative time in each status, not just the last transition. Tickets bounce between states all the time. I sort all status changes by date and add up time spent in each state across every transition. More work upfront, but way more accurate reports.