Because all organizations are different, and teams within those organizations are different still, Structure was designed to be versatile and flexible enough to handle a diverse range of unique use cases. Therefore, there is no single, best strategy to rolling Structure out across an organization. However, there are best practices which can be utilized to reduce disruption and maintain peak performance levels.
We will review these best practices, collected from our experience as well as customer feedback. It is important to understand that the best practices referenced here were developed with optimal system performance at the core.
Important information regarding Performance Considerations can be found below.
Initial Considerations
Organizations New to Jira
If you have Structure as part of your Jira solution and your organization is still new to Jira, it may be best to consider the solution as a whole. That is to say, include it in your basic Jira onboarding process. A lot of our training material and resources are well suited to this. There are plenty of solutions consultants who can help with training as well.
Organizations Established in Jira
It is highly recommended to proceed with an incremental rollout in this situation. By utilizing Structure configurations, you can select specific groups and/or projects that will have access to Structure initially. You can then expand the access as your teams become more familiar. To add an additional layer of control to the roll-out, you can also limit the type of access each user or role has to read or edit structures. Typically, the first groups should be your champions - those who may have recommended Structure in the first place and whom you will rely on to guide additional users through best practices.
For detailed instruction on how to adjust permissions, read Global Permissions
Basic Terms & Principles
Automation
Automation uses generators, i.e. special rules, that tell a structure what issues to show you from Jira and where to place them within the structure. Whenever a structure is open, these generators are running and rebuilding your structure as changes are happening to the associated Jira data. In this way, you know that your structure is always up-to-date and relevant
To learn more about Automation a good how to video can be found here: Generators
Generators
- Insert - pulls in an initial set of issues, from which the rest of the structure is built
- Filter - hides some issues, or certain levels, from the structure
- Sort - reorders issues by the values in a specified field
- Group - organizes issues under the values of a field
- Extend - adds additional issues based on links to the issues already in the structure
Generators can only be added under a “static” part of the structure. In other words, anything that was not populated by another generator. Below are the two most common locations & their use case.
- At the top of the structure - this will apply the generator to the entire structure. This is the best option if you need to organize the entire structure in the same way.
Under a folder or issue - this limits the generator to just the items beneath that folder or issue. This allows you to combine several sets of issues in one structure and organize them differently by adding different generators under each folder.
Learn more about how to set up Generators here: Adding a Generator
Reminder: In order to add additional generators, you must first select the top line of the structure (to apply it to the entire structure) or the folder or static issue (to apply it to only a part of the structure).
Things to Keep in Mind
Before we get started setting up a structure, there are a few key items to keep in mind as you get going. These are important to maintaining desirable performance levels.
Extend generators should have limited levels . The default is set from 1-10. We recommend adjusting for 1-2.
Use Filter generators sparingly . Adjust the initial insert generator query instead.
Aim for multiple, specialized, structures . Avoid large “all encompassing” structures.
Common Approaches to Building
Top Down
We recommend utilizing this approach when a full overview is needed. Specifically where it is important to roll-up data such as estimates, time spent and progress from lower levels all the way to the top. It is strongly recommended to limit access to the appropriate users, such as project and program managers. We do not recommend using this method for a team's main structure for daily work or as the default structure.
Focus on a Level
This approach is best for when you want to see how the scope of issues you are responsible for fits into the full hierarchy. For instance, you want to view the stories from your sprint and visualize which Initiatives and/or Epics they fall under, as well as the sub-tasks they are comprised of.
Visualize the Entire Scope
When you are in a hurry, but also want to make sure you didn't leave anything behind, this approach will come in handy.
Performance Considerations
Automation
When evaluating Automation performance, there are several factors that come into play
- The size of structures (the number of issues in each structure).
- The complexity and the depth of structures. The more levels a structure has, the more calculations need to be done to build it.
- Number of concurrent users editing large structures.
- The frequency of usage. If you have a really large structure that is used on a daily basis or is set as the default structure, this may have a negative effect on the server performance. On the other hand, a very large structure that is only used by a small group of managers when they really need it would have minimal impact.
The number of structures with generators does not affect the performance - if a structure is not opened, its generators are not running.
To reduce the risk of Automation affecting Jira performance, we have introduced the Automation Timeout feature. This feature stops generation if it exceeds a certain, user-defined time period. The user is then able to adjust the generator settings. See Automation Paused for more details.
Progress, Totals and Formula Columns
The Jira fields used in columns, by themselves, have little impact on performance. They are loaded only for the structure elements which are currently displayed, in addition to a number of items below and above (to ensure smoother scrolling).
However, for progress, totals and some formulas, the values are loaded for the entire hierarchy. This is due to the fact that such columns aggregate data across the entire hierarchy. For structures with thousands of issues, this can become noticeable. This is still far less of an impact when compared to loading the hierarchy itself.
Structure on Issue Page
Users can see structures on the main Structure Board, on Jira dashboards, the project page and on the issue page. A structure which is visible in any of those locations requires generation of the structure.
For high traffic projects, this could affect performance significantly. It is recommended to use smaller and simpler structures as your default structures. To learn more about selecting the default structure for the Issue Page, see Structure Options for the Issue Page.
You can also remove the Structure widget from the Issue Page completely.
S-JQL
S-JQL is an extension for JQL that allows you to run structure-based queries. Every time such a query is executed, the structure that is used in the query will be loaded. If you create a saved filter with S-JQL for a large structure and use it heavily somewhere, performance may begin to suffer.
Monitoring & Troubleshooting Structure Usage
The best way to check statistics on Structure usage, see structure sizes and assess load time is by reviewing the Performance Audit Log (PAL). For detailed information on the type of data which can be found in the PAL, as well as how to interpret it, additional information can be found here: Monitoring and Troubleshooting Structure Usage