Skip to main content

Prerequisites

Before starting, ensure you have:
  • Risksheet installed and licensed in your Polarion project
  • Administrative access to edit risksheet.json configuration
  • Custom work item types defined in Polarion for your FMEA structure (e.g., failure modes, risk items)
  • Familiarity with the configuration editor

FMEA Structure Overview

A typical FMEA Risksheet uses a multi-level hierarchy to organize failure modes, causes, effects, and mitigations. diagram

Step 1 — Define Data Types

Configure the risk and task work item types in the dataTypes section of risksheet.json:
{
  "dataTypes": {
    "risk": {
      "type": "failureMode",
      "role": "relates_to",
      "removeStrategy": "delete",
      "rejectedAction": "reject",
      "rejectedStatus": "rejected",
      "rejectedResolution": "invalid"
    },
    "task": {
      "type": "mitigationAction",
      "role": "mitigates",
      "showInMenu": true
    }
  }
}
Replace failureMode and mitigationAction with your actual Polarion work item type IDs.
When using custom work item types (e.g., wit_failureMode, wit_measure), the type value must match the Polarion type ID precisely. A mismatch causes configuration errors such as For input string: nice_to_have when enum values cannot be resolved for the specified type.

Step 2 — Configure Levels

Define the hierarchical structure that controls cell merging and row grouping:
{
  "levels": [
    {
      "controlColumn": "systemElement",
      "showInMenu": true
    },
    {
      "controlColumn": "failureModeId",
      "showInMenu": true
    }
  ]
}
The controlColumn value must exactly match the id property of the corresponding column in your columns array. Mismatched IDs between levels and column definitions cause row duplication in the Risksheet display.

Step 3 — Set Up RPN Formulas

Define Risk Priority Number formulas in the formulas section. A standard FMEA uses Severity x Occurrence x Detection:
{
  "formulas": {
    "commonRpn": "function(info){ var value = info.item['occ']*info.item['det']*info.item['sev']; return value?value:null;}",
    "commonRpnNew": "function(info){ var value = info.item['occNew']*info.item['detNew']*info.item['sevNew']; return value?value:null; }"
  }
}
The commonRpn formula calculates the initial RPN before mitigations. The commonRpnNew formula calculates the revised RPN after mitigations are applied. Reference these formulas in your column definitions using the formula property.

Step 4 — Configure Rating Enumerations

Define severity, occurrence, and detection scales in the ratings section:
{
  "ratings": {
    "severity": [
      { "id": "1", "name": "1 - No Effect", "description": "No noticeable effect" },
      { "id": "2", "name": "2 - Very Minor", "description": "Very minor impact" },
      { "id": "5", "name": "5 - Moderate", "description": "Moderate impact on function" },
      { "id": "8", "name": "8 - Very High", "description": "Major impact on safety" },
      { "id": "10", "name": "10 - Hazardous", "description": "Affects safety without warning" }
    ],
    "occurrence": [
      { "id": "1", "name": "1 - Remote", "description": "Failure unlikely" },
      { "id": "5", "name": "5 - Moderate", "description": "Occasional failure" },
      { "id": "10", "name": "10 - Very High", "description": "Persistent failure" }
    ]
  }
}
Define ratings to restrict user input to valid scale values (e.g., 1—10). This prevents invalid entries and ensures RPN calculations produce meaningful results.

Step 5 — Add Conditional Formatting for RPN

Apply color-coded risk thresholds using cellDecorators and styles:
{
  "cellDecorators": {
    "rpn": "function(info){ var val = info.value; $(info.cell).toggleClass('boldCol', true); $(info.cell).toggleClass('rpn1', val>0 && val<=150); $(info.cell).toggleClass('rpn2', val>150 && val<=350); $(info.cell).toggleClass('rpn3', val>350); }"
  },
  "styles": {
    ".boldCol": { "font-weight": "600" },
    ".rpn1": { "background-color": "#eaf5e9 !important", "color": "#1d5f20 !important" },
    ".rpn2": { "background-color": "#fff3d2 !important", "color": "#735602 !important" },
    ".rpn3": { "background-color": "#f8eae7 !important", "color": "#ab1c00 !important" }
  }
}
This creates three risk bands:
RPN RangeColorRisk Level
1—150GreenLow
151—350YellowMedium
> 350RedHigh
Apply the same decorator to the row header for at-a-glance risk visibility by setting headers.rowHeader.renderer to rowHeaderRpnNew:
{
  "headers": {
    "rowHeader": {
      "renderer": "rowHeaderRpnNew"
    },
    "columnHeader": {
      "height": 32
    }
  },
  "cellDecorators": {
    "rowHeaderRpnNew": "function(info){ var val = info.item['rpnNew']; $(info.cell).toggleClass('rpn1', val>0 && val <= 150); $(info.cell).toggleClass('rpn2', val>0 && val > 150 && val <= 350); $(info.cell).toggleClass('rpn3', val>0 && val > 350); }"
  }
}

