How does the progress calculation of Jira issues and epics works?
Background
By default, progress of epic & other type of Jira issue key results is handled solely on the basis of resolution field.
When the progress calculation is done on the basis of resolution fields, the progress percentage is always either 0 or 100. e.g. If there is one Jira issue and it has 2 subtasks then each subtask's progress will be 0% if resolution is empty & 100% if resolution is not empty.
However, to take this calculation to the next level and to get the exact progress, we have made the system capable enough to sync with custom fields so you will get the exact progress percentage of KRs. Read How to manage progress calculation settings for Jira epics & issues as KRs? for more details on these settings.
Also, let us see some examples of how these calculations are done when the epic is KR or issue other than epic is KR.
How Jira epics and issue key result progress calculation works?
From V3.8.8, configurations are available to determine how you want to calculate the progress of epic & issues other than epic with two options given below.
Calculation on the basis of resolution field.
Calculation on the basis of custom fields.
Progress calculation when Jira epic is key result
Note
Below explanation assumes that relevant configurations about making sub-tasks count towards progress are turned on. For both, epic, as well as other issues.
When a Jira epic is added as KR to an objective, that epic may or may not contain issues & subtasks. While calculating the progress of such epic KR, system checks whether at the bottom stage there is a subtask or an issue, depending on the hierarchy of the epic, system starts checking the resolution of that bottom stage.
Calculation on the basis of resolution field
Example - If an epic contains 2 Jira issues & each of those 2 issues contain 5 subtasks, each of them automatically contributes 20% of progress to the Jira issue. Then depending on the progress % of the Jira issues the progress % of epic will be calculated. Refer images below to understand how this calculation would work.
As per this example, the progress is derived from a subtask to Jira issue and then to an epic. Consider the example shown in the image below.
Epic has 2 Jira issues & these issues, in turn, have 4 (25% progress contribution each) & 2 (50% progress contribution each) subtasks respectively.
In Jira issue 1, resolution of 3 subtasks is not empty & is empty for 1 of them. Hence, the system calculates the progress percentage as 75%
In Jira Issue 2, Resolution of 1 subtask is not empty and is empty for another. Hence, the progress percentage is 50%.
When the progress of an epic is calculated, the system considers the total progress of all Jira issues in the epic and divides it by the number of Jira issues within the epic. (assuming weightage is not set up via a custom field)
Here, epics progress is 125/2 = 62.5%.
If there are no subtasks in the Jira issue of an epic, the system considers the resolution of the Jira issue to calculate the progress (applicable in both configurations).
Calculation on the basis of custom field
When the settings are configured to calculate the progress on custom fields, system looks for the last level of the issue and its custom field value to calculate the progress of the epic.
Example - Assume, an epic contains 2 Jira issues. Jira issue 1 has 3 subtasks in it & Jira issue 2 has 2 subtasks. The calculation of the progress is done on the basis of custom field that is why calculation will be done considering the value of custom field as well as the custom filed of the weightage. If the custom weightage custom field is not defined, system will take the equal & default weightage for progress calculation.
As per this example, the progress is derived from a subtask to Jira issue and then to an epic. Consider the example shown in the image below.
In the Epic KR, Jira issue 1 contains 3 subtasks & Jira issue 2 contains 2 subtasks. Please refer custom field values as given in the image below.
Progress calculation of Jira issue 1 -
(Subtask 1's custom field value * its weightage custom field value) + (Subtask 2's custom field value * its weightage custom field value) + (Subtask 3's custom field value * its weightage custom field value) / addition of all weightage values.
= (30*10) + (40*5) + (50*5) / 10+5+5
= 300+200+250/20 = 37.5
Hence, Jira issue 1 progress % = 37.5
Progress calculation of Jira issue 2 -
In Jira issue 2, custom fields are not applicable. Therefore, system considers the resolution of the subtask. Resolution of both subtasks is not empty hence the progress calculation is 100% for both. Whereas for subtask 2, custom fields are not applicable to both subtask and its weightage.
(Subtask 1's progress * its weightage custom field value) + (Subtask 2's progress * its default weightage) / addition of all weightages.
= (100*5) + (100*5) / 5+5
= 500 + 500 / 10
= 1000/ 10 = 100
Hence, the progress % of Jira issue 2 is 100.
Progress calculation of epic
Now we have hot progress percentages for both issues within the epic, let us calculate the epics progress calculation.
(Jira issue 1's progress % * its weightage custom field value ) + (Jira issue 2's progress % * its weightage custom field value )
= (37.5*7) + (100*5) / 7+7
= 262.5 + 700 / 14
= 962.5/14 = 68.75
Hence, the progress of epic Kr 68.75%
Progress calculation when issues other than epic are key results
Note
Below explanation assumes that relevant configurations about making sub-tasks count towards progress are turned on. For both, Epic as well as other issues.
Calculation on the basis of resolution field
When a Jira issue is added as a key result, the system considers the resolution of the subtask. If there are no subtasks then it looks for resolution parameter of the Jira issue to calculate the progress. Refer to the image below.
Jira issue 1 has 3 subtasks and 'resolution is not empty' for 2 of them. Hence, progress is 66.67%.
Jira issue 2 has no subtask as well as it's 'resolution is empty' hence, the progress is 0%. If the resolution was not empty, progress would have been 100% for Jira issue 2.
Calculation on the basis of custom fields
When issues other than epic are added as KRs, the progress of issue KR can be calculated on the basis of task contained in it. When calculating this progress on the basis of the custom field, the workflow would be something like shown in the image below. Let us see an example of this progress calculation.
Example - Jira issue 1 contains 3 subtasks & Jira issue two contains 2 subtasks. Subtasks in Jira issue one have some custom fields applicable o them. In Jira issue 2, it's subtask does not match with the defined custom field.
Progress calculation of Jira issue 1 -
(Subtask 1's custom field value * its weightage custom field value) + (Subtask 2's custom field value * its weightage custom field value) + (Subtask 3's custom field value * its weightage custom field value) / addition of all weightage values
=(20*5) + (25*2) + (5*5)/ 5+2+5
=100+50+25/12
= 175/12 = 14.58
Hence, the progress of Jira issue 1 is 14.58 %
Progress calculation of Jira issue 2 -
In Jira issue 2, the custom fields are not applicable, therefore system considers their resolution fields. Also for subtask 2 in Jira issue 2, the weightage field is not applicable. Therefore, the default weightage of 4 is considered here.
(Subtask 1's custom field value * its weightage custom field value) + (Subtask 2's custom field value * its weightage custom field value) / addition of all weightage values
= (100*5) + (100*5) / 5+5
= 500+500/10
= 1000/10 = 100
Hence, the progress of Jira issue 1 is 100 %
Other related readings