Skip to main content

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:
LikelihoodS1 (Minimal)S2 (Minor)S3 (Serious)S4 (Catastrophic)
L5 (Very High)MediumHighCriticalCritical
L4 (High)LowMediumHighCritical
L3 (Medium)LowMediumMediumHigh
L2 (Low)LowLowMediumHigh
L1 (Very Low)LowLowLowMedium
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 NameTypePurposeNotes
hazardIdStringUnique identifier for hazard trackingMust follow project naming convention (e.g., HAZ-001)
hazardDescriptionStringPrimary description of the hazardous eventShould be specific and measurable; describes the hazard (not the harm)
initialSeverityEnum (S1–S4)Pre-mitigation severity ratingRequired for initial risk matrix calculation
initialLikelihoodEnum (L1–L5)Pre-mitigation likelihood ratingFrequency-based probability of hazard occurrence
residualSeverityEnum (S1–S4)Post-mitigation severity ratingPopulated after risk controls are defined
residualLikelihoodEnum (L1–L5)Post-mitigation likelihood ratingReflects residual risk after control effectiveness
initialRiskEnumCalculated initial risk level (low/medium/high/critical/pending)Auto-populated or manually assigned
residualRiskEnumCalculated residual risk level (low/medium/high/critical/pending)Populated after control closure

Optional Fields

Field NameTypePurposeNotes
hazardSourceStringOrigin or root cause of the hazardE.g., component failure, environmental condition, human error
hazardMechanismStringHow the hazard source leads to the hazardous eventDescribes causal pathway: Source → Mechanism → Hazard
operationalPhaseEnumVehicle operational mode when hazard occursE.g., ignition, normal driving, parking, maintenance; relates to ISO 26262 Exposure
hazardCategoryEnumHazard classification typeE.g., functional safety, cybersecurity, environmental
hazidCauseString (or links)Root causes or contributing factorsHAZID analysis field; may transition to formal FMEA cause work items
hazidConsequenceString (or links)Potential harms resulting from the hazardRelates 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:

1. Document Header

#nxDocHeaderGray("HAZID Risk Matrix Report")
#nxDocInfoItem("Project", "$project.name")
#nxDocInfoItem("Generated", "$page.reference.updated")
#nxDocInfoItem("Total Hazards", "$hazardCount")
Properties:
PropertyTypeDefaultDescription
titleString”HAZID Risk Matrix Report”Report page title displayed in header banner
projectIdStringAutoCurrent project identifier from Polarion context
generatedDateTimestampAutoPage last modified date or auto-generation timestamp
hazardCountIntegerAutoTotal 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:
StepDescriptionConstraint
QueryRetrieve all hazard work items from Polarion projectRequires type:hazard Lucene query
IterateLoop through each hazard and read initialRisk enum valueSkips hazards with missing or pending values
CountTally counts by risk level categoryProduces LinkedHashMap with 5 entries (low/medium/high/critical/pending)
TotalSum all hazard counts to verify dataset completenessTotal should match $hazardCount
Configuration:
PropertyTypeDefaultDescription
initialRiskFieldString”initialRisk”Custom field name containing pre-mitigation risk classification
riskLevelEnumList[low, medium, high, critical, pending]Allowed enumeration values; used for bucketing
skipPendingBooleanfalseIf 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:
PropertyTypeDefaultDescription
titleString”Initial Risk Matrix”Displayed above the matrix visualization
severityFieldString”initialSeverity”Hazard custom field containing S1–S4 values
likelihoodFieldString”initialLikelihood”Hazard custom field containing L1–L5 values
dimensionString”5x4”Matrix dimensions (5 likelihood levels × 4 severity levels)
colorCodingEnum”riskLevel”Color scheme: riskLevel (low/med/high/critical) or custom
cellContentEnum”count”Display mode: count (number of hazards) or list (hazard IDs)
thresholdInteger0Minimum 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:
PropertyTypeDefaultDescription
residualRiskFieldString”residualRisk”Custom field name containing post-mitigation risk classification
includeResidualBooleantrueIf false, omit residual matrix (only show initial risk)
renderIfMissingBooleanfalseIf 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:
PropertyTypeDefaultDescription
titleString”Residual Risk Matrix”Displayed above the residual matrix visualization
severityFieldString”residualSeverity”Hazard custom field containing post-mitigation S1–S4 values
likelihoodFieldString”residualLikelihood”Hazard custom field containing post-mitigation L1–L5 values
showComparisonBooleanfalseIf 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:
PropertyTypeDefaultDescription
countIntegerNumber of hazards in this risk level category
labelStringCard title (e.g., “Low Risk”, “Critical Risk”)
percentageInteger (0–100)CalculatedPercentage of total hazards in this category
colorHex colorBackground 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:
PropertyTypeDefaultDescription
severityScaleString”S1-S4”Severity enumeration range (4 levels)
likelihoodScaleString”L1-L5”Likelihood enumeration range (5 levels)
matrixFormulaString”automotive-standard”Predefined matrix: automotive-standard, iatf, iso14971, custom
customFormulaJSONUser-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:
  1. Identify risk concentration — See which Severity × Likelihood combinations have the most hazards
  2. Assess control effectiveness — Compare initial vs. residual matrices to verify risk reduction
  3. Prioritize mitigation — Focus design/verification efforts on high/critical risk zones
  4. 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:
LinkTargetPurpose
HARA Reportreference/reports/hara-report.mdFormal ISO 26262 ASIL-based hazard analysis
HAZID Risksheet Configurationreference/risksheet-configs/hazid-risksheet.mdColumn layout, formulas, views for HAZID module
Hazard Work Item Typereference/work-item-types/hazard.mdField definitions and traceability roles
Risk Probability Enumerationreference/enumerations/risk-probability.mdLikelihood scale definitions
Risk Level Enumerationreference/enumerations/risk-level.mdRisk 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({...})
MacroPurposeParameters
#nxDocHeaderGray()Standard report header with metadatatitle, project, generated date
#nxRiskMatrix()Visual risk heatmap renderingseverityField, likelihoodField, dimension, colorCoding
#nxSummaryCardPct()Color-coded summary KPI cardscount, label, percentage, color
#nxCountByEnum()Generic enum value distributionfield, targetType, emptyLabel
#nxLinkCoverage()Traceability gap detectionsourceType, 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"
})

Version Information

ComponentVersionNotes
Report Template1.0Initial HAZID matrix report implementation
Nextedy Solutions Macro Library4.2+Requires nxRiskMatrix and nxSummaryCardPct macros
Polarion Minimum Version2404Supports Velocity templating and custom field enums
TestAuto2 Solution2.0+Integrated into Risks space dashboard