Step 6 — Configure Before/After Mitigation Columns

FMEA methodology requires tracking risk before and after mitigation. Add a second set of rating columns with the New suffix for post-mitigation values:
{
  "columns": [
    { "id": "sev", "binding": "customField_severity", "header": "S", "type": "enum", "width": 60 },
    { "id": "occ", "binding": "customField_occurrence", "header": "O", "type": "enum", "width": 60 },
    { "id": "det", "binding": "customField_detection", "header": "D", "type": "enum", "width": 60 },
    { "id": "rpn", "header": "RPN", "formula": "commonRpn", "width": 80 },
    { "id": "sevNew", "binding": "customField_severityNew", "header": "S (After)", "type": "enum", "width": 60 },
    { "id": "occNew", "binding": "customField_occurrenceNew", "header": "O (After)", "type": "enum", "width": 60 },
    { "id": "detNew", "binding": "customField_detectionNew", "header": "D (After)", "type": "enum", "width": 60 },
    { "id": "rpnNew", "header": "RPN (After)", "formula": "commonRpnNew", "width": 80 }
  ]
}

DFMEA and SFMEA Variants

Risksheet supports multiple FMEA types through configuration variants:
  • PFMEA (Process FMEA) — Level 1 is Process Step, Level 2 is Failure Mode
  • DFMEA (Design FMEA) — Level 1 is System Element or Function, Level 2 is Failure Mode / Potential Cause
  • SFMEA (Safety FMEA) — Adapted for safety-critical analysis with ISO 26262 alignment
Some DFMEA templates include built-in upstream linkages (e.g., Failure Mode to Potential Cause) that work automatically without explicit upstreamChains configuration. Test your specific template to determine which linkages require explicit configuration versus those handled automatically.
For upstream traceability to design requirements, see Configure Upstream Traceability Columns.

Aggregating Data Across Rows

In FMEA workflows, you may need to aggregate values from child risk items into the parent process step row. Use the getMasterRowsByColumnValue formula function (available since v24.9.1):
{
  "formulas": {
    "aggregateChars": "function(info){ var rows = risksheet.ds.getMasterRowsByColumnValue(info, 'processCharacteristic'); return rows.join(', '); }"
  }
}
This collects unique values from child failure mode items and displays them in the parent row.

Best Practices

  • Title generation — use formulas to auto-generate risk item titles from related fields (e.g., hazardous situation + harm) to prevent linking errors with untitled items
  • Split large sheets — separate Design FMEA and Process FMEA into dedicated Risksheets rather than combining all columns in one sheet to improve performance
  • Limit multiItemLink columns — performance degrades primarily from the number of item-link columns, not row count
  • Template inheritance — store your FMEA configuration in a global template and override only per-document specifics
Items without titles cause linking errors in Risksheet. Use formula-based title auto-generation from related fields to avoid this issue. This was resolved in Risksheet v24.10.1, but the auto-title pattern remains a recommended best practice.

Troubleshooting

IssueCauseSolution
Duplicated rows in gridColumn IDs in levels or sortBy do not match column definitionsVerify controlColumn values match actual column id properties
For input string errorEnum values not properly mapped for custom work item typeVerify work item type ID matches Polarion type exactly
RPN shows nullRating fields are empty or not numericEnsure formulas reference correct field bindings (sev, occ, det)
Save error on custom fieldsCustom Polarion validation scripts conflict with RisksheetReview custom workflow scripts for save compatibility
Slow loading with many columnsToo many item-link columns in a single sheetSplit into dedicated sheets per FMEA type

Verification

After saving your configuration:
  1. Reload the Risksheet document in your browser
  2. You should now see the multi-level FMEA structure with system elements at Level 1 and failure modes at Level 2
  3. RPN columns should display calculated values with color-coded risk bands (green, yellow, red)
  4. Confirm you can create downstream mitigation tasks from the context menu

See Also

KB ArticlesSupport TicketsSource Code
  • risksheet.json
  • RisksheetProjectProperties.java
  • PolarionAppConfigManager.java
  • AppConfig.ts
  • RisksheetViewServlet.java