Skip to main content

Column Type Identifier

type: "multiItemLink"

Core Properties

PropertyTypeDefaultDescription
typestringMust be set to multiItemLink for multi-item linking
headerstringRequiredDisplay name shown in column header
idstringAuto-generatedUnique identifier for the column; auto-generated from header if not specified
bindingsstringPolarion field path for auto-detection (omit for custom linking)
widthnumberColumn width in pixels
levelnumber1Hierarchical level where this column appears (1 = top level, 2 = second level)
filterablebooleantrueWhether users can filter by this column’s values
readOnlybooleanfalseWhether the column is editable
headerHeightnumberCustom height for column header (useful for multi-line headers)

Type Properties Configuration

The typeProperties object controls link behavior and filtering:
PropertyTypeDefaultDescription
linkRolestringRequiredPolarion link role name (e.g., assesses, effect, requirement)
linkTypesstringRequiredComma-separated list of allowed work item types (e.g., requirement,softwarerequirement)
createInCurrentDocumentbooleanfalseWhether users can create new linked items directly
queryFactorystringCustom JavaScript function for filtering available items
itemTemplatestringVelocity template for rendering each linked item inline

Basic Configuration Example

{
  "header": "System Requirements",
  "type": "multiItemLink",
  "width": 200,
  "id": "sysreq",
  "level": 1,
  "filterable": true,
  "typeProperties": {
    "linkRole": "assesses",
    "linkTypes": "systemrequirement,softwarerequirement"
  }
}

Multiple Work Item Types

MultiItemLink columns support linking to different work item types in the same cell:
{
  "header": "Item/Function",
  "type": "multiItemLink",
  "width": 150,
  "typeProperties": {
    "linkRole": "assesses",
    "linkTypes": "systemrequirement,softwarerequirement,systemelement"
  }
}
When you need to display different work item types in one column instead of creating separate columns, use comma-separated linkTypes. This consolidates multiple item types into a single column, reducing visual clutter.

Cell Display

MultiItemLink cells display all linked items as a vertical list: Click the cell to open the editor for adding/removing items:

Editor Behavior

When users click a multiItemLink cell, the system opens an editor that supports adding and removing multiple items:
FeatureBehavior
Add itemsType to search; select from autocomplete suggestions
Remove itemsClick the [×] button next to each item
Create itemsClick ”+ Create new item” if createInCurrentDocument: true
Unsaved itemsNew items appear with * prefix until saved
AutocompleteIncludes previously added items and new unsaved items

Custom Item Rendering with itemTemplate

Use itemTemplate to display additional information (like severity) within each linked item in the cell without requiring sub-columns:
{
  "header": "Effects",
  "type": "multiItemLink",
  "width": 250,
  "typeProperties": {
    "linkRole": "effect",
    "linkTypes": "risk",
    "createInCurrentDocument": true,
    "itemTemplate": "<span style=\"display: table-cell; width: 100%; padding-right: 4px;\">$item.fields().description().render().htmlFor().forFrame()</span><span style=\"display: table-cell; white-space: nowrap;\">[S:$item.fields().get(\"severityRating\").render().withIcon(false).htmlFor().forFrame()]</span>"
  }
}
This template renders both the item description and severity rating in a single cell:

Sub-Columns Restriction

MultiItemLink columns cannot have nested sub-columns using dot notation:
// ❌ This does NOT work with multiItemLink
{
  "header": "Effect Severity",
  "bindings": "effects.severity",  // Invalid: sub-columns not supported
  "level": 2
}

Workaround: serverRender for Sub-Column Display

Use Server Render Columns to display linked item properties in separate columns:
{
  "header": "Effect Severity",
  "type": "serverRender",
  "width": 120,
  "serverRender": "<ol style='margin-block-start: -16px; margin-block-end: -16px; padding-inline-start: 16px;'>#foreach($linkedItem in $item.fields().linkedWorkItems()) #set($effect = $linkedItem.fields().workItem().get()) <li>$effect.fields().severity().render().withIcon(true).htmlFor().forFrame()</li> #end</ol>"
}
See Display Sub-Columns for detailed examples.

Filtering Linked Items

Use a queryFactory to restrict which work items appear in the autocomplete editor:
{
  "header": "Active System Requirements",
  "type": "multiItemLink",
  "typeProperties": {
    "linkRole": "assesses",
    "linkTypes": "systemrequirement",
    "queryFactory": "filterActiveItems"
  }
}
Define the filter function:
window.filterActiveItems = function(item, colDef, config) {
  // Return OData $filter expression
  return "fields/status ne 'closed'";
};

Data Storage and Format

MultiItemLink columns store linked items as JSON arrays internally:
ContextFormatExample
Grid displayVertical listREQ-001, REQ-002, ELEM-005
OData requestJSON array[{"id": "REQ-001"}, {"id": "REQ-002"}]
OData responseArray of objects[{"id": "REQ-001", "project": "PROJ"}, ...]
Temporary itemsArray with * prefix[{"id": "*REQ-001"}, {"id": "REQ-002"}]
FeatureitemLinkmultiItemLink
Items per cell1 (single)Multiple
Sub-columnsSupportedNot supported (use serverRender)
Editor typeAutocomplete dropdownMulti-select with add/remove
Use caseParent-child 1:1 relationshipsParent-child 1:N relationships
StorageObject referenceArray of objects
Custom renderingitemTemplate supporteditemTemplate supported

Undo/Redo Support

MultiItemLink edits are fully supported:
  • Add/remove individual items (each action is undoable)
  • Bulk paste operations (treated as single undo action)
  • Dependent column restoration on undo
  • Unsaved items (with * prefix) cannot be restored if deleted before save

Permission Handling

ScenarioBehavior
User lacks edit permissionColumn becomes read-only; no editor opens
Linked item is deletedItem disappears from cell on next refresh
User cannot create items”Create new item” option hidden
Cross-project linksSupported using IdProject format

Filterable Behavior

When filterable: true, users can filter RISKSHEET rows by linked item:

See Also

KB ArticlesSupport TicketsSource Code
  • SheetConstants.ts
  • PolarionAppConfigManager.java
  • GridUndoStack.ts
  • ExportToExcel.ts
  • RisksheetDataStorage.java