This documentation is for an old version of Dataplane Reports.

View the latest documentation, or the list of documentation for all versions.

Rolling Up Epic Time Estimates

Overview

For project and development managers working with Jira Software and agile teams, it is very difficult in Jira to get a picture of the total amount of time remaining to complete outstanding epics when the work is spread across a multitude of user stories, sub-tasks and possibly even separate projects. There's no visibility into how those estimates roll up to the epic they are a part of.

Using Dataplane Reports and the ScriptRunner for Jira add-on, in no time you will be creating comprehensive reports tracking time across all your Jira Software epic initiatives.

Configuring Your Jira Instance

This solution assumes you are using Jira Software and its Epic, Story and Task issue types. However, the same general approach can be used for any set of issues and sub-task issues associated with an issue representing a master feature.

  1. Install the ScriptRunner for Jira add-on.
  2. Create a new ScriptRunner custom field ("Scripted Field") in Jira, called "Epic Master" (or something similar). Select Free Text Searcher for the "Search Template" option for this field, since the field will be returning text values. We are going to use this field to report on the epic that each issue is associated with, regardless of whether the issue is a user story or sub-task issue.

    See our Reporting on Calculated Values with ScriptRunner documentation for details on using ScriptRunner custom fields with Dataplane. 

    You may also wish to review the general ScriptRunner primer on how to work with Scripted Fields.

  3. After creating the new custom ScriptRunner field, go to Jira's Administration » Add-ons page.
  4. Click on Script Fields under the ScriptRunner section of the left sidebar.
  5. Click Edit.
  6. Enter the following script:

    import com.atlassian.jira.component.ComponentAccessor;
    import com.atlassian.jira.issue.CustomFieldManager;
    import com.atlassian.jira.issue.fields.CustomField;
    import com.atlassian.jira.issue.Issue;
    
    CustomFieldManager fieldManager = ComponentAccessor.getCustomFieldManager();
    CustomField epicLinkField = fieldManager.getCustomFieldObjectByName("Epic Link");
    CustomField epicNameField = fieldManager.getCustomFieldObjectByName("Epic Name");
    
    
    if (issue.isSubTask()){ 
    	issue = issue.getParentObject(); 
    }
    Issue epicIssue = (issue.getIssueTypeObject().getName().equals("Epic")) ? issue : issue.getCustomFieldValue(epicLinkField);
    return (epicIssue != null ? epicIssue.getCustomFieldValue(epicNameField) : null);
  7. Reindex Jira. This is necessary whenever adding a new custom field in Jira.
  8. Once Jira is reindexed, click on Dataplane Reports » Administration, and on the main Administration panel for Dataplane, click on Sync Index to have Dataplane register the newly added custom field.

We're now ready to create the Dataplane report.

Creating the Report

In the Dataplane report directory, under New Report, select the Advanced category of reports.

Select the Sum Numeric Field Report.

For report configuration options, set up your report as follows:

OptionSelectionComments
SearchanySelect your Jira projects, project categories and filters of interest. Or click on the JQL tab in that field to enter a command using Jira Query Language (JQL).
Segment ByEpic MasterSelect the name of the new ScriptRunner custom field just added.
Statuses to Includeall,
except "Resolved" and "Closed"
Select which Jira issue statuses you wish to include in the report.  Select all statuses in your Jira instance except "Resolved" and "Closed".
Value OfTime Estimate (Hours)

We want the estimate of time remaining for the issues in the epic.

Alternatively you could select "Original Estimate (Hours)" to report on the total time that was ever estimated to complete all the epic work, or "Time Spent (Hours)" to report on the hours of work completed so far.

If you select one of these other time fields, you'll want to change the Statuses to Include options so they're sensibly matched (e.g. including "Resolved" and "Closed" for "Original Estimate (Hours)").

Chart Type

or

Select the Bar Chart or Vertical Bar Chart.


Now click on the Run Report button to create your report.  

You'll see a nice roll-up of the time remaining to complete all the stories and sub-tasks for each epic.

Segmenting Results

The Segment By field in Dataplane reports allows you to break down report results by any number of different Jira fields or properties in order to see more granularity.

To check that we're properly including the time for all stories and sub-tasks within each epic, add "Issue Type" to Segment By in the report configuration.  So we'll be segmenting the results by both the new ScriptRunner custom field, "Epic Master", and further slicing the data by "Issue Type".

Click Run Report again, and the results will look something like this:

Comparing Time Allocation Across Epics

Among the various Chart Type options in a report configuration, the "Normalized Bar Chart" and "Normalized Vertical Bar Chart" are great tools for comparative analysis of where time is remaining or was spent across epics.

These chart types visualize the report results on a percentage basis instead of using absolute units of time allowing for easy epic-to-epic comparisons.

Here's our same report run using a "Normalized Vertical Bar Chart":


Page Contents