Custom Reports

With Structure, you can easily create a visual overview of your projects – and visualize all the data you need to track on a single screen.

Step 1: Build Your Structure

To create a new structure:

  • Go to the Jira menu and select Structure | Create Structure
  • Add the issues you want to track – you can add them manually or automatically using Automation | Insert
  • Add related issues - you can do this using Automation | Group and Automation | Extend

Step 2: Add Data

Next, add the data you need to track by clicking the button at the top-right corner of the structure. You can add as many columns as you need, including:
  • Jira fields, such as status, assignee, sprint, or remaining estimate
  • Progress - track status based on issue progress, percent completion, or resolution
  • Tempo Work Logged - track how long your team is spending on each issue
  • Formulas - create your own formulas to compare fields or create a visual report
  • Time in Status - see how much time issues spend in a particular status

  • Last Comment - view the latest comment for each issue

Once you've added your columns, you can aggregate the data up the structure. To do so, open the column you want to aggregate and select Sum over sub-items.

Looking to visualize your structure data as a chart or other report? Our integration with Custom Charts for Jira makes it easy to build customizable charts from your structure data. Learn more


 Manage Epics and Tasks

With Structure, you can easily organize issues into an advanced Agile hierarchy (Epics > Issues > Sub-tasks) AND identify any issues that aren't attached to epics.

Step 1: Create a New Structure

  1. Go to the Jira menu and select Structure | Create Structure
  2. On the Template page, select Empty Structure

Step 2: Add Two Folders

Open the +Add menu and select Folder. Add two folders, named:

  • "Agile Hierarchy"
  • "Issues without Epics"

Step 3: Insert Epics

Select the Agile Hierarchy folder, so that its row is highlighted, and add a JQL Query Insert Generator:

  1. Go to Automation | Insert | JQL Query
  2. Enter the following JQL query: issuetype = Epic
    • To limit the epics to specific projects or other variables, add additional specifications (Example: AND project = "My Epics")
  3. Click Create

All your epics should now be placed beneath the Agile Hierarchy folder.


If the epics did not appear beneath the Agile Hierarchy folder, your generator was probably placed at the top of the structure, instead of beneath the folder. Select the "Insert issues: issuetype = Epic" row and drag it to beneath the Agile Hierarchy folder (see the picture above).

Step 4: Insert Issues and Sub-tasks

Make sure the Agile Hierarchy folder is still selected, return to the Automation menu, and add the following two generators:

  • Extend | Stories under Epics...
  • Extend | Sub-tasks...


Step 5: Insert Issues without Epics

Next, we need to make sure we don't lose track of any issues that aren't linked to epics yet. That's what our second folder is for:

  1. Select the "Issues without Epics" folder
  2. Go to Automation | Insert | JQL Query
  3. Enter the following JQL query: issuetype != Epic AND issuetype in standardIssueTypes() AND "Epic Link" is empty
    • If you narrowed your query to specific projects, etc. for your epics, do the same here
  4. Click Create

Any issues that are not assigned to epics should now appear beneath the second folder.

If no issues appear under the Issues without Epics folder, make sure the Insert Generator is located in the right location - if not, drag the generator to beneath the Issues without Epics folder (see the picture above).

Step 6: Assign Issues to Epics / Reassign Issues

Now that you have all your issues organized and in one place, you can assign issues from the second folder to epics, or even reassign issues that already have epics.

Assigning Issues to Epics

