Skip to main content
diagram

Column Type Syntax

SyntaxDescription
multiEnum:EnumIDMulti-select dropdown using the specified enumeration definition
Setting "type":"enum:EnumID" on a multi-select Polarion field renders a single-select dropdown. You must use "type":"multiEnum:EnumID" to enable multi-value selection, even if the underlying Polarion field supports multiple values. This is the most common multi-enum configuration error.

Column Properties

NameTypeDefaultDescription
idstringAuto-generated from header or bindingUnique identifier for the column
typestringAuto-detected from bindingMust be multiEnum:EnumID for multi-select behavior
headerstringNoneDisplay text in the column header
bindingstringSame as idThe Polarion field ID this column maps to
readOnlybooleanfalseControls whether the column cells can be edited
filterablebooleantrueControls whether users can filter by values in this column
widthnumberSee applicationColumn width in pixels
minWidthnumberSee applicationMinimum resize width in pixels
levelnumber1Hierarchical level at which this column appears (not set for task columns)
multiLinebooleantrueEnables multi-line display within cells
wordWrapbooleantrueControls whether text wraps within cells
headerGroupstringNoneHeader group this column belongs to for multi-level headers
collapseTostringNoneColumn ID to collapse into when header group is collapsed
cellCssstringNoneCSS class name(s) to apply to cells in this column
cellRendererstringNoneName of a custom cell decorator function for this column
formatstringNoneDisplay format string for the column data

Enumeration Definition

Multi-enum columns reference enumeration definitions from the enums section of risksheet.json. Each enum entry is an array of option objects:
{
  "enums": {
    "impactCategories": [
      { "id": "safety", "name": "Safety" },
      { "id": "financial", "name": "Financial" },
      { "id": "regulatory", "name": "Regulatory" },
      { "id": "reputation", "name": "Reputation" },
      { "id": "operational", "name": "Operational" }
    ]
  }
}

Enum Option Properties

PropertyTypeRequiredDescription
idstringYesInternal identifier used for storage, comparison, and cell decorator logic. This is the value stored in the Polarion field.
namestringYesDisplay label shown in the dropdown picker and rendered in the cell
descriptionstringNoExtended description text (shown in rating: type columns; not displayed in standard enum: or multiEnum: columns)
iconstringNoIcon identifier for visual display alongside the option
Cell decorators, formulas, and filter comparisons always work with enum IDs, not display names. For example, if an option displays as “High” but has id: "high", use 'high' in your decorator or formula logic.

Data Storage

Multi-enum columns support two Polarion storage formats:
Storage TypeFormatDescription
Native multi-enumPolarion List<IEnumOption>Native Polarion multi-select custom fields containing IEnumOption objects
Comma-separated string"val1,val2,val3"String fields containing comma-separated enum IDs
Blank options are automatically filtered out from the stored values during data processing. The system handles bidirectional conversion between the grid display format (array of enum IDs) and the Polarion storage format transparently.

Rendering Behavior

Multi-enum values render as a list of styled tags within the cell:
  • Each selected value appears as an individual span.multi-enum-item element
  • All items are wrapped in a span.multi-enum-list container
  • Tags display the name property from the matching enum definition
  • If an enum option ID is not found in the configuration, the raw ID value is displayed as a fallback
  • Values stored as arrays are processed during cell rendering to resolve IDs to display labels

Filtering Behavior

Multi-enum columns support two filter modes with significantly different behavior:
Filter ModeBehaviorUse Case
Filter by ValueMatches exact combinations of selected valuesFinding rows with a specific set of selections (e.g., exactly “Safety” and “Regulatory” with no other selections)
Filter by Condition with ContainsFinds all rows where the specified value is included, regardless of other selectionsFinding all rows that include “Safety” among their selections, regardless of what else is selected
Use Filter by Condition with the Contains option to find all rows that include a specific enum value. Filter by Value requires selecting all exact combinations containing that value, which is impractical for fields with many options. This is the most common filtering question from users working with multi-enum columns.

Cell Merging

Multi-enum values participate in the hierarchical merging system. Cells with identical selections merge vertically when they are in the same level group:
  • Multi-enum values are converted to string representations for merge comparison
  • Cells with identical numeric value arrays (same selected options in the same order) merge properly
  • Empty brackets [] or invalid JSON prevent merging
  • The values must be in identical order for cells to merge

Export Behavior

Excel Export

When exporting to Excel, multi-enum columns are converted to a comma-separated list of human-readable option names:
  • Internal enum IDs are resolved to display names using the enums configuration
  • Values are separated by comma and newline characters
  • Unknown enum IDs (not found in configuration) are preserved as-is in the export

PDF Export

PDF export renders multi-enum values as comma-separated text of resolved enum labels, consistent with the Excel export format.

WorkItem Enum Fields

For custom fields that are enumerations of WorkItem type, the type property must match the XML custom field configuration exactly:
{
  "columns": [
    {
      "id": "wiAllocation",
      "header": "Allocation",
      "type": "multiEnum:@NoIDWorkItems[workpackage]",
      "binding": "wit_measure-en_me_allocation"
    }
  ]
}
WorkItem enum fields require specific type syntax matching the XML custom field definition in Polarion. The exact format depends on your project’s custom field configuration. Check .polarion/documents/fields/custom-fields.xml for the correct type string. Upstream and downstream WorkItem enum fields have more limited support compared to row item properties.

