Lead + cycle time to replace JIRA Control Chart

Hi,

We are trying to replace control chart from JIRA by having a chart where:

  1. see lead time over time (from open to done)
  2. breakdown into sub-groups (i.e.: from “in progress” to “ready to production”)

Could you please share your export definitions ?

Thank you

You might want to consider a Cumulative Flow Diagram (available in JIRA but you can replicate in easyBI). CFDs are a good starting point but deal with averages so you need to be careful in reading too much into them. Histograms of cycle time are a good place to make sure you are not ignoring the fat tail of the distribution f cycle times. A good percentile is 85. See Dan Vacanti’s book Actionable Agile Metrics for all the deep details.
CFD: Use Aggregation in Transition Status to match the states and the order they appear on you board.
{
“cube_name”: “Issues”,
“cube_reports”: [ {
“name”: “CFD”,
“folder_name”: “Flow Metrics”,
“result_view”: “timeline_chart”,
“definition”: {“columns”:{“dimensions”:[{“name”:“Measures”,“selected_set”:["[Measures].[Issues history]"],“members”:[]},{“name”:“Transition Status”,“selected_set”:["[Transition Status].[Column Order]"],“members”:[{“depth”:0,“name”:“Column Order”,“full_name”:"[Transition Status].[Column Order]",“calculated”:true,“drillable”:true,“expanded”:true,“drilled_into”:false,“removed”:true}],“bookmarked_members”:[]}]},“rows”:{“dimensions”:[{“name”:“Time”,“selected_set”:["[Time.Weekly].[Week].Members"],“members”:[],“bookmarked_members”:[]}],“filter_by”:{“conditions”:[{“expression”:"[Time.Weekly].CurrentHierarchyMember",“operator”:“between”,“value”:“6 months ago, now”,“value_type”:“date”}]}},“pages”:{“dimensions”:[{“name”:“Project”,“selected_set”:["[Project].[All Projects]"],“members”:[{“depth”:0,“name”:“All Projects”,“full_name”:"[Project].[All Projects]",“drillable”:true,“type”:“all”,“expanded”:true,“drilled_into”:false},{“depth”:1,“name”:“XXX Development Projects”,“full_name”:"[Project].[XXX Development Projects]",“drillable”:true,“key”:“XXX”,“parent_full_name”:"[Project].[All Projects]"}],“bookmarked_members”:[],“current_page_members”:["[Project].[XXX Development Projects]"]},{“name”:“Issue Type”,“selected_set”:["[Issue Type].[All Issue Types]"],“members”:[{“depth”:0,“name”:“All Issue Types”,“full_name”:"[Issue Type].[All Issue Types]",“drillable”:true,“type”:“all”,“expanded”:true,“drilled_into”:true,“drill_level”:"[Issue Type].[Issue Type]"},{“depth”:1,“name”:“Story”,“full_name”:"[Issue Type].[Story]",“parent_full_name”:"[Issue Type].[All Issue Types]"}],“bookmarked_members”:[],“current_page_members”:["[Issue Type].[Story]"]}]},“options”:{“nonempty”:“columns”},“view”:{“current”:“timeline_chart”,“maximized”:false,“timeline_chart”:{“series_type”:“area”,“stacked”:true,“series_options”:{}},“table”:{}}}
} ],
“calculated_members”: [{“dimension”:“Measures”,“name”:“Issues history”,“format_string”:"#,##0",“formula”:“Cache(\n NonZero(Sum(PreviousPeriods([Time].CurrentHierarchyMember),\n Cache([Measures].[Transitions to]\n - [Measures].[Transitions from])\n ))\n + [Measures].[Transitions to]\n - [Measures].[Transitions from]\n)”,“annotations”:{“group”:“Default”}},{“name”:“Column Order”,“dimension”:“Transition Status”,“formula”:“Aggregate({\n [Transition Status].[Closed],\n [Transition Status].[Warranty],\n [Transition Status].[Ready For Release],\n [Transition Status].[Testing],\n [Transition Status].[Test Ready],\n [Transition Status].[Integration Test Prep],\n [Transition Status].[Execution In Progress],\n [Transition Status].[LOE Complete - Pending Execution],\n [Transition Status].[Pending LOE Approval],\n [Transition Status].[In Progress],\n [Transition Status].[Committed],\n [Transition Status].[Ready],\n [Transition Status].[On Hold],\n [Transition Status].[Triage/Analysis],\n [Transition Status].[Refining],\n [Transition Status].[New Intake],\n [Transition Status].[Open]\n})”,“format_string”:""}]
}

