Automation For Jira - How to create a rule that calculate ICE score and prioritize tickets based on it
Platform Notice: Data Center - This article 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
Development Teams might prioritise new feature in their backlog using ICE technique.
This article describes how to configure an Automation Rule using the Create Variable action available in Automation for Jira 9.0.1, which will perform the following actions:
Calculate the ICE score based on the Impact, Confidence and Ease values, and using the equation below:
ICE = Impact x Confidence x Ease
- Prioritize the Jira issue based on the ICE score
Environment
- Jira Data Center Only (This article does not apply to Jira Server licenses)
- Applicable Jira / A4J (Automation for Jira) versions:
- Jira 9.11.0 and any higher version (this Jira version ships with A4J 9.0.1)
- OR Jira 8.20.0 and any higher version, in combination with A4J 9.0.1
Preliminary steps
- Go to ⚙ > Issues > Custom fields, and create 4 number fields with the following names:
- Impact
- Confidence
- Ease
- ICE
- Make sure that:
- the context configuration of these fields include the project(s) where you are planning to calculate the ICE score
- these fields are added to all the screens (Create/View/Edit Issue screens) associated to these project(s)
Rule suggestion
The rule will need to be configured as follows:
- Add the Field value changed trigger with the following settings
- Fields to monitor:
- Impact
- Confidence
- Ease
- For: All issue operations
- Fields to monitor:
Add the Create variable action, using the Smart Value below:
{{#=}}{{issue.Impact}} * {{issue.Confidence}} * {{issue.Ease}}{{/}}
- Add an Edit Issue action with the parameters below:
- Choose field to set: ICE
- Value: {{ICE}}
- Add an IF/ELSE block
- In the IF block:
- Add an Edit Issue action
- Field to set: Property
- Value: Highest
- Add an Advanced compare condition with the parameters below:
- First value: {{ICE}}
- Condition: Greater than
- Second value: 300
- Add an Edit Issue action
- If the first IF/ELSE block:
- Add an Edit Issue action
- Field to set: Property
- Value: High
- Add an Advanced compare condition with the parameters below:
- First value: {{ICE}}
- Condition: Greater than
- Second value: 200
- Add an Edit Issue action
- If the next IF/ELSE block:
- Add an Edit Issue action
- Field to set: Property
- Value: Medium
- Add an Advanced compare condition with the parameters below:
- First value: {{ICE}}
- Condition: Greater than
- Second value: 100
- Add an Edit Issue action
- If the next ELSE block
- Add an Edit Issue action
- Field to set: Property
- Value: Low
- Add an Edit Issue action
- In the IF block:
Screenshot showing the rule
Alternative solution and drawback of this solution
An alternative solution to this use case which does not involve the usage of the Create Variable action is to:
- Directly store the result of the formula Impact x Confidence x Ease = 360 in the ICE Custom Field
- Add the Re-fetch Data action before the IF/ELSE block, to ensure that the automation rule fetches the updated value of the ICE Custom Field
- Use the content of the ICE custom field via the smart value {{issue.ICE}} in the IF/ELSE blocks as illustrated in the screenshot below:
The drawback of using such solution is the fact that the re-fetch data action can be an expensive action, since the rule is reloading all the fields from the Jira issue from the Jira Database, which can take some time and make the rule less efficient. That's the reason why using the Create Variable action available from Automation For Jira 9.0.0 (and Jira 9.11.0) is the most efficient way to implement such use case.