Breadcrumbs

Sum remaining estimate in epic, incl. sub-tasks

📚

This template displays the sum of the remaining estimate of the child work items of the current epic including their sub-tasks.

If the current work item is not an epic, “None” will be displayed.

Configuration

To use the Total remaining estimate in epic, including sub-tasks template, simply select it from the template grid. Filter by KPI to find it faster.

Parameters

This template does not require any additional parameter configuration.

Expert mode

If you switch to Expert mode you can see the formula field in the Expression Parser. You can now tweak the expression to create a custom formula field based on this template.

Expression

General expression:

%{%{issue.issueType} = "Epic" ? sum(append(fieldValue({issue.remainingEstimate},  union(issuesUnderEpic(), subtasks(issuesUnderEpic()))), [0])) / 60 : null}

If the resulting number from the expression contains too many decimal numbers, feel free to select one of the available display formats or to configure it manually.

Display as

Number

Formatting style

Default (unformatted)

Used parser functions

The links lead to the JWTC documentation because the parser functions are shared functionalities.

Details

1. What does the expression do?

This expression calculates the total remaining estimate in hours for all work items that are children of the current epic, including their sub-tasks. If the current work item is not an epic, it returns null.


2. Step-by-step breakdown

Let’s break it down:

  • %{issue.issueType} = "Epic" ? ... : null

    • This checks if the current work item is an epic.

    • If it is, the calculation is performed.

    • If not, the result is “null” (which means “None” will be displayed).

  • issuesUnderEpic()

    • This function gets all work items that are directly under the current epic.

  • subtasks(issuesUnderEpic())

    • For each child work item under the epic, this gets all their sub-tasks.

  • union(issuesUnderEpic(), subtasks(issuesUnderEpic()))

    • Combines the list of child work items and their sub-tasks into one list, removing any duplicates.

  • fieldValue({issue.remainingEstimate}, ...)

    • For each work item in the combined list, this retrieves the value of the “remaining estimate” field.

  • append(..., [0])

    • Adds a zero to the list of remaining estimates to prevent errors.

  • sum(...)

    • Adds up all the remaining estimates from the list.

  • / 60

    • Converts the total from minutes to hours.


3. Examples

  • If the current work item is an epic with three child work items, and each has a remaining estimate of 120, 60, and 30 minutes, and one of those work items has a sub-task with 90 minutes remaining:

    • The total is 120 + 60 + 30 + 90 = 300 minutes.

    • Divided by 60, the result is 5 hours.

  • If the current work item is not an epic (for example, a story or a task), the result will be displayed as “None”.


4. Real-life use cases

  • A project manager wants to see at a glance how much work in hours is left to do in an epic, including all its stories and their sub-tasks.

  • During sprint planning, a team lead can use this field to quickly assess the total remaining effort for an epic, helping with workload distribution.

  • When reporting to stakeholders, you can provide a single number representing the outstanding work in an epic, making progress tracking easier.