Dependent Multi-Enum Options

Multi-enum editors support dependent option filtering based on a parent enum value. Configure dependencies using the relations section of risksheet.json:
{
  "columns": [
    {
      "id": "hazardType",
      "type": "enum:hazardTypeEnum",
      "header": "Hazard Type"
    },
    {
      "id": "mitigationStrategies",
      "type": "multiEnum:mitigationEnum",
      "header": "Mitigation Strategies"
    }
  ],
  "relations": [
    {
      "parent": "hazardTypeEnum",
      "child": "mitigationEnum",
      "mappings": {
        "electrical": ["insulation", "grounding", "fuse_protection"],
        "mechanical": ["guard", "interlock", "damping"],
        "thermal": ["cooling", "insulation", "thermal_cutoff"]
      }
    }
  ]
}
When the parent column value changes, the multi-enum dropdown dynamically refreshes its available options based on the defined relationships.
Dependent enumeration support for multi-value enums was added in version 25.4.0. Single-value dependent enums were introduced in version 25.3.1. Ensure your Risksheet version supports the dependent enum feature before configuring relations.

Undo/Redo Support

Multi-enum fields have specialized undo logic. When you undo changes to a multi-enum column, the system restores visible options from stored enum item IDs. Dependent column values are also automatically restored to maintain data consistency.

Version History

VersionChange
24.2.0Fix for multiEnum type column behavior
24.6.0Fixed multiEnum display at minimal row height; fixed cross-project downstream item linking (previously required removing task.project column as workaround)
25.3.1Dependent enum support for single-value enums via relations configuration
25.4.0Dependent enum support for multi-value enums via relations configuration

Error Messages

ErrorCauseResolution
”Error while loading enums”Enum configuration references an enum ID that does not exist or cannot be loaded from PolarionVerify that the enum ID in the type property matches an entry in the enums section or a valid Polarion enumeration

Complete Example

An FMEA configuration with multi-enum columns for impact categories and affected systems, including dependent enums and cell decorators:
{
  "columns": [
    {
      "id": "systemItemId",
      "header": "ID",
      "width": 80,
      "readOnly": true
    },
    {
      "id": "title",
      "header": "Failure Mode",
      "width": 200
    },
    {
      "id": "impactCategories",
      "binding": "customField_impactCategories",
      "header": "Impact Categories",
      "type": "multiEnum:impactCategoryEnum",
      "width": 180,
      "filterable": true,
      "level": 1
    },
    {
      "id": "affectedSystems",
      "binding": "customField_affectedSystems",
      "header": "Affected Systems",
      "type": "multiEnum:affectedSystemEnum",
      "width": 200,
      "filterable": true,
      "level": 1
    },
    {
      "id": "sev",
      "binding": "customField_severity",
      "header": "S",
      "type": "rating:severityRating",
      "width": 50
    },
    {
      "id": "occ",
      "binding": "customField_occurrence",
      "header": "O",
      "type": "rating:occurrenceRating",
      "width": 50
    },
    {
      "id": "det",
      "binding": "customField_detection",
      "header": "D",
      "type": "rating:detectionRating",
      "width": 50
    },
    {
      "id": "rpn",
      "header": "RPN",
      "formula": "commonRpn",
      "width": 60,
      "cellRenderer": "rpn"
    }
  ],
  "enums": {
    "impactCategoryEnum": [
      { "id": "safety", "name": "Safety" },
      { "id": "financial", "name": "Financial" },
      { "id": "regulatory", "name": "Regulatory" },
      { "id": "reputation", "name": "Reputation" },
      { "id": "operational", "name": "Operational" }
    ],
    "affectedSystemEnum": [
      { "id": "braking", "name": "Braking System" },
      { "id": "steering", "name": "Steering System" },
      { "id": "powertrain", "name": "Powertrain" },
      { "id": "electrical", "name": "Electrical System" },
      { "id": "chassis", "name": "Chassis" }
    ]
  },
  "formulas": {
    "commonRpn": "function(info){ var value = info.item['occ']*info.item['det']*info.item['sev']; return value?value:null; }"
  },
  "cellDecorators": {
    "rpn": "function(info){ var val = info.value; $(info.cell).toggleClass('rpn1', val>0 && val<=150); $(info.cell).toggleClass('rpn2', val>150 && val<=350); $(info.cell).toggleClass('rpn3', val>350); }"
  },
  "styles": {
    ".rpn1": "{background-color: #eaf5e9 !important; color: #1d5f20 !important;}",
    ".rpn2": "{background-color: #fff3d2 !important; color: #735602 !important;}",
    ".rpn3": "{background-color: #f8eae7 !important; color: #ab1c00 !important;}"
  }
}
KB ArticlesSupport TicketsSource Code
  • GetSetUtil.java
  • AppConfig.ts
  • ExportToExcel.ts
  • RisksheetViewServlet.java
  • CustomMergeManager.ts