Grouping of Components Inside a JIRA Project (Subcomponents)
Components are sub-sections of a project. They are used to group issues within a project into smaller parts. Each component may have a default assignee and issues may be assigned to these default assignees automatically. But the problem is, JIRA only allows one level components. You can't create subcomponents for components. If your project is large you may need more nesting to organize components. This is where our 'Component/Subcomponent/Bundle Versions' add-on will help you.
Lets dive into an example project and see how subcomponents may help you. Lets assume our hypothetical project is an ERP (Enterprise Resource Planning) project for a factory and it has following modules which will be our candidate JIRA components.
- Human Resources
- Production Planning
- Material Management
- Supply Chain Management
- Sales and Distribution
- Quality Management
- Finance
- Project Management
- Android Application
- iOS Application
- Oracle Database Support
- MySQL Database Support
- Installer
- Service Desk
Obviously this list can grow but it is enough to demonstrate the need for subcomponents. If you inspect the list we can group them into categories. For example we can group 'Android Application' & 'iOS Application' modules inside a new category 'Mobile Applications'. Similarly we group support for different databases into a new category 'Database Support'. Functional modules can be grouped inside a new 'Functional' category. Lets see how our subcomponents tree will look like:
- Functional
- Human Resources
- Production Planning
- Material Management
- Supply Chain Management
- Sales and Distribution
- Quality Management
- Finance
- Project Management
- Mobile Applications
- Android Application
- iOS Application
- Database Support
- Oracle
- MySQL
- PostgreSQL
- DevOps
- Installer
- Service Desk
Actually we can further divide each of functional modules into submodules and create JIRA subcomponents for them. Lets consider how we can divide 'Human Resources' module. Recruitment, Payroll, Training, Travels may be subcomponents of 'Human Resources' component. Each of the above components can be divided into their own subcomponents. Again, lets see how our subcomponent tree will look like:
- Functional Modules
- Human Resources
- Recruitment
- Payroll Management
- Training Management
- Travel Management
- Production Planning
- Demand Management
- Bills of Material
- Material Management
- Inventory Management
- Purchase
- Warehouse Management
- Supply Chain Management
- Risk Management
- Dispute Management
- Sales and Distribution
- Shipping and Transportation
- Billing and Invoice Generation
- Quality Management
- Process Inspection
- Test Equipment
- Certifications
- Finance
- Bank Accounting
- Cost Centers
- Profitability Analysis
- Project Management
- Project Planning
- Project Reporting
- Human Resources
- Mobile Applications
- Android Application
- iOS Application
- Database Support
- Oracle
- MySQL
- PostgreSQL
- DevOps
- Installer
- Service Desk
As you can see we have already have 3 level of nesting. We can continue to break these too, for example 'Test Equipment' can easily be converted to a category and a new subcomponent for each different test equipment can be created under it. But we will stop further dividing for simplicity.
If you consider above subcomponent tree, not all of them should be a real JIRA components. For example 'Database Support' don't need to be a JIRA component, we won't be creating issues for it. We will only need to create issues specific to each database type. From our perspective it is something like a folder to group other components, 'Oracle', 'MySQL', and 'PostgreSQL'. To provide this difference between components the add-on also provides 'Virtual Components', which are just exist structurally but doesn't actually a real JIRA component. You can't create issues for them.
You can easily create this structure with 'Component/Subcomponent/Bundle Versions' add-on. There is no limit on nesting level or which components can be subcomponent of others. A virtual component may be a subcomponent of a real component or a real component can be a subcomponent of a virtual component. The add-on allows you to define subcomponent tree with drag & drop operations, filter, and search issues belonging to any level in the subcomponent tree. Lets see it in action:
The add-on provides subcomponentof() JQL function for searching issues belonging to any level in the subcomponent tree. You can pass name or id of any node inside the subcomponent tree to search all issues belonging to a component and all of the subcomponents under it. This allows you to create filters, or Scrum and Kanban boards that contains issues belonging to any subtree of components. Suppose that you have a database support team and you want to create a Kanban board for them. You can easily create the board with "project in subprojectsof('Database Support')" JQL. The advantage of using this JQL in any JQL filter is that, later if you add support for a new database you won't need to update any JQL. You will only update subcomponent tree of the project and all filters will work correctly. All boards, dashboard widgets will show correct data. To learn how to implement all of these please check Subcomponents section our user manual.