Skip to main content

Prerequisites

Before starting, ensure you have:
  • Risksheet installed and licensed in your Polarion project
  • Administrative access to edit risksheet.json
  • Severity and probability custom fields defined on your risk work item type
  • Familiarity with the configuration editor

When to Use Action Priority vs. RPN

The AIAG & VDA FMEA Handbook introduced Action Priority as a replacement for traditional RPN scoring. Rather than multiplying three numerical ratings, Action Priority maps severity and occurrence directly to action categories.
Low ProbabilityMedium ProbabilityHigh Probability
High SeverityFurther InvestigationUnacceptableUnacceptable
Medium SeverityAcceptableFurther InvestigationUnacceptable
Low SeverityAcceptableAcceptableFurther Investigation
Legend:
  • Acceptable — No action required
  • Further Investigation — Evaluate further, action recommended
  • Unacceptable — Action mandatory

Step 1 — Define Rating Enumerations

Configure severity and probability scales in the ratings section of risksheet.json:
{
  "ratings": {
    "severity": [
      { "id": "1", "name": "1 - Minor" },
      { "id": "2", "name": "2 - Moderate" },
      { "id": "3", "name": "3 - Significant" },
      { "id": "4", "name": "4 - Severe" },
      { "id": "5", "name": "5 - Critical" }
    ],
    "probability": [
      { "id": "1", "name": "1 - Remote" },
      { "id": "2", "name": "2 - Low" },
      { "id": "3", "name": "3 - Moderate" },
      { "id": "4", "name": "4 - High" },
      { "id": "5", "name": "5 - Very High" }
    ]
  }
}

Step 2 — Create the Risk Value Formula

Define a riskValue function in the formulas section that maps severity and probability to action categories using conditional logic:
{
  "formulas": {
    "riskValue": "function(info){ var sev = parseInt(info.item['severity']); var prob = parseInt(info.item['probability']); if(!sev || !prob) return null; if(sev >= 4 && prob >= 3) return 'Unacceptable'; if(sev >= 3 && prob >= 4) return 'Unacceptable'; if(sev >= 3 && prob >= 2) return 'Further Investigation'; if(sev >= 2 && prob >= 3) return 'Further Investigation'; return 'Acceptable'; }"
  }
}
This formula implements a matrix lookup using if-statement logic. Adjust the threshold combinations to match your organization’s risk acceptance criteria.
You can implement Action Priority using either direct if-statement functions (shown above) or a configurable risk matrix lookup table. The if-statement approach is simpler for smaller matrices. For complex matrices with many severity/probability combinations, consider a lookup object approach similar to the one shown in Configure HARA Workflows.

Step 3 — Configure the Risk Value Column

Add a calculated column that references the riskValue formula:
{
  "columns": [
    {
      "id": "severity",
      "binding": "customField_severity",
      "header": "Severity",
      "type": "enum",
      "width": 90
    },
    {
      "id": "probability",
      "binding": "customField_probability",
      "header": "Probability",
      "type": "enum",
      "width": 90
    },
    {
      "id": "actionPriority",
      "header": "Action Priority",
      "formula": "riskValue",
      "width": 140
    }
  ]
}
The actionPriority column is automatically read-only because it uses a formula property.

Step 4 — Add Conditional Formatting

Apply color-coded styling to the Action Priority column using cellDecorators and styles:
{
  "cellDecorators": {
    "actionPriority": "function(info){ var val = info.value; $(info.cell).toggleClass('apAcceptable', val==='Acceptable'); $(info.cell).toggleClass('apFurther', val==='Further Investigation'); $(info.cell).toggleClass('apUnacceptable', val==='Unacceptable'); }"
  },
  "styles": {
    ".apAcceptable": { "background-color": "#eaf5e9 !important", "color": "#1d5f20 !important", "font-weight": "600" },
    ".apFurther": { "background-color": "#fff3d2 !important", "color": "#735602 !important", "font-weight": "600" },
    ".apUnacceptable": { "background-color": "#f8eae7 !important", "color": "#ab1c00 !important", "font-weight": "600" }
  }
}
The result is a traffic-light display:
Action PriorityColorMeaning
AcceptableGreenNo further action required
Further InvestigationYellowEvaluate and decide on risk reduction
UnacceptableRedAction is mandatory

Step 5 — Apply to Row Headers (Optional)

For at-a-glance risk visibility, apply the same logic to the row header renderer:
{
  "headers": {
    "rowHeader": {
      "renderer": "rowHeaderAP"
    }
  },
  "cellDecorators": {
    "rowHeaderAP": "function(info){ var val = info.item['actionPriority']; $(info.cell).toggleClass('apAcceptable', val==='Acceptable'); $(info.cell).toggleClass('apFurther', val==='Further Investigation'); $(info.cell).toggleClass('apUnacceptable', val==='Unacceptable'); }"
  }
}

Customizing the Matrix

To adapt the Action Priority matrix to your specific risk acceptance criteria:
  1. Adjust thresholds — modify the if-statement conditions in the riskValue formula to change which severity/probability combinations map to each category
  2. Add categories — extend the formula with additional return values (e.g., “Monitor”, “Urgent”) and add matching styles
  3. Use numeric scores — if you prefer a numeric Action Priority score instead of categories, return a calculated number and use threshold-based cellDecorators similar to RPN formatting
The return values in your riskValue formula must match the string comparisons in your cellDecorators exactly, including case and spacing. A mismatch causes formatting to not be applied.

Verification

After saving your configuration:
  1. Reload the Risksheet document in your browser
  2. You should now see Severity and Probability input columns alongside the calculated Action Priority column
  3. Enter severity and probability values for a risk item — the Action Priority cell should display a color-coded category
  4. Verify that different severity/probability combinations produce the expected action categories

See Also

KB ArticlesSupport TicketsSource Code
  • RisksheetProjectProperties.java
  • AddTaskCommand.ts
  • AppConfig.ts
  • ResultFilter.java
  • PolarionAppConfigManager.java