Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Next challenges

Recent achievements

  • Global
  • Personal

Recognition

  • Give kudos
  • Received
  • Given

Leaderboard

  • Global

Trophy case

Kudos (beta program)

Kudos logo

You've been invited into the Kudos (beta program) private group. Chat with others in the program, or give feedback to Atlassian.

View group

It's not the same without you

Join the community to find out what other Atlassian users are discussing, debating and creating.

Atlassian Community Hero Image Collage
Highlighted

How to create a numeric field with a value that increments value for every new issue created

Sid Community Leader Oct 02, 2018

How to create a numeric field with a value that increments value for every new issue created in a project.

4 comments

You will have to create a calculated, read-only, custom field. You can either write your own add-on or use plugins like script runner to create a scripted field.

Sid Community Leader Oct 09, 2018

got the solution with the script runner plugin.

 

Create a text custom field (single line). In the example I added "Numbers" as field name. Then create a postfuntion with the script below. 

 

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.jql.parser.JqlQueryParser
import com.atlassian.jira.web.bean.PagerFilter
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.search.SearchProvider

// get all the used numbers so far
def query = ComponentAccessor.getComponent(JqlQueryParser).parseQuery("project = JA AND 'Numbers' is not EMPTY ORDER BY 'Numbers' DESC")
def results = ComponentAccessor.getComponent(SearchProvider).search(query,ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser(),new PagerFilter(1))
int maxNumbers = 0
CustomField cField = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Numbers")

// get the highest used number
for(Issue documentIssue: results.getIssues())

{ maxNumbers = documentIssue.getCustomFieldValue(cField) as Integer }
// set the new number
def newNumbers = ++maxNumbers as String
issue.setCustomFieldValue(cField, newNumbers)

 

Hope this helps to anyone looking similar type of fields 

Like Bill Tanner likes this

Works like a charm!  Thanks so much!

Hi @Sid 

 

I'm getting error in the last line " issue.setCustomFieldValue(cField, newNumbers) "

saying that - " The variable [issue] is undeclared "

 

Please help.

Sid Community Leader Dec 15, 2019

@Sekhar Chandra 

Did you follow the same steps?

Sid Community Leader Dec 15, 2019 • edited

updated script for jira 8

 

def results = ComponentAccessor.getComponent(SearchProvider).search(query,ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser(),new PagerFilter(1))
to
import com.atlassian.jira.bc.issue.search.SearchService

def search = ComponentAccessor.getComponent(SearchService).search(ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser(), query, new PagerFilter(1))

and 

from
for(Issue documentIssue: results.getIssues())
{ maxNumbers = documentIssue.getCustomFieldValue(cField) as Integer }
to
for(Issue documentIssue: search.results)
{ maxNumbers = documentIssue.getCustomFieldValue(cField) as Integer }

 

Hi im trying to use and i got an error:

the variable issue is undeclared

 

can someone please help

 

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.jql.parser.JqlQueryParser
import com.atlassian.jira.web.bean.PagerFilter
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.search.SearchProvider

 

// get all the used Old_Test_ID so far
def query = ComponentAccessor.getComponent(JqlQueryParser).parseQuery("project = CEQB AND 'Old_Test_ID' is not EMPTY ORDER BY 'Old_Test_ID' DESC")
def results = ComponentAccessor.getComponent(SearchProvider).search(query,ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser(),new PagerFilter(1))
int maxOld_Test_ID = 0
CustomField cField = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Old_Test_ID")

// get the highest used number
for(Issue documentIssue: results.getIssues())

{ maxOld_Test_ID = documentIssue.getCustomFieldValue(cField) as Integer }
// set the new number
def newOld_Test_ID = ++maxOld_Test_ID as String
issue.setCustomFieldValue(cField, newOld_Test_ID)

Hi Dan, 

I also got stuck at this point. The failure seems to be with the last line.

 

issue.setCustomFieldValue(cField, newOld_Test_ID)

 

Did you find a solution?

Comment

Log in or Sign up to comment
TAGS

Community Events

Connect with like-minded Atlassian users at free events near you!

Find an event

Connect with like-minded Atlassian users at free events near you!

Unfortunately there are no Community Events near you at the moment.

Host an event

You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events

Events near you