Skip to content
claused
docs navigation — Hierarchy Progress

Hierarchy Progress

updated 2026-09-21

Hierarchy Progress is the second dashboard gadget in the app. Hierarchy Totals answers “how much”; this one answers “how far along”.

Every epic, every level above it and every project shows done out of total, percent done by issue count, percent done by weight — story points or any numeric field — and what is left.

It reads the same stored copy as Hierarchy Totals, so it needs no sync of its own and covers up to 50 projects in one tile.

The Hierarchy Progress gadget, header progress · by Story point estimate with a what's counted link and Trend, Expand all and Collapse all. Columns ISSUE, DONE, % DONE, % BY POINTS and LEFT, then a bar and a badge column. Three bold project rows with their epics beneath: MOBL 6 / 14, 43%, 35%, 40 left, 1 unest.; FIN 7 / 11, 64%, 61%, 18 left, 2 unest.; PLAT 8 / 15, 53%, 67%, 17 left, 3 unest. Under FIN, FIN-220 reads 1 / 4, 25%, 33%, 16 left, FIN-230 reads 3 / 4, 75%, 83%, 2 left, and FIN-210 reads 3 / 3, 100%, 100%, 0 left with a full bar. The single issues MOBL-101 and PLAT-1241 show the words open and done instead of numbers. Footer: data as of 2026-09-02 06:40 UTC · 50 issues · how it's counted · support · debug.
Three projects, the one furthest behind by points first: MOBL at 35%, then FIN at 61%, then PLAT at 67%. Inside each project the epics follow the same order.

Add and configure it

On a dashboard choose Add gadget and search for Hierarchy Progress. It is part of the same app: a site that has Hierarchy Totals already has it.

The Hierarchy Progress settings screen: the heading HIERARCHY PROGRESS over the line Percent complete of epics and projects, by count and by weight, with a daily trend, followed by a details link; Projects — 3 selected over a list of eight projects with PLAT — Platform, MOBL — Mobile and FIN — Finance Systems checked; Weight field with a details link, set to Story point estimate; an unchecked box Count issues only — hide the weight columns with a details link; an unchecked box Expand all levels by default; an empty Filter (JQL, optional) box with a details link; and the Save and Cancel buttons.
One line per setting. The details link beside a setting opens its explanation.
  • Projects — up to 50, the same picker as Hierarchy Totals.
  • Weight field — the number the percentage is weighed by: Story point estimate, Story Points, any number field of your own, or one of the three time-tracking fields. Team-managed projects keep estimates in Story point estimate, company-managed ones in Story Points.
  • Count issues only — hide the weight columns — see Count issues only.
  • Expand all levels by default — start with the whole tree open.
  • Filter (JQL, optional) — see Filtering with JQL.

There is no Aggregate and no Open work only here: the gadget always reads every status, because a share of done work needs the done work.

Save needs at least one project and a weight field, and a filter within 500 characters.

Reading the tile

The header says what the share is by: progress · by Story point estimate, or progress · by issue count, with · filtered when a JQL filter is set. What’s counted opens the exact query, as in Hierarchy Totals. Its second sentence names why DONE can be lower than the number of issues that query finds in Jira: DONE counts work items only — epics and stories with sub-tasks are not counted, their work is.

  • DONE — work items done out of all work items under the row: 4 / 7. On an epic the figure is a link that opens the issues under the row in Jira’s issue search; on a project row it opens the project’s issues. The list is the hierarchy the number was counted over — the epic itself and any stories with sub-tasks are in it — so Jira shows more issues than the work-item count. See The DONE link.
  • % DONE — the same two numbers as a share, by issue count.
  • % BY POINTS — the share done by weight. The header reads % by points for a story-point field, % by and the field’s name when the name is one short word, and % by weight otherwise.
  • LEFT — the weight of the work still open, in the field’s own unit.
  • The bar draws the share by weight, or by count when the gadget counts issues only.
  • unest. badgeN unest. on a row whose subtree holds issues with no value in the weight field.

An issue with nothing below it shows the word done or open in the DONE column, with no share, bar or remainder; an unestimated one keeps its 1 unest. badge. It is the work, not a container of work, so it has no share of its own.

Laggards come first. Among the rows of one level, the lowest share is listed first — by weight, or by count when the gadget counts issues only. Rows without a share follow, and No parent in view and No value set stay last in their project.

A project with nothing under it still gets its row. It reads 0 / 0 with the reason beside its name: no issues, nothing matches under a filter, not loaded yet during a live preview, above the size cap or not fully read when a read stopped short.

The tile drops columns as it narrows. At 720 px and wider it shows all of them. From 521 to 719 px it keeps DONE, the main share and the bar. At 520 px and below it keeps the main share and the bar, so keys and summaries stay readable.

