Breadcrumbs

Keys of non-estimated sub-tasks

📚

Return the keys of the sub-tasks that do not have original estimate or story points estimate.

Configuration

Create a Custom smart text field and use the Jira expression parsing mode.

Expression

issue.subtasks.filter(s => s?.originalEstimate == null && s?.customfield_nnnnn == null)
.map(i => i.key).join(", ") 

Please, note that it is necessary to replace nnnnn with the ID of the custom field displaying the original estimate or story points.

Details

1. What does the expression do?

This expression returns the keys of all sub-tasks under a work item that do not have either an original estimate or a story points estimate set. The result is a comma-separated list of these sub-task keys.

2. Step-by-step breakdown

Let’s break it down:

  • issue.subtasks: This gets all sub-tasks of the current work item.

  • .filter(s => ...): This filters the list of sub-tasks, keeping only those that meet the following condition:

    • s?.originalEstimate == null: The sub-task does not have an original estimate set.

    • s?.customfield_nnnnn == null: The sub-task does not have a value set for the custom field representing story points (replace nnnnn with your actual custom field ID).

    • Both conditions must be true for a sub-task to be included.

  • .map(i => i.key): For each filtered sub-task, this extracts its key (the unique identifier).

  • .join(", "): This combines all the keys into a single string, separated by commas.

3. Examples

Suppose you have a work item with three sub-tasks:

  • Sub-task KEY-2: No original estimate, no story points

  • Sub-task KEY-3: Has original estimate, no story points

  • Sub-task KEY-4: No original estimate, has story points

With the expression above:

  • Only the sub-task KEY-2 would be included in the result, because it lacks both estimates.

  • The output would be: KEY-2 (assuming "KEY-2" is the key).

If both the sub-task KEY-2 and KEY-4 had neither estimate, the output would be: KEY-2, KEY-4.

4. Real-life use cases

  • Project management: Quickly identify which sub-tasks are missing time or effort estimates, so you can follow up with assignees or update planning.

  • Sprint planning: Ensure all sub-tasks are properly estimated before starting a sprint.

  • Reporting: Generate lists of sub-tasks that need attention for estimation, helping teams maintain accurate workload tracking.