Skip to main content

Prerequisites

  • A parent column of type multiItemLink already configured in your risksheet.json
  • Knowledge of the Polarion field IDs for the linked item properties you want to display
  • Access to the risksheet.json configuration file
Start by defining the parent multiItemLink column. This column displays the linked item IDs and provides the relationship that sub-columns reference:
{
  "columns": [
    {
      "id": "testCases",
      "binding": "testCase",
      "header": "Test Cases",
      "type": "multiItemLink",
      "width": 120
    }
  ]
}
The binding value (in this example, testCase) is the Polarion link role that connects the risk item to its linked items. This binding becomes the prefix for all sub-column bindings.

Step 2: Add Sub-Columns Using Dotted Binding Syntax

Add additional columns with bindings that reference properties of the parent link column using dot notation. The format is <parentBinding>.<fieldId>:
{
  "columns": [
    {
      "id": "testCases",
      "binding": "testCase",
      "header": "Test Case",
      "type": "multiItemLink",
      "width": 120
    },
    {
      "id": "tcTitle",
      "binding": "testCase.title",
      "header": "TC Title",
      "width": 200,
      "readOnly": true
    },
    {
      "id": "tcStatus",
      "binding": "testCase.status",
      "header": "TC Status",
      "type": "workflow",
      "width": 100,
      "readOnly": true
    }
  ]
}
The testCase.title binding tells Risksheet to display the title field of each item linked through the testCase link role. Similarly, testCase.status displays the workflow status of the linked item. diagram
When a sub-column displays an enum field from the linked item, you must explicitly set the type property (for example, "type": "enum:testStatusEnum"). Unlike regular columns where Risksheet can auto-detect the type from the Polarion field definition, linked item sub-columns require manual type specification for enum, multi-enum, and workflow fields.

Step 3: Group Sub-Columns Under a Shared Header

Use the headerGroup property to visually group the parent link column with its sub-columns under a common header label. This creates a two-level column header structure where the first row shows the group name and the second row shows individual column names:
{
  "columns": [
    {
      "id": "testCases",
      "binding": "testCase",
      "header": "ID",
      "type": "multiItemLink",
      "headerGroup": "Test Cases",
      "width": 120
    },
    {
      "id": "tcTitle",
      "binding": "testCase.title",
      "header": "Title",
      "headerGroup": "Test Cases",
      "width": 200,
      "readOnly": true
    },
    {
      "id": "tcStatus",
      "binding": "testCase.status",
      "header": "Status",
      "headerGroup": "Test Cases",
      "type": "workflow",
      "width": 100,
      "readOnly": true
    }
  ]
}
The resulting grid header looks like this:
Test Cases (headerGroup)
IDTitleStatus
TC-101Brake endurance testPassed
TC-102Signal latency testFailed
You can optionally set headerGroupCss on any column in the group to apply CSS styling to the group header row, and headers.columnGroupHeader.height to control the group header row height (default: 32 pixels).
Use the collapseTo property on sub-columns to enable collapsing the header group. When the group is collapsed, only the column specified in collapseTo remains visible. For example, setting "collapseTo": "testCases" on the tcTitle and tcStatus columns means those columns hide when the user collapses the “Test Cases” group, leaving only the ID column visible.

Step 4: Configure Sub-Column Editability

Sub-columns for linked items are typically set to readOnly: true because they display data from a different work item. However, you can make sub-columns editable if you want users to modify linked item properties directly from the Risksheet grid:
{
  "id": "tcTitle",
  "binding": "testCase.title",
  "header": "TC Title",
  "readOnly": false,
  "width": 200
}
When readOnly is set to false, users can click the cell and edit the linked item’s property value. Changes are saved to the linked work item when the user saves the Risksheet.
If the global downstreamReadonly property is set to true in your configuration, all sub-columns for linked items become read-only regardless of individual column readOnly settings. This prevents accidental modification of items from other documents. Check your configuration if sub-columns appear unexpectedly non-editable.

Step 5: Handle Multiple Linked Items and Cell Merging

When a parent multiItemLink column has multiple linked items, Risksheet creates one row per linked item. The parent item’s columns merge vertically across these rows, while sub-columns display the individual linked item properties: diagram The merging behavior is governed by the hierarchical levels configuration. Sub-column values participate in merge evaluation, and empty or invalid JSON values in multi-item link columns prevent merging.
If sub-column headers are long and get truncated, increase headers.columnHeader.height (default: 32 pixels) in your configuration to allow multi-line header text. Combine this with appropriate width values per column for optimal readability.

Step 6: Verify Your Configuration

  1. Save your risksheet.json changes
  2. Refresh the Risksheet page in your browser
  3. You should now see the sub-columns appearing next to the parent link column
  4. When multiple items are linked, each linked item’s properties should appear in separate rows within the corresponding sub-columns
  5. Verify that the header group label displays correctly as a merged header above the grouped columns
  6. If you enabled editing on sub-columns, click a sub-column cell and confirm the editor opens

See Also

KB ArticlesSupport TicketsSource Code
  • CustomMergeManager.ts
  • ColumnsHelper.ts
  • risksheet.json
  • PolarionAppConfigManager.java
  • AppConfig.ts