Histogram: Will show in software the distribution is not normal (control chart assumes that) but more a Weibull distribution k = 1.5
{
“cube_name”: “Issues”,
“cube_reports”: [ {
“name”: “Cycle Time Histogram”,
“folder_name”: “Flow Metrics”,
“result_view”: “bar_chart”,
“definition”: {“columns”:{“dimensions”:[{“name”:“Measures”,“selected_set”:["[Measures].[Issues closed]"],“members”:[]}]},“rows”:{“dimensions”:[{“name”:“Resolution interval”,“selected_set”:["[Resolution interval].[Resolution interval].Members"],“members”:[{“depth”:1,“name”:"(none)",“full_name”:"[Resolution interval].[(none)]",“removed”:true}],“bookmarked_members”:[]}],“nonempty_crossjoin”:false},“pages”:{“dimensions”:[{“name”:“Project”,“selected_set”:["[Project].[All Projects]"],“members”:[{“depth”:0,“name”:“All Projects”,“full_name”:"[Project].[All Projects]",“drillable”:true,“type”:“all”,“expanded”:true,“drilled_into”:false},{“depth”:1,“name”:“EAD Development Projects”,“full_name”:"[Project].[EAD Development Projects]",“drillable”:true,“key”:“XXX”,“parent_full_name”:"[Project].[All Projects]"}],“bookmarked_members”:[],“current_page_members”:["[Project].[EAD Development Projects]"]},{“name”:“Issue Type”,“selected_set”:["[Issue Type].[All Issue Types]"],“members”:[{“depth”:0,“name”:“All Issue Types”,“full_name”:"[Issue Type].[All Issue Types]",“drillable”:true,“type”:“all”,“expanded”:true,“drilled_into”:false},{“depth”:1,“name”:“Story”,“full_name”:"[Issue Type].[Story]",“parent_full_name”:"[Issue Type].[All Issue Types]"}],“bookmarked_members”:[],“current_page_members”:["[Issue Type].[Story]"]}]},“options”:{},“view”:{“current”:“bar_chart”,“maximized”:false,“bar_chart”:{“stacked”:false,“vertical”:true,“swap_axes”:false,“data_labels”:false,“series_options”:{“Critical”:{“color”:"#DB843D"},“Major”:{“color”:"#A47D7C"},“Minor”:{“color”:"#89A54E"},“Trivial”:{“color”:"#B5CA92"},"$total;$total":{“type”:“scatter”,“symbol”:“diamond”},“All Priorities”:{“type”:“scatter”,“color”:"#3D96AE"},"(no priority)":{“color”:"#4572A7"},“Blocker”:{“color”:"#AA4643"},“Issues resolved”:{“color”:"#AAC458"},“Issues closed”:{“type”:“bar”},“Hours spent”:{“separateAxis”:1,“type”:“line”},“Average resolution days”:{“separateAxis”:2},“AVG hours spent of resolved issues”:{“type”:“line”,“separateAxis”:1}}},“table”:{“row_dimension_headers”:{}}},“description”:“Time to Market as a Histogram in days”}
} ],
“calculated_members”: []
}

hi, tried to copy the report and import . got “report definition in wrong format”
please advise
thanks

id like to have a CFD report like that.

Hi @Tiago_Santiago

You contacted us also on the support email. Below is the answer from there.

Cycle time over time
The time that takes to move one card from the cycle start to the end - custom cycle times are not yet possible with eazyBI, but you can create a measure that for each issue gets the transition to the cycle start status first date and cycle end status last date and get the average over a set of issues. Please try the following measure:

NonZero(Avg(Filter(
  Descendants([Issue].CurrentHierarchyMember,[Issue].[Issue]),
  (
    [Measures].[Transitions to status],
    [Transition Status].[CYCLE_END_STATUS]
  )>0),
  Datediffdays(
    (
      [Measures].[Transition to status first date],
      [Transition Status].[CYCLE_START_STATUS],
      [Time].CurrentHierarchy.DefaultMember
    ),
    (
      [Measures].[Transition to status last date],
      [Transition Status].[CYCLE_END_STATUS]
    )
  )
))

Please replace the “CYCLE_END_STATUS” and “CYCLE_START_STATUS” with the statuses that mark the beginning and end of the cycle.

Breakdown for each status
The time spent in each status (In Progress, Waiting, etc.) can be achieved with standard measure and dimensions - you can use the “Days in transition status” measure together with Transition Status dimension to see how much time is spent in each of the statuses. In the Transition status dimension, you can select only the statuses you are interested in. See a similar example here - https://eazybi.com/accounts/1000/cubes/Issues/reports/145950-average-cycle-time.

Kind regards,
Roberts // eazyBI support

1 Like

Hi @hilal,

I also had trouble to import the definitions of both reports provided by @Guy_Winterbotham. One thing you can try to get an approximate picture on how the reports look like is to paste the definition in a text editor and search for the keywords “rows”, “columns”, “pages” and “calculated members”. That way, you will be able to see which dimensions and members are in each section and try to recreate the report.

Kind regards,
Roberts // eazyBI support

Hi guys,

Thank you for your help.

Haven’t tried yet your solutions, but I will, and give feedback.

Currently I’m using something like this:

-> sum of the time that each issue spent on each status

I have followed eazyBI + this site in order to get it working: https://mraddon.blog/2019/02/11/how-to-calculate-lead-time-or-real-average-resolution-days-with-eazybi-and-jira-part-ii/

The next step is to get -> for all issues (or in a selected period) get the average times spent on each status. So I will definitely take a look at your responses :slight_smile:

1 Like

Hello Robert,

Does the below time spent in each status take into consideration only the resolved issues for a given time period? Could you clarify please ?

https://eazybi.com/accounts/1000/cubes/Issues/reports/145950-average-cycle-time

Thank you ?

Hi @Karthiga_Sethuraj,

Welcome to the eazyBI community!
No, the linked report takes into account issues that had transitioned out of the transition statuses currently on rows in the given time period. These issues could be resolved or in another status entirely by now.

Best,
Roberts // support@eazybi.com

1 Like

Hello Roberts,

I followed @martins.vanags instructions given in the below thread.

I think that gives me the time spent in each status for all of the resolved issues in the given time period.

By creating a report with a measure “Workdays in transition status” in columns, and “Transition Status” dimension and “Issue” dimension in rows.

I selected Transition Status in Rows instead of columns and filtered report by measure “Issues resolved”

1 Like