WSJF scoring using Jira Automation

Colton_Kosicek September 18, 2020

Hey Everyone,

I finally found my solution to a "free" version of automating the WSJF score on Epics in Jira without having to procure an add-on.  My company is on Jira Cloud so we have access to Automation rules capability for projects. 

 

Setup - We created 5 new fields 

  1. Time Criticality
  2. Business Value
  3. Risk reduction / Enablement
  4. Size
  5. WSJF Score

 

My rule steps:

  1. Create a value change on any of the WSJF values (Time Criticality, Business value, Risk Reduction/ Enablement, Size) for any operations
  2. Create a new Variable
    1. Variable Name  = CalculatedBusinessValue
    2. Smart value = {{#=}}{{Issue.Time Criticality|0}} + {{Issue.Business Value|0}} + {{Issue.Risk Reduction / Enablement|0}}{{/}}
  3. If/Else Block
    1. If SIZE is NOT EMPTY
    2. THEN Create Variable
      1. Variable Name = CalculatedWSJF
      2. Smart value = {{#=}}{{CalculatedBusinessValue}}/{{Size|0}}{{/}}
    3. Edit Issue
      1. Set WSJF Score to new variable {{CalculatedWSJF}}
  4. ELSE block
    1. WSJF Score = This field will be cleared

 

 

Key Notes: 

  • These are my names for the fields so you will have to adjust to your company/instance name of the fields you created
  • At the end of each variable name I added "|0" before closing the object.  This helps provide a "0" in replace of a null value so you do not get any silly math errors.  Most likely not needed but i provided just in case
  • The If/Else block is a nice to have add-on because it will provide two benefits.  If job size score is removed it will reset the WSJF score back to nothing.  Secondly it does not cause an error message if business scores any of their 3 items ahead of job size.  Anything divided by "0" will cause an error email to get generated.

4 comments

Comment

Log in or Sign up to comment
Nicolas Mezou October 5, 2020

Awesome, thank you!

Like Colton_Kosicek likes this
Doug Shapiro February 17, 2021

Hi Colton - We are currently looking to implement WSJF scoring and came across your solution. Thank you for providing - this is very helpful especially since this is my first time using Jira Automation. A question I'm hoping you might be able to provide some insight for:

The way we want to implement our Size field for a certain level of precise vs more average scoring involves being able to select a specific Fibonacci number from a drop-down selection with values (1,2,3,5,8,13,21,34) or being able to select alpha string of "Low", "Med", "Big" which would would use the average of Fibonacci numbers we decided that each would represent. It works like this: a selection of "Low" would use 1.5 (the average of 1 and 2), "Med" would use 5.5 (the average of 3, 5, 8) and "Big" would use 27.7 (the average of 13, 21, 34). Our size field has existed for years. Using it as part of a WSJF calculation is something new. Another advantage to keeping the the existing alpha selections is that tickets already set to one of these alpha values that have been resolved won't have these values cleared out. We want to maintain those selections for historical reasons.

After all that, the questions is simply this:
What is the (presumably if/then/else) syntax that would work for not just choosing a specific Fibonacci value but also use a value associated with choosing either "Low" or "Med" or "Big"? I've done some searches on using automation for string conditions but can't seem to find an example for how to make this work. Any ideas would be appreciated!

Colton_Kosicek February 17, 2021

Hey Doug,

 

This might not be the cleanest solution but you could run a couple if loops within Validation of the WSJF score being present. 

If Size (WSJF) is equal to Small

{{#=}}{{CalculatedBusinessValue}}/{{Size (WSJF)|1.50}}{{/}}

Then Calculate WSJF

If Size (WSJF) is equal to Med

{{#=}}{{CalculatedBusinessValue}}/{{Size (WSJF)|5.50}}{{/}}

Then Calculate WSJF

If Size (WSJF) is equal to Large

{{#=}}{{CalculatedBusinessValue}}/{{Size (WSJF)|27.7}}{{/}}

Then Calculate WSJF

 

Please know that you may struggle with right sizing the appropriate score to get the right Features (Jira Epics) prioritized for each PI using your model as there may be many WSJF scores very similar to each other. I'm betting your organization has already accepted this and experiences it though.

 

Good luck hope the above works!

Doug Shapiro February 17, 2021

Wow, thanks for such a quick and helpful reply, Colton! I look forward to trying the suggested string compare syntax as I implement the new fields and automation over the next couple of days! Your advice is very well taken that trying to order / prioritize the backlog may turn out to be more difficult since WSJF scores in different work items can now be closer to each other. We would definitely avoid this if we just stay with the actual Fibonacci numbers and not include these average selections.  The thought was that this would allows us to use the wide average numbers for Low, Med, High when we are doing a rough estimate and more specific (narrow) Fibonacci numbers when we are surer of our estimate. Then there's that secondary advantage of maintaining all the tickets that are already using Low, Med, Big since if I don't include them in this pre-existing Size field, I think those values will all get cleared out. Am I mistaken?

Thank you for not just the suggested syntax but these thoughts as well. I don't think it out of the realm of possibility that after we try this for some time, we may make the decision to just limit selections to the actual Fibonacci numbers (and not averages as well).

Doug Shapiro February 21, 2021

Hello again Colton!
I added the required new fields to my Jira project and created the automation rule based on your suggestion to calculate WSJF score. Unfortunately, the score is always showing as "0". Also, while the audit log indicates success, the test ticket I'm using shows "No automation available" under the Automation section. I'm hoping you might be able to provide some guidance. This is my first adventure using Jira Automation and I fully expect I'm doing something particularly stupid but I'm a bit too much of a newbie to realize what that is!


My rule is currently quite simple as well. Instead of calculating a business value by adding together the 3 fields in your example, we decided at this early stage to just input what we call an ECV (Estimated Customer Value) score directly via a drop-down selection of Fibonacci numbers. The other input field is our our preexisting ETE (Estimated Total Effort) field which is our version of the "Size" field in your example. I've added the Fibonacci numbers to this field which already contained "Small", Medium", and "Big". To keep things simple, for my initial rule creation attempt, I did not yet build in the suggested logic to handle representing values for these string selections. I am only testing right now by selecting numbers.

When I select values for either the ECV or ETE fields in my test ticket, I get a popup that seems encouraging "Issue updates available! This issue was just updated by an automation rule. Please reload to see the latest changes." but as stated, under the Automation section of the ticket "No automation available" is showing. The audit log for my rule is showing that 1) The rule is enabled, 2)The IF Block Passed and updated my issue. 3) The WSJF Score field was updated with the variable {{CalculatedWSJF}}. However, the WSJF score shown in the updated ticket is always '0".

What follows is a single screenshot of my rule which I edited so you can see the all the details as once - Create Variable and Edit Issue in the If Block and the Edit Issue in the Else block.

JIraAutomatinoRule_WSJF Score.png

I would be grateful for any insights you may have about what's not right.
Doug

Colton_Kosicek February 22, 2021

Hey Doug,

For some reason i cannot see your post here but this commentary may help others so i'll post it.  When i provide the following

"Smart value = {{#=}}{{CalculatedBusinessValue}}/{{Size|0}}{{/}}"

The Size|0 value is stating.. use the field "size" value and if it empty than provide "0".  Because you use a string instead of a number value you are always providing a "0" as the bottom number which will result in a "0" calculated score or an divisibility error.

My suggestion above with running some extra "IF" Loops for each of your values helps set Value for your string according to the assumed Fibnocchi score.  Multiple nested loops are never a great way to code but we are not coders so this could do.

If ETE is equal to Small

{{#=}}{{ECV}}/{{ETE|1.50}}{{/}}

Then Calculate WSJF

ELSE

If ETE is equal to Medium

{{#=}}{{ECV}}/{{ETE|5.50}}{{/}}

Then Calculate WSJF

ELSE

If ETE is equal to Large

{{#=}}{{ECV}}/{{ETE|27.7}}{{/}}

Then Calculate WSJF

 

The ideal solution would be to have it create a temporary variable or create a new field that sets a number value based off of your string.

Doug Shapiro February 22, 2021

Hey Colton!

I'm happy you got the post notification with the details of what wasn't working for me. I posted it successfully on Friday and over the weekend found that the post was removed and have no idea why. I tried to post again on Sunday and I'm sure you got a second notification and again, when I refreshed this thread, the post was gone. I can't figure out why it's being removed. I'm not breaking any posting rules I know of in the text and likewise, I can't figure what would be wrong with the one screenshot I provided with the rule details. Very strange indeed. I hope this reply gets posted!

You are right about needing the string handling but I intentionally did not provide it for my initial attempts and in testing ONLY selected Fibonacci values in the drop-down for ETE yet I still always ended up with a WSJIF score of 0. I had a colleague take a look and he found that I was missing the curly brackets to close the "ECV" in my calculation:

Missing curly bracket after ECV:
{{#=}}{{ECV/{{ETE|0}}{{/}}

Corrected:
{{#=}}{{ECV}}/{{ETE|0}}{{/}}

My tests are now successful! (avoiding any string selections until I build in your suggested logic).

What throws me is why didn't the audit log flag ECV as being invalid in this calculation? I wouldn't have expected it to be valid since I never properly closed out the field name in the calculation!

Thank you very much again for helping. I will try the string logic next!
With much appreciation!!
Doug

Doug Shapiro February 19, 2021

Hello again Colton!

I added the required new fields to my Jira project and created the automation rule based on your suggestion to calculate WSJF score. Unfortunately, the score is always showing as "0". Also, while the audit log indicates success, the test ticket I'm using shows "No automation available" under the Automation section. I'm hoping you might be able to provide some guidance. This is my first adventure using Jira Automation and I fully expect I'm doing something particularly stupid but I'm a bit too much of a newbie to realize what that is!

My rule is currently quite simple as well. Instead of calculating a business value by adding together the 3 fields in your example, we decided at this early stage to just input what we call an ECV (Estimated Customer Value) score directly via a drop-down selection of Fibonacci numbers. The other input field is our our preexisting ETE (Estimated Total Effort) field which is our version of the "Size" field in your example. I've added the Fibonacci numbers to this field which already contained "Small", Medium", and "Big". To keep things simple, for my initial rule creation attempt, I did not yet build in the suggested logic to handle representing values for these string selections. I am only testing right now by selecting numbers.

When I select values for either the ECV or ETE fields in my test ticket, I get a popup that seems encouraging "Issue updates available! This issue was just updated by an automation rule. Please reload to see the latest changes." but as stated, under the Automation section of the ticket "No automation available" is showing. The audit log for my rule is showing that 1) The rule is enabled, 2)The IF Block Passed and updated my issue. 3) The WSJF Score field was updated with the variable {{CalculatedWSJF}}. However, the WSJF score shown in the updated ticket is always '0".

What follows is a single screenshot of my rule which I edited so you can see the all the details as once - Create Variable and Edit Issue in the If Block and the Edit Issue in the Else block.

JIraAutomatinoRule_WSJF Score.png

I would be grateful for any insights you may have about what's not right.

Doug

Doug Shapiro February 22, 2021

Looks like my missing post from Friday and second attempt from Sunday just showed up above. Sorry their late arrival (and duplicates) made this thread more of a mess then it should have been.

Gianni Pucciani September 15, 2021

An alternative way to do it is with JMCF add-on you can create a custom field (calculated number) and then use this script:

def bv = issue.get("User-Business Value") as Integer
def tc = issue.get("Time Criticality") as Integer
def ro = issue.get("Risk reduction - Opportunity") as Integer 
def sp = issue.get("Story Points") as Integer 

if ( !(bv == null) ) {
  if ( !(tc == null ) ) {
    if ( !(ro == null ) ) {
      if ( !(sp == null ) ) {
  return (bv+tc+ro)/sp 
      }
    }
  }
}
Like Colton_Kosicek likes this
Colton_Kosicek September 15, 2021

Is JMCF a free add-on? Either way can you link it to your comment or reply with a link.  Would love to make this an official "ANSWER" channel for WSJF scoring possibilities.  Appreciate your contribution @Gianni Pucciani 

TAGS
AUG Leaders

Atlassian Community Events