How to limit story points to a dropdown value

Pablo Gutierrez August 18, 2013

I would like to set the story points field to only accept 1,2,3,5,8,13 via a dropdown.

Is that possible?

6 answers

1 accepted

0 votes
Answer accepted
RicardoA
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.
August 18, 2013

Hi Pablo

As it turns out, GreenHopper treat the story points field as a number field. Currently this feature doesn't exist at GreenHopper configuration. You could rase a support ticket, so they can open a feature request and the more votes it get, better the chance to it be implemented in future releases.

Best Regards,

Ricardo Carracedo.

2 votes
dphanson63_yahoo_com July 30, 2019

Our team used Scriptrunner to create a simple custom listener for the Points field.  If the entered value is not a Fibonacci number, the value is automatically updated to the next Fibonacci number in the sequence.  Pretty simple solution.

Once Scriptrunner is installed, the listener can be added under Administration > Add-ons > Scriptrunner > Listeners.

Here's the basic logic:

// Fibonacci Points Listener

import com.atlassian.jira.bc.issue.IssueService
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.event.issue.IssueEvent
import com.atlassian.jira.issue.IssueInputParameters
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.fields.CustomField

def fibList = [0,1] // seed the Fibonacci sequence

def fibCheck = {}

fibCheck = {
  float val -> 
  if (val <= fibList[-1]) { // if points less than or equal to last number in sequence
    return fibList[-1] // round up to next Fibonacci number
  } else {
    fibList += (fibList[-1] + fibList[-2]) // append next Fibonacci number to sequence
    return fibCheck(val) // repeat check
}
}

def pointId = "customfield_10006" // Jira "custom" field ID for points

// object required to update issues
IssueService issueService = ComponentAccessor.getComponent(IssueService)
IssueInputParameters issueInputParameters = issueService.newIssueInputParameters()

def event = event as IssueEvent
Issue issue = event.getIssue()
def user = ComponentAccessor.getJiraAuthenticationContext().loggedInUser

// get custom fields for issue
List<CustomField> allCustomFields = ComponentAccessor.getCustomFieldManager().getCustomFieldObjects(issue);
def allCustomIds = allCustomFields.collect {it.id}

if (!(pointId in allCustomIds)) { return } // no Points field

// object required to manage custom fields
def customFieldManager = ComponentAccessor.getCustomFieldManager()
CustomField points = customFieldManager.getCustomFieldObject(pointId)
def rawPointVal = issue.getCustomFieldValue(points)

if (rawPointVal == null) { return } // no Points value

float pointVal = rawPointVal as float // set raw points as float

if (pointVal == 0) { return } // accept 0 points

def fibPointVal = fibCheck(pointVal) // round to next Fibonacci number

if (fibPointVal != pointVal) {  // reset points if updated
  issueInputParameters.addCustomFieldValue(points.id, fibPointVal as String)
  def update = issueService.validateUpdate(User, issue.id, issueInputParameters)
}

return

The logic could be easily modified to support geometric series (i.e., 1, 2, 4, 8, 16, etc.).  

Thanks to Sam Orloff for the sample code.

Attila Salánki November 3, 2020

Hi Everybody,

I tried this code, but for some reasons it did not works.

We had to change issue update part of the code. I attached a screenshot to the modify.

I commented out lines 56., 57. and wrote the lines 58.,59. Of course you have to insert the right imports for the new lines. If somebody figure out what was the problem these lines, let me know.

Capture.PNG

1 vote
Sandy Vallee April 9, 2018

Any updates on this?

Nic Brough -Adaptavist-
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
April 9, 2018

No, as it's behaving as designed and intended.

The closest you will get to a workaround is a little bit of code.

  • Remove Story Points from the Edit screen
  • Add a new select list custom field with your numbers listed, place on the create and edit screen
  • Add an add-on that can enable you to write a listener that
    • Runs when issues are created, edited or transitioned
    • Reads your select list and copies the number into Story points
Like # people like this
Sebastian Wernhöfer June 11, 2018

@Nic Brough -Adaptavist- do you have an example (groovy script) for me, to do this with script runner as an event listener? I have searched a lot, but the only examples I can find is "copy from task to sub-task" and I don't get it to work like you described above.

kjhale July 20, 2018

Are there any free add-ons that allow me to do this? The only ones that I am seeing are ScriptRunner and PowerScripts, both of which are monthly subscription based.

kjhale July 20, 2018

@Sandy ValleeI found a free workaround that is very easy to setup.

We are new to Story Points and for a few of our team members, it is difficult to remember the values off the top of their heads. So we needed a dropdown for the Story Points which allows him to quickly assign a number. So here is what I did in order to make it work for us, for free.

1) Create a new Custom Field that you will use for Story Points. I used a Select List (single choice) dropdown and added my options. I only included numbers (0, 0.5, 1, 2, 3, 5, 8, 13, 20, 40, 100) for choices and did not include any other characters. Using anything except doubles and integers will most likely not work. Take note of what you name this field as you will need it for later

2) From this same screen, you can now select the settings for your new field and select the screens that it will show up on.

3) Return to the Main screen and on the left side, navigate to Jira Settings > Add-ons > Find new add-ons. Search for Automation Lite for Jira Cloud and install it. After installing it should take you to a new page where you can press a button, Get Started.

    a) You can either automate a new project or an existing one. I started with a new project to get a better understanding of the add-on

    b) Go ahead and create a new rule. For this rule, select Field value changed. Now select your new Custom Field under the prompt, Fields to monitor for changes. You can choose a second option on the next dropdown if you would like but I left mine blank so that it will always update, no matter the edit. Press Save when you are done.

    c) Now select New action, then select Edit issue. Now on this screen, you want to set the original Story Points field. This is the field that we will be replacing with the values of our new Custom field. The new text box that appears is where we will overwrite the value of the original Story Points field. And to do that, we need to get the current value of the new dropdown. This is very simple: {{issue.Custom Field Name}}. All you need to do is replace Custom Field Name with the exact name of your new field. I.e. My new field name is Story Points - Dropdown. So in order to get the value of the dropdown and overwrite the original Story Points field, I used {{issue.Story Points - Dropdown}}. Works like a charm

    d) Now you can repeat the process but instead of selecting New action, you can select Issue created.

Hopefully this works for you as well as it does for me! I am glad that I was able to find such an easy solution that is free

Like Deleted user likes this
Damien April 27, 2019

unfortunately, for Jira server version, Automation for Jira - Server Lite is no more free whilst using 'Field value changed' rule...

1 vote
Peter Boling February 5, 2016

I am also hoping to see this behavior.

1 vote
C September 18, 2013

I would like to see this behavior as well.

0 votes
Heiko Gerlach April 10, 2019

Hi All,

I completely understand this requirement, since any Burndown Chart and Velocity calculation is useless as long as anyone can enter any value. This is why we created the brand new App "StoryPoints" for Jira Server.

It is dedicated to Fibonacci Estimation but supports any Selection Options via easy administration.

 

For details see here. 

https://marketplace.atlassian.com/apps/1220390/storypoints-for-jira?hosting=server&tab=overview

Cheers

Heiko

Suggest an answer

Log in or Sign up to answer