My organization is trying to understand how many bugs are being introduced by our roadmap items.
Our initial solution was to make the environment fields and parent fields mandatory, so that we can then report out on any bug where the environment is production and is tied to a parent. However, we are worried about what to do when a bug is for a ticket that is not part of an epic.
How can we reliably provide the organization with a report of bugs per roadmap item, without making this an administrative nightmare and ensuring data integrity?
Hi Justin,
If I understood correctly, you want to group the bugs by project and their parent Epic (representing the roadmap items), as well as by environment (Production, Staging, etc.).
I don’t see an easy way to achieve this using Jira’s built-in reporting capabilities. One option would be to export the bug data to Excel and create the report there, but this would involve a fair amount of manual work, and the data would not be updated in real time.
However, if you are open to using an app from the Atlassian Marketplace, this can be easily achieved with the Pivot Table & Pivot Chart gadget available in our Great Gadgets app. This gadget brings Excel-like pivot table and charting capabilities directly to Jira.
To get a statistic like this, all you have to do is to add the Pivot Table & Pivot Chart gadget to a Jira dashboard and configure it like this:
The gadget is highly configurable and customizable. You can get many other stats in form of heapmap tables or charts of various types.
Are these the stats are you looking for? I can provide more detailed instructions or we can arrange a short demo.
Danut.
Making the Parent field mandatory on Bug issue types sounds great in theory, but in practice, it almost always creates the exact administrative nightmare you are anticipating.
When a production defect surfaces from work that wasn't tied to an active Epic, developers or QA are forced into one of two bad choices: either create a bloated "Catch-all / Maintenance" Epic that skews roadmap reporting, or select a random Epic just to bypass the validation rule. Either way, data integrity suffers.
Here is a cleaner, two-fold methodology to track bug provenance without heavy admin overhead:
Roadmap items ultimately deliver software through releases. Instead of forcing every bug to sit underneath an Epic:
Track Origin via Affects Version/s: Focus on capturing the deployed release where the defect was introduced. Since release versions map back to shipped roadmap increments, you can tie bugs back to delivery cycles independently of Epic hierarchies.
Track Resolution via Fix Version/s: Use this for scheduling the remediation.
Use Issue Links for Direct Causality: If a bug is directly introduced by a standalone Story/Task outside an Epic, a native issue link (is caused by / causes) preserves traceability without polluting your parent hierarchy.
The biggest reporting challenge with bug triage across projects is that native Jira gadgets require you to build separate dashboards or maintain multiple static JQL filters for every combination of Project, Epic, Environment, and Version.
To make this sustainable without building dozens of reports, your dashboard needs to support dynamic on-the-fly scoping:
Build a single centralized bug reporting dashboard (e.g., Status distributions, Assignee workload, or Resolution trends).
Pair it with a multi-variable filter controller (slicer) so stakeholders can toggle between Environment (Production), specific Projects, Fix Versions, or Parent Epics with a single click—instantly recalculating the entire dashboard without editing JQL.
Full Disclosure: I am part of the team behind Millarum Dashboards on the Atlassian Marketplace. We designed our interactive Slicer gadget specifically to solve this problem allowing teams to slice bug metrics on the fly by Parent, Version, Sprint, Component, or custom fields from a single dashboard.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
The hole you've found is structural: Bug sits on the same hierarchy level as Story and Task, and a parent has to be one level up, so a Bug's Parent can only be an epic-level item. For a bug about a story that isn't under any epic there is no valid value, and a mandatory field just makes people pick a random one.
I'd keep Parent optional and treat "no roadmap item" as a real category rather than a data error:
issuetype = Bug AND environment = Production grouped by Parent (Pie Chart or Two Dimensional Filter Statistics gadget, Statistic Type = Parent). Bugs with no parent become their own bucket, and that number is worth seeing anyway (bugs from work outside the roadmap).parent IS EMPTY AND created >= -14d checked in bug triage, or an Automation rule on Work item created that comments on production bugs without a parent asking for the roadmap item.If you also want to record which story introduced the bug when there is no epic, add a link type like "causes / is caused by". Parent stays optional; the link keeps the causal trail.
If you want the bug count next to each roadmap item's progress in one table, that's where the native gadgets stop. Disclaimer: I work for Plugio, the vendor of Plugio Suite. Its breakdown widget groups by Parent with JQL-defined metrics per row, keeps the no-parent bugs as their own row, and drills into the bug list.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
This is a good suggestion. We will be utilizing parent (to tie a bug back to and epic and therefore a specific project) and make the environment a mandatory field so that when we report on bugs that we have this information.
My next question is about governance. Is there a good way for us to enforce this? I don't know how we stop the nonroadmap / maintenance epic a dumping ground. That is why we were wondering if there was a better solution than parent linkage and utilizing the environment field.
Thank you for your insight!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
For me, stopping the nonroadmap / maintenance epic from becoming "a dumping ground", is less about a product issue and more of a human behaviour issue. I'd solve it with a custom field (something like "root cause" with a single select list of options) and then adding a requirement that if a bug ticket does not have a value for parent epic then it cannot be moved to done without a value being provided for the custom root cause field. The options for this field could be a few general containers that work for bugs not usually related to a feature (eg "library upgrade", "unforeseen interaction between features", "infrastructure change"...), that way if your tester hasn't managed to identify a feature that the bug is related to (via the parent epic) then the developer needs to give some indication of what caused this once they have solved it. The dev could also simply assign a parent epic if they worked out that this is the feature that caused it when solving the issue too. The custom field should aim to catch all bugs that are introduced by things that are NOT necessarily roadmap items, but might need a bit more analysis after the fact (eg if you know feature X required an infrastructure change in release Y, then you could count all tickets from that release that selected this root cause as being caused by the feature).
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Justin - Welcome to the Atlassian Community!
I would avoid making Parent mandatory for every Bug, because that can create exactly the data-quality problem you are trying to prevent: users may start linking bugs to the wrong parent just to satisfy the field requirement.
A cleaner approach would be to separate “where did this bug happen?” from “which roadmap item introduced it?”
For example, I would keep:
Environment → Production / Staging / etc.
A dedicated field such as Roadmap Item / Introduced By
Optionally use Parent only when the Jira hierarchy genuinely represents that relationship.
Then use Automation to reduce the manual work. For example:
if a Bug is created under an Epic, automatically copy the relevant roadmap reference;
if the Bug is not part of an Epic, allow the user to select the roadmap item manually;
if no roadmap item is applicable, use a value such as Not linked / Unknown / BAU instead of forcing an incorrect parent.
That gives you a much more reliable reporting model because the relationship you want to measure is explicit rather than inferred from Jira hierarchy.
You could then build a saved filter/dashboard around something like:
issuetype = Bug AND Environment = Production AND "Roadmap Item" is not EMPTY
and break the results down by the Roadmap Item field using dashboard gadgets or a reporting tool.
So I would treat Parent as a hierarchy field, and create a separate field for the business/reporting relationship you actually need.
That usually scales much better and avoids making project admins maintain an increasingly complicated hierarchy just for reporting.
Hope this helps!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.