Levels define the hierarchical structure of a Risksheet, controlling how risk items, upstream linked items, and downstream tasks are organized into expandable/collapsible rows with merged cells.
The levels property is a top-level array in risksheet.json. Each element defines one hierarchical level in the grid.
Property
Type
Default
Description
name
string
Required
Display name for the level, shown in the menu bar button for creating new items of this type
controlColumn
string
systemItemId
Column id that controls hierarchy grouping for this level. Cells in this column merge vertically for items sharing the same parent.
zoomColumn
string
See application
Column id used for zoom navigation when expanding into this level
showInMenu
boolean
true
Controls whether a “New [name]” button appears in the menu bar for creating items at this level
The controlColumn and zoomColumn values must exactly match the id property defined in the corresponding column configuration. Mismatched IDs cause row duplication and incorrect cell merging. This is one of the most common configuration errors reported in support.
Levels are indexed starting from 0. The index determines the hierarchical depth:
Level Index
Typical Usage
Column level Value
0
Primary risk item (Failure Mode, Hazard)
1 (default for risk columns)
1
Upstream linked item (Requirement, Function)
2
2
Additional upstream or downstream item
3
Task level
Downstream task/mitigation (defined in dataTypes.task)
Not set on columns
The levels array index (0-based) and the column level property (1-based) follow different numbering conventions. A column with "level": 2 corresponds to levels[1] in the array. Task-type columns do not use the column level property.
Use the work item type name that your team recognizes. For FMEA, common names include “Failure Mode”, “Cause”, and “Effect”. For HARA, use “Hazard”, “Hazardous Event”, or “Safety Goal”.
The controlColumn specifies which column controls the grouping and cell merging behavior for a level. When multiple rows share the same value in the control column, their cells merge vertically to create the hierarchical visual structure.
controlColumn Value
Behavior
systemItemId (default)
Groups by the risk item’s Polarion ID. Used for the primary risk level.
Custom column id (e.g., sysReq)
Groups by the linked item column. Rows with the same linked item merge.
Two different levels must never point to the same controlColumn. Doing so causes description values from previous items to auto-populate into new rows and items to merge incorrectly. Each level must reference a unique column.
The zoomColumn specifies which column receives focus when a user expands or navigates into a particular level. This provides a zoom-like navigation experience where expanding a level scrolls to and highlights the specified column.
The exact zoom behavior and visual effect when navigating between levels may vary depending on the grid width and visible columns. Test zoom navigation with your specific column layout.
The levels array works together with the dataTypes configuration to define the complete hierarchy. While levels controls the visual grouping and menu structure, dataTypes defines the work item types and link roles.
Configuration Area
Controls
levels[].name
Button label in the menu bar
levels[].controlColumn
Which column drives cell merging for the level
dataTypes.risk.type
Polarion work item type created for risk items
dataTypes.risk.role
Link role used when connecting risk items
dataTypes.task.type
Polarion work item type created for downstream tasks
dataTypes.task.role
Link role used when connecting task items
dataTypes.task.showInMenu
Whether task creation appears in the menu (default true)
The sortBy property works with levels to determine the display order of items. Column IDs referenced in sortBy must match the column id values used in the configuration, just as with controlColumn.
Column IDs used in sortBy must exactly match the id property defined in column configurations. The same requirement applies to controlColumn values in levels. A mismatch between any of these IDs causes row duplication and incorrect merging.
Each column definition includes a level property (default 1) that determines at which hierarchical depth the column appears. This links columns to specific entries in the levels array.
The following risksheet.json excerpt demonstrates a two-level FMEA configuration with a risk item level and an upstream system requirement level, plus downstream mitigation tasks.
Level 0 rows display Failure Mode fields (title, severity, occurrence, detection, RPN). Cells merge vertically when multiple causes share the same Failure Mode ID.
Level 1 rows display linked System Requirements. The sysReq column controls merging so multiple Failure Modes linked to the same Requirement group together.
Task rows display downstream mitigation tasks linked to each Failure Mode.
The menu bar shows three creation buttons: ”+ Failure Mode”, ”+ System Requirement”, and ”+ Task”.