To assign issues in the second folder to an epic:

  • Drag the issues to the epic you want to assigned them to.
  • While dragging, hold down the ctrl key - this copies the issue to the new location in the structure. Once the issue is copied to the new location, it should disappear from beneath the second folder (because now it's assigned to an epic). 

Don't worry: copying an item in Structure does not make a copy in Jira.

Reassigning Issues to New Epics

To reassign issues from one epic to another, simply drag them from beneath their current epic to the new epic.

 Release Management

With Structure, you can track all the issues for upcoming releases – even if they're from different projects – and visualize all the data you need to track on a single screen.

Step 1: Build a Release Management Structure

To create a structure for release management: 

  1. Go to the Jira menu and select Structure | Create Structure
  2. Add the issues you want to track – you can add them manually or automatically using Automation | Insert
  3. Group issues by fix version: Automation | Group | type "Fix Version/s" (Tip: If you use the same names in different projects, use "Version name..." instead.)
  4. Open the Summary settings and select Show Sprint and Version attributes

Step 2: Add Data

Next, add the data you need to track by clicking the button at the top-right corner of the structure. You can add as many columns as you need, including:
  • Jira fields, such as status, assignee, sprint, or remaining estimate
  • Progress - track status based on issue progress, percent completion, or resolution
  • Tempo Work Logged - track how long your team is spending on each issue
  • Formulas - create your own formulas to compare fields or create a visual report
  • Time in Status - see how much time issues spend in a particular status

  • Last Comment - view the latest comment for each issue

Once you've added your columns, you can aggregate the data up the structure. To do so, open the column you want to aggregate and select Sum over sub-items.


Looking to manage resources for your next project? Planner makes it easy to plan resources and capacity for your team.


 Synchronize Links Across Teams or Projects

When you're working across multiple projects and teams, chances are there are some inconsistencies between the link types being used. 

The following guide will show you how to quickly update all your links to a single, consistent link type using Structure.

The examples below demonstrate how to update link types for an initiative, but the same process can be used for other link types as well.

Step 1: Build a Simple Structure

  1. Create a new, blank structure and add 2 folders: "Original Link Type" and "New Link Type". 
  2. Manually add your parent initiative to both folders. Note: this should be the same initiative for both.

Step 2: Add Epics

  1. Highlight the Original Link Type folder and add a Linked Issue generator: Automation | Extend | Linked Issues | select the current (inconsistent) link type
  2. Highlight the New Link Type folder and add a Linked Issue generator: Automation | Extend | Linked Issues | select the desired link type

Make sure the Allow changes via Structure option is checked for both generators.

Step 3: Update Link Types

Select all the issues under the generator added to the first folder, and drag them to the second folder, as children of the same initiative.

Structure will automatically replace all the old links with the new link type.

Need to keep the original links too? When dragging the items, hold down the "ctrl" key (Option key on Mac) to copy the items to the new iniative.

Additional Use Cases

You can also use this same method to:

  • Update other link types - just edit your Extend | Link generators and the original item added to each folder
  • Remove links - include an empty folder (no Extend generator) and drag your linked issues to the empty folder - the original link will be removed without adding a new link

 Track Overdue Tasks

Use Structure to identify:

  1. Overdue tasks
  2. Number of overdue tasks per epic, initiative, or other larger grouping
  3. Ratio of overdue tasks to total tasks for each epic, initiative, or other large grouping

Step 1: Build Your Structure

In this guide, we're going to show you how to track overdue tasks at the epic level. To track overdue tasks for initiatives or any other large groupings, simply reconfigure the structure hierarchy - this can be done using different Insert, Extend, and Group generators.

To create a new structure:

  1. Go to the Jira menu and select Structure | Create Structure
  2. Add epics: Automation | Insert | JQL Query and enter the following JQL query: issuetype = Epic
    • To limit the epics to specific projects or other variables, add additional specifications (Example: AND project = "My Epics")
  3. Add stories: Automation | Extend | Stories under Epics...
  4. Add sub-tasks (optional): Automation | Extend | Sub-tasks...


Step 2: Mark Overdue Tasks

Once you have your structure in place, the next step is to identify all the overdue items. To do this, we need to add a formula column. Click the button to the right of the column headers, and select Formula. 

Give the column an appropriate name and enter the following into the Formula section: IF(due_date < today(); "overdue")

If you used "due_date" in your formula, the variable will automatically be mapped to the Due Date attribute. If you used another name for that variable (for example, “due”), you will need to define the variable by pointing it to the appropriate Due Date attribute.

Variations

This is just one way to mark overdue items. You could also:

  • Create a more visual warning that highlights not only overdue items, but also items coming due. You can read how to do this in Wiki Markup in Formula Columns.
  • Create a formula that relies on another due date.  For example, you may want to flag issues that aren't completed by the due date of their parent epic. In this case, change the formula to: IF(type = "Story" and status != "Done" and parent{due_date} < today(); "overdue")
  • Aggregate overdue items for epics (we'll cover this next!)

Step 3: Aggregate Overdue Items for Epics, Initiatives, etc.

In the previous example we were simply returning the string “overdue”, but if we give that "overdue" flag a numeric value ("1"), we can use the Sum over sub-items option to aggregate those values up the hierarchy. To accomplish this:

  1. In place of the formula we created in step 1, enter the following: IF(type = "Story" and status != "Done" and due_date < today(); 1)
  2. Check the Sum over sub-items box

In this example, we limited our scope to only stories that are not yet "Done" - depending on your situation, you may want to adjust this to include other issue types, add additional qualifications, etc.

Step 4: Calculate the Percentage of Stories That Are Overdue

So far, we've just identified and counted our overdue stories. But this doesn't paint a complete picture. And epic with 1 overdue item out of 257 is very different from 1 out of 5! 

To get a better understanding of how these overdue items relate to the big picture, next we're going to:

  • Calculate total stories for each higher level in our hierarchy
  • Calculate the percentage of stories that are overdue for each higher level

First, we need to create another Formula column, which we'll use to calculate our total stories. For this column:

  • Enter the following formula: IF(type = "Story"; 1)
  • Check the Sum over sub-item box


Next, we'll create a third formula column to compare our values from the first two. For this column:

  1. Enter the formula: IF(total_stories; overdue / total_stories)
  2. Map your "total_stories" and "overdue" variables to the appropriate columns we created above

For this formula, we wrapped the expression in an if statement so we wouldn't get a DIV/0 error on lines without a value for total stories.

At this point, you can keep all three columns in your structure (we recommend saving them as a new view), or get rid of one or both of your original columns - our Percent column will keep their original calculations, even if those columns are deleted or changed. (This also means if you make changes to the formulas used in the Overdue or Total Stories column, you'll need to re-select those columns in the Variables section of your Percent formula to apply those changes there.)