How to create a custom field which displays the number of issues in an epic?

Alexander B. September 16, 2022

Hi all,

my request is about the ticket type Epic.

When stories are linked to an epic, they are listed as "Issues in epic".

I would like to display the total number of "Issues in epic" as a number in the epic.

Example: If my list "issues in epic" contains 15 items, I want to show this value as a number in a custom field "Total number of tickets".

I have created a scripted field for this with scriptrunner and would be happy if you could support me with the matching script.

To get all related issues I'm using this script below. When i use a textfield-template, it correctly gives me the linked keys. Now I need a function that sums the number of keys so I can display them with a number-field-template

Thanks,
Alexander

 

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.fugue.Option
import com.atlassian.jira.issue.Issue

//Method to get the greenhopper bean instance
def getBean(String beanId)
{
 def ghPlugin = ComponentAccessor.getPluginAccessor().getEnabledPlugin("com.pyxis.greenhopper.jira")
 def descriptor = ghPlugin.getModuleDescriptor("greenhopper-launcher")
 def applicationContext = descriptor.getModule().greenHopperCacheManager.applicationContext
 def beanInstance = applicationContext.getBean(beanId)
 return beanInstance;
}

//method to return list of issue keys in an Epic
def getEpicIssueKeys(Issue issue) {
 def epic = (Option)Option.option(issue)
 def epicLinkManagerImpl = getBean("epicLinkManagerImpl");
 issuesInEpic = epicLinkManagerImpl.getIssuesInEpic(issue)
 return issuesInEpic
}

if(issue.issueType.name=="Epic") {
 return getEpicIssueKeys(issue)
}

return null

 

1 answer

1 accepted

1 vote
Answer accepted
Alex Koxaras _Relational_
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
September 16, 2022

Hi @Alexander B_ and welcome to the community,

If your result is a list or array, why you don't use the .size to get the number of issues in that list?

Alexander B. September 16, 2022

Hi @Alex Koxaras _Relational_ 

thank you! That helped. Find my modified script below.

Cheers!

 

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.fugue.Option
import com.atlassian.jira.issue.Issue

//Method to get the greenhopper bean instance
def getBean(String beanId)
{
 def ghPlugin = ComponentAccessor.getPluginAccessor().getEnabledPlugin("com.pyxis.greenhopper.jira")
 def descriptor = ghPlugin.getModuleDescriptor("greenhopper-launcher")
 def applicationContext = descriptor.getModule().greenHopperCacheManager.applicationContext
 def beanInstance = applicationContext.getBean(beanId)
 return beanInstance;
}

//method to count the number of issue keys in an Epic
def getEpicIssueKeys(Issue issue) {
 def epic = (Option)Option.option(issue)
 def epicLinkManagerImpl = getBean("epicLinkManagerImpl");
 numberOfIssuesInEpic = epicLinkManagerImpl.getIssuesInEpic(issue).size()
 return numberOfIssuesInEpic
}

if(issue.issueType.name=="Epic") {
 return getEpicIssueKeys(issue)
}

return null
Like # people like this
Alex Koxaras _Relational_
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
September 16, 2022

Nice! Good to know that!

Like Alexander B. likes this
Erik Ekengren October 20, 2023

I was looking for this solution as well. Thank you for posting this!

Like Alexander B. likes this

Suggest an answer

Log in or Sign up to answer