Below 720 px the N unest. badge has no column of its own. A * in the warning colour follows the share instead, on every row where work is unestimated. Hover it for the count. On a row with children, click it for the unestimated-only view, as the badge does on a wide tile. How it’s counted explains the mark while one is on screen. The same mark stands in for the partial chip on a row whose branch arrived incomplete. A gadget that counts issues only marks no unestimated work: it has no weight to qualify.

Hierarchy Progress on a 400 px tile, header progress · by Story point estimate with the what's counted link, then Trend, Expand all and Collapse all on a second line. Only two columns remain beside ISSUE: % BY POINTS and a bar. FIN reads 61% with an amber asterisk after it, over FIN-220 at 33% with an asterisk, FIN-230 at 83% with an asterisk and FIN-210 at 100% without one; PLAT reads 67% with an asterisk, over PLAT-1190 at 50%, PLAT-1210 at 62% and PLAT-1180 at 81%, each with an asterisk, and the single issue PLAT-1241 with no share. Summaries are cut short with an ellipsis. Footer: data as of 2026-09-02 06:40 UTC · 33 issues · how it's counted · support · debug.
A one-column dashboard width. The asterisk after a share says unestimated work under that row weighs nothing in it; FIN-210, fully estimated, has none.

How it’s counted

How it’s counted in the footer opens the rule in the tile’s own words, with your field’s name in it.

The same three-project Hierarchy Progress tile with the how it's counted panel open under the footer. The panel reads: Done = work items in a Done status category / all work items under the row — sub-tasks, and stories without sub-tasks; epics and stories with sub-tasks are not counted, their work is. % done = the same, as a share. % by points = 1 − Story point estimate of the open work ÷ Story point estimate of all work, a story's own estimate standing in when its sub-tasks are unestimated. Left = Story point estimate of the open work.
The panel names every division. PLAT-1180 above it reads 4 / 7: seven work items under the epic, four of them done — the epic itself is not one of the seven.

Work items. The gadget counts the issues that have nothing below them: sub-tasks, stories without sub-tasks, standalone tasks. An epic, or a story with sub-tasks, is never counted itself — its work is. An open epic whose two stories are done reads 2 / 2, not 2 / 3.

The DONE column of Hierarchy Totals counts by the same rule, so both tiles on one dashboard print the same percentage for the same row.

Done means Jira’s status category Done, the same test as statusCategory = Done. Cancelled, Rejected and Won’t Do count as done. Resolution is not read. An issue whose status is unknown counts as open.

% done is done work items divided by all work items under the row.

% by points is 1 − the weight of the open work ÷ the weight of all work under the row. Each work item weighs its own value in the field.

A story’s own estimate stands in for its sub-tasks when none of them is estimated — points on the story, sub-tasks unsized. The story’s own status then decides whether that weight is done. The count is not affected: its sub-tasks are still the work items.

Left is the weight of the open work under the row.

Percentages are rounded, but 0% and 100% appear only when they are exact. A row with one open work item among hundreds reads 99%.

Unestimated work and the dash

A work item with no value in the weight field weighs nothing. It still counts in DONE and % DONE.

The N unest. badge counts those work items under the row. On a row with children it is a button that narrows the tree to the unestimated branches, as in Drill-down.

When some of the open work under a row is estimated and some is not, the share by weight is taken over the estimated part, and the badge says how much was left out.

When none of the open work under a row has a value — or nothing under the row has one at all — the row shows in % BY POINTS and in LEFT. Open work of unknown size is not 100% done, so the gadget prints no number there. Hovering the dash in % BY POINTS says which of the two cases it is, and % DONE beside it still stands.

A row with a dash is not ranked as the worst laggard. It follows the rows that have a share.

Count issues only

For teams that do not estimate, tick Count issues only — hide the weight columns.

Hierarchy Progress with the header progress · by issue count: only the DONE and % DONE columns and a bar. DES 4 / 12 at 33% comes first, over DES-31 1 / 4 at 25%, DES-40 2 / 4 at 50% and an italic No parent in view row at 1 / 4 and 25%; then MOBL 6 / 14 at 43% and PLAT 8 / 15 at 53% with their epics. MOBL-101 shows open and PLAT-1241 shows done. No weight column, no LEFT column and no unest. badges. Footer: data as of 2026-09-02 06:40 UTC · 50 issues · how it's counted · support · debug.
Count issues only: DONE, % DONE and a bar of the share by count. No parent in view stays last under DES even though its 25% ties the lowest epic.

The tile keeps DONE, % DONE and the bar, now drawn by count. % BY POINTS, LEFT and the unest. badges are gone, and how it’s counted names only the count rule.

A weight field is still required. The stored copy and the trend are kept per field, so pick any — its values are not shown. Nothing is grouped by it either: standalone issues stay where the hierarchy puts them, never under No value set. No parent in view still gathers issues whose parent is outside the gadget.

The trend of such a gadget draws the share by issue count.

The trend

Click Trend and a chart opens above the table: one line per project, showing that project’s percent complete day by day — by weight, or by count when the gadget counts issues only.

