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{{/}}
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/
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?
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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).
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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{{/}}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.