> ## Documentation Index
> Fetch the complete documentation index at: https://learn.nextedy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Set Up Action Priority Matrix

> Configure an Action Priority (AP) matrix in Nextedy RISKSHEET as an alternative to Risk Priority Number (RPN) scoring, using severity and probability to classify risks into High, Medium, and Low action priorities.

export const LastReviewed = ({date}) => {
  if (!date) return null;
  const formatted = new Date(`${date}T00:00:00Z`).toLocaleDateString("en-US", {
    year: "numeric",
    month: "long",
    day: "numeric",
    timeZone: "UTC"
  });
  return <p className="mt-10 text-sm text-gray-400 dark:text-zinc-500 not-prose">
      Last reviewed on {formatted}
    </p>;
};

## Prerequisites

Before starting, ensure you have:

* Risksheet installed and licensed in your Siemens Polarion ALM project
* Administrative access to edit the sheet configuration
* Severity and probability rating enumerations defined in Polarion **Administration > Enumerations**
* Custom fields on your risk work item type bound to those enumerations
* Familiarity with the [configuration editor](/risksheet/guides/configuration/using-config-editor)

## When to Use Action Priority vs. RPN

The AIAG & VDA Failure Mode and Effects Analysis (FMEA) Handbook introduced Action Priority as a replacement for traditional RPN scoring. Rather than multiplying three numerical ratings, Action Priority maps severity and occurrence (or probability) directly to action categories.

|                     | **Low Probability**   | **Medium Probability** | **High Probability**  |
| ------------------- | --------------------- | ---------------------- | --------------------- |
| **High Severity**   | Further Investigation | Unacceptable           | Unacceptable          |
| **Medium Severity** | Acceptable            | Further Investigation  | Unacceptable          |
| **Low Severity**    | Acceptable            | Acceptable             | Further Investigation |

**Legend:**

* **Acceptable** -- No action required
* **Further Investigation** -- Evaluate further, action recommended
* **Unacceptable** -- Action mandatory

Risksheet is a generic risk-analysis tool. It supports FMEA, Hazard Analysis and Risk Assessment (HARA), Threat Analysis and Risk Assessment (TARA), STRIDE, and Common Vulnerability Scoring System (CVSS). Start from the closest Nextedy solution template for your industry, then adjust the configuration to match your process — do not build from a blank file.

<Steps>
  <Step title="Define Rating Scales as Polarion Enumerations">
    Risksheet does not define rating scales inside the sheet configuration. Instead, rating values live in standard Polarion enumerations, and the sheet configuration references them by enum ID.

    1. In Polarion, go to **Administration > Enumerations** for your project (or the global scope).
    2. Create two enumerations, for example `risk-severity` and `risk-probability`. Add values such as `1 - Minor`, `2 - Moderate`, `3 - Significant`, `4 - Severe`, `5 - Critical` for severity and a comparable set for probability.
    3. On your risk work item type, define two custom fields — for example `severity` and `probability` — each typed as the corresponding enumeration.

    The Risksheet server loads enum values automatically when a column declares `type: rating:<enumId>` and `bindings: <fieldId>`. No rating definitions are duplicated in the sheet configuration.
  </Step>

  <Step title="Create the Risk Value Formula">
    Define a `riskValue` function in the `formulas` section of the sheet configuration. The formula maps severity and probability to action categories using conditional logic:

    ```yaml theme={null}
    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';
        }
    ```

    Adjust the threshold combinations to match your organization's risk acceptance criteria.

    <Tip title="Two approaches for Action Priority">
      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 small matrices. For complex matrices with many severity/probability combinations, consider a lookup object approach similar to the one shown in [Configure HARA Workflows](/risksheet/guides/risk-management/hara-configuration). For regulated environments, externalize complex matrix logic into `risksheetTopPanel.vm` and call it from a thin wrapper formula here.
    </Tip>
  </Step>

  <Step title="Configure the Risk Value Column">
    Add severity, probability, and a calculated column that references the `riskValue` formula. Note the rating type syntax `rating:<enumId>`, which loads enum values from Polarion automatically:

    ```yaml theme={null}
    columns:
      - id: severity
        bindings: severity
        header: Severity
        type: rating:risk-severity
        width: 90
      - id: probability
        bindings: probability
        header: Probability
        type: rating:risk-probability
        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>

  <Step title="Add Conditional Formatting">
    Apply color-coded styling to the Action Priority column using `cellDecorators` and `styles`. Use `toggleClass` so cells reuse classes correctly during scrolling:

    ```yaml theme={null}
    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;}'
    ```

    Style values must be wrapped in `{}` braces. The result is a traffic-light display:

    | Action Priority       | Color  | Meaning                               |
    | --------------------- | ------ | ------------------------------------- |
    | Acceptable            | Green  | No further action required            |
    | Further Investigation | Yellow | Evaluate and decide on risk reduction |
    | Unacceptable          | Red    | Action is mandatory                   |
  </Step>

  <Step title="Apply to Row Headers (Optional)">
    For at-a-glance risk visibility, apply the same logic to the row header renderer, using the same jQuery `$(info.cell).toggleClass(...)` form as cell decorators (the form the product's reference templates use):

    ```yaml theme={null}
    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');
        }
    ```
  </Step>
</Steps>

## 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 (for example "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](/risksheet/guides/risk-management/fmea-configuration).

<Warning title="Category strings must match exactly">
  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.
</Warning>

## Verification

After saving the sheet 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

* [Configure FMEA Workflows](/risksheet/guides/risk-management/fmea-configuration) -- traditional RPN-based risk assessment
* [Set Up Risk Matrices](/risksheet/guides/risk-management/risk-matrices) -- custom matrix configurations
* [Configure Calculated Columns](/risksheet/guides/columns/calculated-columns) -- formula syntax reference
* [Apply Conditional Formatting](/risksheet/guides/styling/conditional-formatting) -- additional cell styling options
* [Configure HARA Workflows](/risksheet/guides/risk-management/hara-configuration) -- HARA with risk matrix lookup

<LastReviewed date="2026-06-24" />
