Epic rolled up data


We use Agile in our organisation. And one of the metrics that our PMs are interested in is to track the epic progress in units of time spent, time remaining and original estimate of all the stories underneath the epic.

filter results obtained by adding the metric Sigma(Time spent) and Sigma(Remaining time) is what I need but this only rolls up data for sub-tasks. Not for issue underneath the Epic.

In short, say I have two stories in my epic (story-1, 2 hrs remaining, and story-2, 4 hours remainaing) , i want to see 6 hours under the Sigma( remaining time) when I query my epic name)

Any idea how i can achieve this.


3 answers

2 votes
Steven Behnke Community Champion Jun 05, 2015

I've been looking into this for a while and I just found an add-on that does it as well, and looks customizable to boot.


Or a simpler free one.


Thanks a lot. It helped me.

Hi Rahul,

We have a similar requirement, but I wanted to clarify if you meant you need this information exposed within searches or just for viewing. Currently we use both approaches but they require independant solutions.

For just viewing the relevant data on an Epic when you view it, we ended up creating a custom add-in that displays extra information with the information you ask on the Epic screen. For actually searching, we created some custom Groovy (Script Runner) fields that roll-up the same information and expose it so that it's available in the JIRA Queries.

I can ping you back with more details, but let me know if either of the two scenarios we have match yours. (The Costs are just blanked out for the screenshot)



Hello Saleem

I have the exact same question as Rahul, and I guess what we want here is the ability to see the aggregation on the Epic screen but also on any search. So I guess you have this Subtasks Estimate column in each search result. Could you share with us your customizations? I am using JIRA ON DEMAND.

Thanks in advance;

Hi Paul,

Yes, sure, I can send you some more info early next week. I am not super familiar with JIRA On Demand, but I think it has the ability to run the Groovy Script Runner plugin. If you can confirm that, then it's just a matter of setting up the field definitions.

Chat next week!


Hello Saleem,

You reference sub tasks in the example provided. Does this aslo include issues in an epic?

Hi Roger, sorry about the delay in getting back to you. Yes, this can include sub-tasks within the Epic itself. We don't allow sub-tasks on Epics as part of our setup, so the screenshot above does not show any, but the code snippet still will work.

HI Saleem

Sorry in replying late to you, yes both these scenarios apply to us and I will be very much interested in the solutions that you have adopted. Can you please send me more information either on this post or directly s rahul.aich@nagra.com

Hi Saleem, We also need to be able to aggregate estimated time and spent time at epic level (in views and in searches, particularly in searches). Unless a new and easier solution has been made since March (pls. let me know if that is the case), we are ready to install the Groovy Script Runner, if you are willing to post your field definitions here. Thanks /Lasse

Hi Saleem, I need the epic level time spent just for viewing. Can you please elaborate on the custom add-in? I can add a custom field to epic level. But, not sure how to make issue level estimates/time-spent to Epic level. Thanks Ram

Hi guys, apologies on the really late answer. Please find the Groovy Field definition for the bits required to enable a custom field that will display the total estimate time for an epic's sub-issues/sub tasks. They have to be linked to the Epic via the Epic-Story link field.

Change the .originalEstimate appropriately to reflect either remaining time or actual time.

Hit me back if you have any further questions. The add-on method uses basically the same query but packaged up nicely in a panel etc with the breakdown.



import com.atlassian.jira.ComponentManager

def componentManager = ComponentManager.getInstance()
def issueLinkManager = componentManager.getIssueLinkManager()

def totalTimeForSubtasksEstimated = 0
outLink ->
def firstLevelChildIssue = outLink.destinationObject

   if (outLink.getIssueLinkType().getName().equals("Epic-Story Link"))
// Process normal Epics-Story/Bug-Subtask structure
outLinkSubtask ->
def secondLevelChildIssue = outLinkSubtask.destinationObject
    if (secondLevelChildIssue.isSubTask())
totalTimeForSubtasksEstimated += secondLevelChildIssue.originalEstimate ?: 0
return (totalTimeForSubtasksEstimated ? componentManager.getJiraDurationUtils().getFormattedDuration(totalTimeForSubtasksEstimated) : null)

Suggest an answer

Log in or Join to answer
Community showcase
Teodora [Botron]
Published Thursday in Marketplace Apps

Jira Inferno: The Nine Circles of Jira Administration Hell

If you spend enough time as a Jira admin - whether you are managing a single, mid-sized instance, a large enterprise one or juggling multiple instances at once - you will eventually find yourself in ...

555 views 2 15
Read article

Atlassian User Groups

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

Find a group

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

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you
Atlassian Team Tour

Join us on the Team Tour

We're bringing product updates and pro tips on teamwork to ten cities around the world.

Save your spot