The Trend panel open above the Hierarchy Progress table: three lines for PLAT, MOBL and FIN climbing from near 0% in early July, a value axis on the right ticked 0%, 25%, 50%, 75% and 100%, weekly date ticks from Jul 6 to Aug 31, and the pointer over 11 August with a card reading 2026-08-11, PLAT 48%, MOBL 29%, FIN 35%. The legend reads PLAT 67%, MOBL 35%, FIN 61% over the date range 2026-07-04 → 2026-09-01, and the table below shows the same 67%, 35% and 61% in the % BY POINTS column of the three project rows.
The axis is fixed at 0–100%. The legend carries each project's latest percentage — 67%, 35% and 61%, the same numbers as % BY POINTS on the project rows below.

The line and the tile are counted by the same rule.

When it starts. One point is stored per day, when the daily full re-read finishes. The first point lands with the first full pass or full re-read after the gadget is set up, and a line needs two points, so the chart appears from the second day. Nothing earlier exists: history is observed, never rebuilt from Jira’s issue history.

On a site that already ran Hierarchy Totals on the same projects and field, the days stored before this version carry totals but no share. The panel says so, and the line starts on the first day captured after the upgrade.

A gap is a day with no answer: a project with no work that day, or open work that could not be weighed. The line skips it rather than draw a guess.

One line per project — or a single line for a filtered gadget. There is no line per epic or per initiative.

The trend records the share done on each day. It does not forecast an end date.

Who may see a line, how long points are kept and the series budget are the same as for Hierarchy Totals — see Trends & history.

Filtering with JQL

The Filter (JQL, optional) field works as in Filtering with JQL: it narrows the gadget to the issues the query matches, on top of the selected projects, with the viewer’s permissions.

DONE, both shares and LEFT are then taken over the matched issues only. Ancestors that did not match stay as structure rows and count as nothing. The header shows · filtered, and the DONE links open the matched issues.

What counts as a work item under a filter. A filter such as fixVersion = "2.0" matches a story and none of its sub-tasks — sub-tasks do not inherit a fix version, a label or a component. The matched story is then the work item itself: it counts as one by its own status and weighs its own estimate. Its row shows done or open, like any issue with nothing below it.

Hierarchy Progress under a filter, header progress · by Story point estimate · filtered, every level open. MOBL reads 1 / 3, 33%, 33% and 16 left, over MOBL-70 Offline mode for order capture with the same numbers and its three matched issues: MOBL-71 done, MOBL-72 open, MOBL-75 open. PLAT reads 3 / 6, 50%, 48%, 16 left and a 1 unest. badge, over PLAT-1180 Payments: unified ledger migration with the same numbers and its six matched issues: PLAT-1201 done, PLAT-1202 open, PLAT-1203 done, PLAT-1205 open with a 1 unest. badge, PLAT-1206 done and PLAT-1207 open. Footer: data as of 2026-09-02 06:40 UTC · 9 issues · how it's counted · support · debug.
The payments filter from Filtering with JQL. PLAT-1202 has two sub-tasks the filter left out, so it is listed as open and counts once: PLAT-1180 reads 3 / 6 here against 4 / 7 unfiltered. Its 50% is the DONE percentage Hierarchy Totals prints for the same row under the same filter.

If such a story is open and has no value of its own — its points sit on sub-tasks the filter left out — the share by weight of a row above it is left unanswered when no other open work under that row has a value: , not 100%. Where other open work is estimated, the story weighs nothing, as any unestimated work item does. How it’s counted adds this rule on a filtered gadget.

A filtered gadget draws a single trend line, starting the day the filter is configured. It is withheld from some viewers; the rule is under Filtered gadgets.

The search behind a DONE figure is built from parents, not from a list of every issue under the row. For the epic PLAT-1180 on an unfiltered gadget it reads project = "PLAT" AND (key = "PLAT-1180" OR parent in ("PLAT-1180", "PLAT-1202")): the row, plus everything whose parent is the row or an issue under it that has children. It is limited to the projects of the counted rows, and a filtered gadget adds its filter.

An issue under the row that was deleted in Jira since the last sync is just absent from the list, whether it was a sub-task or a parent. The link opens a Jira error instead of the list only if the row’s own issue was deleted since the last sync. The daily full re-read removes deleted issues from the stored copy, and that row goes with them.

Limits

  • Done is the status category Done. Resolution is not read.
  • One trend line per project, or one for a filtered gadget. No history per epic or per initiative.
  • The trend starts when the gadget is set up. Earlier days are not reconstructed.
  • No forecast and no ideal line: the chart shows the share done on each captured day.
  • Up to 50 projects per gadget, a 500-character filter and 50,000 issues per render, as for Hierarchy Totals — see Limits.
  • The DONE link on an epic lists the row’s whole subtree while the row and the issues under it that have children of their own number up to 200; past that, or when some of its rows were held back, it opens the row’s direct children, and its tooltip says so.