Product Owner
Design a structure for calculating what it will cost to complete each Story, Epic, or other grouping of issues, based on the amount of time remaining and the hourly rate of the assignee.
Requirements
For this method to be successful, you need:
- All stories and tasks assigned to specific Jira users
- A custom User property containing each user's hourly rate of pay (we've named ours "cost")
Step 1: Build a Hierarchy
Build a structure with an Epic > Story > Sub-task hierarchy:
- 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"
)
- To limit the epics to specific projects or other variables, add additional specifications (Example:
- Add stories: Automation | Extend | Stories under Epics...
- Add sub-tasks (optional): Automation | Extend | Sub-tasks...
Step 2: Add a Column for the Custom User Property
- Open the Add Column menu (+) and select Attribute...
- Under the column properties, enter the following values:
- Attribute: User Property...
- User Field: Assignee
- Property: Enter the key for the user property where you store each user's hourly pay rate - ours is called "cost"
You should now have an Assignee(cost) column that displays the values from our custom user property:
Step 3: Calculate the Cost to Finish Each Issue (epic/story/etc.)
Add a formula column to calculate the cost to finish each issue in our structure. Enter the following:
- Formula:
AssigneeCost*RemainingEstimate/3600000
- Variables: map AssigneeCost to the custom "cost" property we discussed in Step 2 - see Columns as Variables for more details
- Check Sum over sub-items so the cost is aggregated up the hierarchy
- If issues or tasks appear multiple times within an epic (or other grouping), check Exclude deplicates to avoid an inflated total costs
Bonus - Make This Information Visible Outside of Structure
Using Effectors, we can write the values from our formula to a custom Jira field, making them visible to users outside of Structure.
Before we start, you'll need to make sure you have a custom field where the Cost-to-Complete values can be stored. We created a custom field called "FinishCost".
Add an Effector
Open the Automation menu and select Effectors.
Choose Attribute to issue field...
On the Effector settings screen:
- The name field is updated automatically as you select the Effector properties. If you prefer, you can also click the edit button to enter a custom name.
- Get Value From: select the formula column we added in Step 2
- Set Value To: select the custom Jira field you want to write the cost-to-complete values to
- Limit To: If you only want to write cost data for certain issues or issue types (for example, just for epics), enter the appropriate JQL. We've left this section blank, because we want to write values for all issues.
- Select whether email notifications should be sent when the Effector writes values to Jira
When you're finished, click Save and Run to run the Effector immediately, or click Save to simply add the Effector to the structure but not run it yet.
Run the Effector
You can run an Effector directly from its settings screen (see above), or you can locate the Effector at the top of the structure and click the Action button (the three dots to the right of its row). Select Run.
You have the option to Preview effects before applying. This allows you to view and approve every change that will be made by the Effector. Effectors update live Jira data, so we highly recommend using the preview option. Click Run to begin.
Once the preview is finished, you will see a list of changes that will be made by the Effector. You can select which changes you want made, or click Apply All to apply all changes.
Once you apply the selected changes, the cost values from your formula column will be written to the custom Jira field, where they can be viewed outside of Structure.
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
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
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.
When team members are working on multiple projects, it can be difficult to track how much work everyone is doing. Using Structure, you can track allocation across projects and reassign work on the fly.
Step 1: Build a Resource Allocation Structure
Insert issues from every project/board the team members work on, and then group them by Progress and Assignee.
To create a new structure:
- Go to the Jira menu and select Structure | Create Structure
- Add all the issues: Automation | Insert
- Select Agile Board to add issues from select boards
- Select JQL Query to add issues from projects, using JQL
- Group issues by Status: Automation | Group | type "Status"
- Group issues by Assignee: Automation | Group | type "Assignee"
Step 2: Add Columns to Compare Workloads
Structure columns allow you to visualize multiple data points in a single view. We recommend one or more of these:
- Status
- ∑ Story Points (if you’re using them)
- ∑ Original Estimate
- ∑ Remaining Estimate
- A custom formula to calculate the remaining effort
Using a Totals columns, the values for individual issues are aggregated up to their assignee, so you can evaluate workloads at a glance.
Step 3: Drag Issues to Reassign
To assign/reassign tasks, simply drag issues from one assignee grouping to another.
Optional Enhancements:
- To allocate resources at the group level, group issues by a custom Team field instead of Assignee.
- Add a WSJF column to prioritize issues, and select Sum over sub-items to balance priorities across resources.
- Manage allocation across sprints by adding a Group by Sprint generator. (Haven't assigned sprints yet? Check out Sprint Planning with Structure!)
Try Planner by Tempo to plan resources and capacity for your team.
Adding Structure.Gantt makes it easy to identify and resolve overallocations across projects and portfolios.
With Structure, you can track all the issues for upcoming sprints – even if they're from different projects – and visualize all the data you need to track on a single screen. You can even aggregate that data for each sprint.
Step 1: Build a Sprint Planning Structure
To create a new structure:
- Go to the Jira menu and select Structure | Create Structure
- Add all the issues from a Board: Automation | Insert | Agile Board
- Group by sprints: Automation | Group | type "Sprint..."
- Open the Summary settings and select "Show Sprint and Version attributes":
Step 2: Add Data
Next, add the data you'll use to compare issue priority:
- Click the + button at the top-right corner of the structure
- Select the fields or attributes you want to compare - we recommend:
- Status
- Assignee
Epic Link
- Story Points (if you’re using them)
- WSJF (or any other metric your team uses to prioritize issues or assess business value)
- Click the header of any column to sort your issues by that value.
Step 3: Assign Issues
To assign issues to a sprint, drag it from the backlog to the appropriate sprint. You can also reassign issues by dragging them from one sprint to another.
Optional Enhancements
- Aggregate values for each sprint: when adding a column (such as Story Points), select Sum over sub-items
Group by assignee under each sprint to see how the work is divided across your team: Automation | Group | Assignee
Hide closed sprints: Automation | Filter | Hide Closed Sprints
- Use Structure.Gantt to view any blocking dependencies between issues (to help prioritize them)