Report Purpose
The HAZID Risk Matrix Report generates executive-level visual risk distribution matrices showing how identified hazards are distributed across Severity × Likelihood combinations before and after mitigation. This dashboard supports preliminary hazard analysis (HAZID) workflows and provides a quick visual assessment of risk concentration across the system.
HAZID Risk Matrix analysis typically precedes formal ISO 26262 HARA (Hazard Analysis and Risk Assessment). The HAZID matrix provides initial risk visibility; HARA later applies formal ASIL classification based on Severity, Exposure, and Controllability parameters.
Risk Matrix Structure
The report implements a standard 5×4 risk matrix combining Severity (S1–S4) and Likelihood (L1–L5) dimensions:
| Likelihood | S1 (Minimal) | S2 (Minor) | S3 (Serious) | S4 (Catastrophic) |
|---|
| L5 (Very High) | Medium | High | Critical | Critical |
| L4 (High) | Low | Medium | High | Critical |
| L3 (Medium) | Low | Medium | Medium | High |
| L2 (Low) | Low | Low | Medium | High |
| L1 (Very Low) | Low | Low | Low | Medium |
Risk Level Color Coding:
Low = Green (#4CAF50)
Medium = Orange (#FF9800)
High = Red-Orange (#ff5722)
Critical = Dark Red (#f44336)
Hazard Data Model
The report operates on hazard work items with the following custom fields:
Required Fields
| Field Name | Type | Purpose | Notes |
|---|
hazardId | String | Unique identifier for hazard tracking | Must follow project naming convention (e.g., HAZ-001) |
hazardDescription | String | Primary description of the hazardous event | Should be specific and measurable; describes the hazard (not the harm) |
initialSeverity | Enum (S1–S4) | Pre-mitigation severity rating | Required for initial risk matrix calculation |
initialLikelihood | Enum (L1–L5) | Pre-mitigation likelihood rating | Frequency-based probability of hazard occurrence |
residualSeverity | Enum (S1–S4) | Post-mitigation severity rating | Populated after risk controls are defined |
residualLikelihood | Enum (L1–L5) | Post-mitigation likelihood rating | Reflects residual risk after control effectiveness |
initialRisk | Enum | Calculated initial risk level (low/medium/high/critical/pending) | Auto-populated or manually assigned |
residualRisk | Enum | Calculated residual risk level (low/medium/high/critical/pending) | Populated after control closure |
Optional Fields
| Field Name | Type | Purpose | Notes |
|---|
hazardSource | String | Origin or root cause of the hazard | E.g., component failure, environmental condition, human error |
hazardMechanism | String | How the hazard source leads to the hazardous event | Describes causal pathway: Source → Mechanism → Hazard |
operationalPhase | Enum | Vehicle operational mode when hazard occurs | E.g., ignition, normal driving, parking, maintenance; relates to ISO 26262 Exposure |
hazardCategory | Enum | Hazard classification type | E.g., functional safety, cybersecurity, environmental |
hazidCause | String (or links) | Root causes or contributing factors | HAZID analysis field; may transition to formal FMEA cause work items |
hazidConsequence | String (or links) | Potential harms resulting from the hazard | Relates to Harm work item type; text consequences link to severity-rated harm items |
Report Dashboard Architecture
The HAZID Risk Matrix Report is implemented as a Velocity dashboard template with the following components:
#nxDocHeaderGray("HAZID Risk Matrix Report")
#nxDocInfoItem("Project", "$project.name")
#nxDocInfoItem("Generated", "$page.reference.updated")
#nxDocInfoItem("Total Hazards", "$hazardCount")
Properties:
| Property | Type | Default | Description |
|---|
title | String | ”HAZID Risk Matrix Report” | Report page title displayed in header banner |
projectId | String | Auto | Current project identifier from Polarion context |
generatedDate | Timestamp | Auto | Page last modified date or auto-generation timestamp |
hazardCount | Integer | Auto | Total count of hazard work items in analysis |
2. Initial Risk Distribution Calculation
#set($initialRiskCounts = {
"low": 0,
"medium": 0,
"high": 0,
"critical": 0,
"pending": 0
})
#foreach($hazard in $hazards)
#set($riskLevel = $hazard.customFields.initialRisk.name.toLowerCase())
#set($count = $initialRiskCounts.get($riskLevel))
#set($void = $initialRiskCounts.put($riskLevel, $count + 1))
#end
Logic:
| Step | Description | Constraint |
|---|
| Query | Retrieve all hazard work items from Polarion project | Requires type:hazard Lucene query |
| Iterate | Loop through each hazard and read initialRisk enum value | Skips hazards with missing or pending values |
| Count | Tally counts by risk level category | Produces LinkedHashMap with 5 entries (low/medium/high/critical/pending) |
| Total | Sum all hazard counts to verify dataset completeness | Total should match $hazardCount |
Configuration:
| Property | Type | Default | Description |
|---|
initialRiskField | String | ”initialRisk” | Custom field name containing pre-mitigation risk classification |
riskLevelEnum | List | [low, medium, high, critical, pending] | Allowed enumeration values; used for bucketing |
skipPending | Boolean | false | If true, exclude pending-status hazards from percentages (count separately) |
3. Initial Risk Matrix Visualization
#nxRiskMatrix({
"title": "Initial Risk Distribution (Pre-Mitigation)",
"severityField": "initialSeverity",
"likelihoodField": "initialLikelihood",
"dimension": "5x4",
"colorCoding": "riskLevel"
})
Properties:
| Property | Type | Default | Description |
|---|
title | String | ”Initial Risk Matrix” | Displayed above the matrix visualization |
severityField | String | ”initialSeverity” | Hazard custom field containing S1–S4 values |
likelihoodField | String | ”initialLikelihood” | Hazard custom field containing L1–L5 values |
dimension | String | ”5x4” | Matrix dimensions (5 likelihood levels × 4 severity levels) |
colorCoding | Enum | ”riskLevel” | Color scheme: riskLevel (low/med/high/critical) or custom |
cellContent | Enum | ”count” | Display mode: count (number of hazards) or list (hazard IDs) |
threshold | Integer | 0 | Minimum hazard count to display cell (hides zero cells if >0) |
4. Residual Risk Distribution Calculation
#set($residualRiskCounts = {
"low": 0,
"medium": 0,
"high": 0,
"critical": 0,
"pending": 0
})
#foreach($hazard in $hazards)
#if($hazard.customFields.residualRisk)
#set($riskLevel = $hazard.customFields.residualRisk.name.toLowerCase())
#set($count = $residualRiskCounts.get($riskLevel))
#set($void = $residualRiskCounts.put($riskLevel, $count + 1))
#end
#end
Configuration:
| Property | Type | Default | Description |
|---|
residualRiskField | String | ”residualRisk” | Custom field name containing post-mitigation risk classification |
includeResidual | Boolean | true | If false, omit residual matrix (only show initial risk) |
renderIfMissing | Boolean | false | If true, render residual matrix even if many hazards lack residual assessment |
5. Residual Risk Matrix Visualization
#nxRiskMatrix({
"title": "Residual Risk Distribution (Post-Mitigation)",
"severityField": "residualSeverity",
"likelihoodField": "residualLikelihood",
"dimension": "5x4",
"colorCoding": "riskLevel"
})
Residual Matrix Properties:
| Property | Type | Default | Description |
|---|
title | String | ”Residual Risk Matrix” | Displayed above the residual matrix visualization |
severityField | String | ”residualSeverity” | Hazard custom field containing post-mitigation S1–S4 values |
likelihoodField | String | ”residualLikelihood” | Hazard custom field containing post-mitigation L1–L5 values |
showComparison | Boolean | false | If true, overlay initial vs. residual matrices side-by-side for control effectiveness visualization |
6. Risk Level Summary Cards
#nxSummaryCardPct($initialRiskCounts.low, "Low Risk",
$math.round($initialRiskCounts.low / $hazardCount * 100), "#4CAF50")
#nxSummaryCardPct($initialRiskCounts.medium, "Medium Risk",
$math.round($initialRiskCounts.medium / $hazardCount * 100), "#FF9800")
#nxSummaryCardPct($initialRiskCounts.high, "High Risk",
$math.round($initialRiskCounts.high / $hazardCount * 100), "#ff5722")
#nxSummaryCardPct($initialRiskCounts.critical, "Critical Risk",
$math.round($initialRiskCounts.critical / $hazardCount * 100), "#f44336")
Summary Card Properties:
| Property | Type | Default | Description |
|---|
count | Integer | — | Number of hazards in this risk level category |
label | String | — | Card title (e.g., “Low Risk”, “Critical Risk”) |
percentage | Integer (0–100) | Calculated | Percentage of total hazards in this category |
color | Hex color | — | Background color for visual emphasis (#4CAF50 green, #FF9800 orange, etc.) |
Risk Level Classification Algorithm
The report computes risk level from Severity × Likelihood combinations using this automotive-standard mapping:
S1 + L1–L4 = Low | S1 + L5 = Medium
S2 + L1–L2 = Low | S2 + L3–L4 = Medium | S2 + L5 = High
S3 + L1 = Low | S3 + L2–L3 = Medium | S3 + L4 = High | S3 + L5 = Critical
S4 + L1 = Medium | S4 + L2 = High | S4 + L3–L5 = Critical
Algorithm Configuration:
| Property | Type | Default | Description |
|---|
severityScale | String | ”S1-S4” | Severity enumeration range (4 levels) |
likelihoodScale | String | ”L1-L5” | Likelihood enumeration range (5 levels) |
matrixFormula | String | ”automotive-standard” | Predefined matrix: automotive-standard, iatf, iso14971, custom |
customFormula | JSON | — | User-defined risk classification rules if matrixFormula=“custom” |
Report Workflow Integration
The HAZID Risk Matrix Report typically appears in the Risks space dashboard alongside other risk artifacts (ISO 26262 HARA Report, FMEA reports). Users access it to:
- Identify risk concentration — See which Severity × Likelihood combinations have the most hazards
- Assess control effectiveness — Compare initial vs. residual matrices to verify risk reduction
- Prioritize mitigation — Focus design/verification efforts on high/critical risk zones
- Generate evidence — Export matrix for functional safety documentation and audit
Prerequisites
- Hazard work items created with severity and likelihood values populated
- HAZID document with risksheet configuration containing hazard list
- Custom fields initialSeverity, initialLikelihood, initialRisk configured on Hazard type
- (Optional) Custom fields residualSeverity, residualLikelihood, residualRisk for post-mitigation tracking
Cross-Document References
The report links to related analysis artifacts:
| Link | Target | Purpose |
|---|
| HARA Report | reference/reports/hara-report.md | Formal ISO 26262 ASIL-based hazard analysis |
| HAZID Risksheet Configuration | reference/risksheet-configs/hazid-risksheet.md | Column layout, formulas, views for HAZID module |
| Hazard Work Item Type | reference/work-item-types/hazard.md | Field definitions and traceability roles |
| Risk Probability Enumeration | reference/enumerations/risk-probability.md | Likelihood scale definitions |
| Risk Level Enumeration | reference/enumerations/risk-level.md | Risk level categories and color coding |
Dashboard Macro Integration
The report uses Nextedy Solutions Velocity macros for consistent formatting:
#parse("nextedy_solutions.vm")
#nxDocHeaderGray("HAZID Risk Matrix Report")
#nxRiskMatrix({...})
#nxSummaryCardPct({...})
#nxCoverageBar({...})
| Macro | Purpose | Parameters |
|---|
#nxDocHeaderGray() | Standard report header with metadata | title, project, generated date |
#nxRiskMatrix() | Visual risk heatmap rendering | severityField, likelihoodField, dimension, colorCoding |
#nxSummaryCardPct() | Color-coded summary KPI cards | count, label, percentage, color |
#nxCountByEnum() | Generic enum value distribution | field, targetType, emptyLabel |
#nxLinkCoverage() | Traceability gap detection | sourceType, linkRole, targetType |
Configuration Example
To customize the HAZID Risk Matrix Report for a project, configure the following in the dashboard template:
## HAZID Risk Matrix Report Configuration
#set($config = {
"title": "HAZID Risk Matrix - AEB System",
"projectId": "TestAuto2",
"hazardQuery": "type:hazard AND space:Risks",
"severityField": "initialSeverity",
"likelihoodField": "initialLikelihood",
"riskField": "initialRisk",
"matrixDimension": "5x4",
"colorScheme": "automotive-standard",
"showResidualMatrix": true,
"residualSeverityField": "residualSeverity",
"residualLikelihoodField": "residualLikelihood",
"residualRiskField": "residualRisk",
"summaryCardsVisible": true,
"exportFormat": "pdf"
})
| Component | Version | Notes |
|---|
| Report Template | 1.0 | Initial HAZID matrix report implementation |
| Nextedy Solutions Macro Library | 4.2+ | Requires nxRiskMatrix and nxSummaryCardPct macros |
| Polarion Minimum Version | 2404 | Supports Velocity templating and custom field enums |
| TestAuto2 Solution | 2.0+ | Integrated into Risks space dashboard |