This article is for Data Center. Visit Cloud
Project Manager
- Jaramy Conners
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
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
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
- Go to the Jira menu and select Structure | Create Structure
- 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:
- Go to Automation | Insert | JQL Query
- 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"
)
- To limit the epics to specific projects or other variables, add additional specifications (Example:
- Click Create
All your epics should now be placed beneath the Agile Hierarchy folder.
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:
- Select the "Issues without Epics" folder
- Go to Automation | Insert | JQL Query
- 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
- Click Create
Any issues that are not assigned to epics should now appear beneath the second folder.
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.
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:
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
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.)
Open the Summary settings and select Show Sprint and Version attributes
Step 2: Add Data
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
Create a new, blank structure and add 2 folders: "Original Link Type" and "New Link Type".
Manually add your parent initiative to both folders. Note: this should be the same initiative for both.
Step 2: Add Epics
Highlight the Original Link Type folder and add a Linked Issue generator: Automation | Extend | Linked Issues | select the current (inconsistent) link type
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
Use Structure to identify:
Overdue tasks
Number of overdue tasks per epic, initiative, or other larger grouping
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:
Go to the Jira menu and select Structure | Create Structure
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"
)
Add stories: Automation | Extend | Stories under Epics...
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:
In place of the formula we created in step 1, enter the following:
IF(
type= "Story" and
status!= "Done" and
due_date< today(); 1)
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:
Enter the formula:
IF(
total_stories;
overdue/
total_stories)
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.)