Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Update OriginalEstimate based on StoryPoints

Vrijesh Jeswant
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
July 2, 2025

Hello All. Our org just adopted Jira and since we work exclusively off Story Points, we want to convert it into time-based estimates (using smart values as they are cleaner). I can try the whole bunch of IF-ELSE components but am wondering what is wrong with the smart values when the Audit log records a "success". 

The rule is set to run when the Story Points value changes. 
The rule gets triggered as expected (comment gets added on the work item - without the converted value; audit log shows a success)

Original Estimate field remains unchanged.

This is the smart value rule:
customfield 10053 is Story Points (tried 'issue.Story Points' which also does the same)

{{#if(equals(issue.customfield_10053, 0.5))}}2h{{/}}
{{#elseif(equals(issue.customfield_10053, 1))}}4h{{/}} {{#elseif(equals(issue.customfield_10053, 1.5))}}8h{{/}} {{#elseif(equals(issue.customfield_10053, 2))}}8h{{/}} {{#elseif(equals(issue.customfield_10053, 2.5))}}12h{{/}} {{#elseif(equals(issue.customfield_10053, 3))}}12h{{/}} {{#elseif(equals(issue.customfield_10053, 3.5))}}16h{{/}} {{#elseif(equals(issue.customfield_10053, 4))}}16h{{/}} {{#elseif(equals(issue.customfield_10053, 4.5))}}16h{{/}} {{#elseif(equals(issue.customfield_10053, 5))}}16h{{/}} {{#elseif(equals(issue.customfield_10053, 5.5))}}24h{{/}} {{#elseif(equals(issue.customfield_10053, 6))}}24h{{/}} {{#elseif(equals(issue.customfield_10053, 6.5))}}24h{{/}} {{#elseif(equals(issue.customfield_10053, 7))}}24h{{/}} {{#elseif(equals(issue.customfield_10053, 7.5))}}24h{{/}} {{#elseif(equals(issue.customfield_10053, 8))}}32h{{/}} {{#elseif(equals(issue.customfield_10053, 8.5))}}32h{{/}} {{#elseif(equals(issue.customfield_10053, 9))}}40h{{/}} {{#elseif(equals(issue.customfield_10053, 9.5))}}40h{{/}} {{#elseif(equals(issue.customfield_10053, 10))}}40h{{/}} {{#elseif(equals(issue.customfield_10053, 10.5))}}40h{{/}} {{#elseif(equals(issue.customfield_10053, 11))}}48h{{/}} {{#elseif(equals(issue.customfield_10053, 11.5))}}48h{{/}} {{#elseif(equals(issue.customfield_10053, 12))}}48h{{/}} {{#elseif(equals(issue.customfield_10053, 12.5))}}48h{{/}} {{#elseif(equals(issue.customfield_10053, 13))}}48h{{/}} {{#elseif(equals(issue.customfield_10053, 13.5))}}48h{{/}}
image.png

image.pngimage.png

1 answer

1 accepted

2 votes
Answer accepted
Trudy Claspill
Community Champion
July 2, 2025

Hello @Vrijesh Jeswant 

Welcome to the Atlassian community.

I don't believe that Jira Cloud automation conditional logic supports "#elseif" based on the documentation below and the post response from the community member @Bill Sheboy (who is VERY knowledgeable about Automation).

https://support.atlassian.com/cloud-automation/docs/jira-smart-values-conditional-logic/

https://community.atlassian.com/forums/Jira-questions/How-to-Reset-Tshirt-Size-for-an-Epic/qaq-p/2870767

Can you provide a link to the reference material you found suggesting that #elseif is supported syntax?

 

I am curious to know what problem you are trying to solve by setting the duration value of Original Estimate? If you use Story points, why are you also setting Original Estimate?

Story points are also usually a fuzzy, relative estimation technique rather then a specification of actual duration. What problem are you trying to solve by converting the points to a duration?

Bill Sheboy
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
July 2, 2025

Hi @Vrijesh Jeswant -- Welcome to the Atlassian Community!

Yes, and...to the suggestions from @Trudy Claspill 

There are two formats of the conditional expressions

{{#if(some smart value expression)}}return this when true{{/}}

and

{{if(some smart value expression, "return text when true", "return text when false")}}

While there is a way to return the equivalent of "else", that cannot be easily nested as you show: with the second format the return values are text and it is challenging to build a complex expression that will not have parsing errors.

 

Another approach in this scenario is using a Lookup Table to map the values.  However, I agree with Trudy: this seems potentially problematic converting the relative-sizing to a time-based value.  Perhaps using time-based only would help.

 

Kind regards,
Bill

Like # people like this
Vrijesh Jeswant
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
July 2, 2025

Thank you for the welcome Trudy.

Ah! I appreciate you pointing me in the right direction. I need conditional logic + and() instead of #elseIf

I've been using OpenAI for various Jira setup tasks (currently wearing the hat of a Jira  admin) which has been very helpful so far, but it failed me on this one. The If-ElseIf-Else logic was provided by OpenAI as the solution to my requirement. And since no errors were being thrown (I introduced errors on purpose and the logs reported errors), I assumed it was good. 

Yes, Story Points are very fuzzy, but we are adamant on using it. And since I am also wearing the additional hat of a Release Manager, when work items move sprints, the release capacities get overinflated with story points. So trying to get things more accurate with work durations (original, completed, remaining).

Like John Funk likes this
Vrijesh Jeswant
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
July 2, 2025

Hello @Bill Sheboy 
I appreciate your clarity. Initially, I did have them as separate If statements like:
{{#if(equals(issue.customfield_10053, 0.5))}}2h{{/}}
{{#if(equals(issue.customfield_10053, 1))}}4h{{/}}... and so on

However, this did not work either (same behavior - log says "success" but nothing happened) which is why I asked OpenAI for suggestions to improve it.

I will give the conditional + and() logic a try.

Like John Funk likes this
Vrijesh Jeswant
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
July 2, 2025

Thank you @Trudy Claspill and @Bill Sheboy
These updates work as expected.

{{#if(issue.Story Points.eq(0.5))}}2h{{/}}
{{#if(issue.Story Points.eq(1))}}4h{{/}}
{{#if(and(issue.Story Points.gt(1),issue.Story Points.lte(2)))}}8h{{/}}
{{#if(and(issue.Story Points.gt(2),issue.Story Points.lte(3)))}}12h{{/}}
{{#if(and(issue.Story Points.gt(3),issue.Story Points.lte(5)))}}16h{{/}}
{{#if(and(issue.Story Points.gt(5),issue.Story Points.lt(8)))}}24h{{/}}
{{#if(and(issue.Story Points.gte(8),issue.Story Points.lt(9)))}}32h{{/}}
{{#if(and(issue.Story Points.gte(9),issue.Story Points.lt(11)))}}40h{{/}}
{{#if(and(issue.Story Points.gte(11),issue.Story Points.lte(13.5)))}}48h{{/}}

Like John Funk likes this

Suggest an answer

Log in or Sign up to answer
DEPLOYMENT TYPE
CLOUD
PRODUCT PLAN
STANDARD
TAGS
AUG Leaders

Atlassian Community Events