Use when generating carve-out risk registers with probability x impact scoring, risk categories, mitigation plans, ownership, and top-risk prioritization.
Generate a project-specific risk register using carve-out risk patterns and templates.
BD_Risk-Register_template_en_V1.0_Dec2023.xlsx — the authoritative template for all new projects (V1.0 Dec 2023); use for structure, lookup ranges, and formattinggenerate_bravo_risk_register.py) — template-handling code reference only; never copy their risk descriptions, categories, owners, dates, or mitigation plans20240718_FRAME_IT Risk Assessment_completed.csv — FRAME reference data (methodology patterns only; never copy specific risk entries)| Sheet | Purpose |
|---|
Info | Project metadata (document ID, file name, project name, owner) |
Risk Register | Risk data table |
Matrix | Probability/Impact matrix — do not modify |
| Cell | Label |
|---|---|
C4 | Document ID |
C5 | File Name |
C6 | Project Name |
C7 | Project ID |
C8 | Document Owner |
| Col | Letter | Field |
|---|---|---|
| 2 | B | Risk ID (sequential) |
| 3 | C | Creation date |
| 4 | D | Risk category (see categories below) |
| 5 | E | Cause(s) |
| 6 | F | Event (risk description) |
| 7 | G | Effect(s) |
| 8 | H | Risk event date |
| 9 | I | Owner |
| 10 | J | Source |
| 12 | L | Impact (text: Very Low / Low / Moderate / High / Very High) |
| 13 | M | VLOOKUP: impact numeric — write formula explicitly |
| 14 | N | Probability (text: 10% / 30% / 50% / 70% / 90%) |
| 15 | O | VLOOKUP: probability numeric — write formula explicitly |
| 16 | P | threat or opportunity |
| 17 | Q | Matrix score = =M{row}*O{row} |
| 18 | R | Qualitative impact description |
| 19 | S | Monetary impact EUR current year |
| 20 | T | Monetary impact EUR 3 subsequent years |
| 22 | V | Risk response strategy (Avoid / Transfer / Mitigate / Accept / Exploit / Enhance / Share) |
| 23 | W | Measure (mitigation actions) |
| 24 | X | Due date |
| 26 | Z | Status (not started / in progress / on hold / implemented / cancelled) |
| 27 | AA | Reporting date |
| 28 | AB | Impact actual (same as L initially) |
| 29 | AC | VLOOKUP: actual impact numeric |
| 30 | AD | Probability actual (same as N initially) |
| 31 | AE | VLOOKUP: actual probability numeric |
| 32 | AF | =AC{row} |
| 33 | AG | =AE{row} |
| 34 | AH | =AF{row}*AG{row} (actual matrix score) |
| 35 | AI | Notes |
D140:D156 (17 values)D171:D175D182:E186D189:E193D196:E199D202:D208D213:D217These ranges are template-owned. Do not move or rewrite them in generated workbooks.
ws.cell(r, 13).value = f'=_xlfn.IFNA(VLOOKUP(L{r},$D$182:$E$186,2,FALSE),"")' # M - impact numeric
ws.cell(r, 15).value = f'=_xlfn.IFNA(VLOOKUP(N{r},$D$189:$E$193,2,FALSE),"")' # O - probability numeric
ws.cell(r, 17).value = f'=M{r}*O{r}' # Q - matrix score
ws.cell(r, 29).value = f'=_xlfn.IFNA(VLOOKUP(AB{r},$D$182:$E$186,2,FALSE),"")' # AC
ws.cell(r, 31).value = f'=_xlfn.IFNA(VLOOKUP(AD{r},$D$189:$E$193,2,FALSE),"")' # AE
ws.cell(r, 32).value = f'=AC{r}'
ws.cell(r, 33).value = f'=AE{r}'
ws.cell(r, 34).value = f'=AF{r}*AG{r}'
Matrix sheet is template-owned and should not be structurally modified.openpyxl, explicitly set black font on yellow-filled matrix cells (FFFFFF00, FFFFFFCC). Theme-inherited font colour may otherwise be lost on save, making yellow cells unreadable in Excel.Technology, R&D, Engineering, Manufacturing, Quality, Strategy & Portfolio, Budget, Schedule, Resources, Supply Chain, Market & Competitors, Customers, Raw Materials, Stakeholder Relations & Public Affairs, Intellectual Property, Legal & Compliance, Ecosystems & Ethics, Security & Data Protection
Formal Risk Review, SQA Audit/Review, Status Meeting, Stakeholder, Other
| 1–5 | Impact label | Probability |
|---|---|---|
| 1 | Very Low | 10% |
| 2 | Low | 30% |
| 3 | Moderate | 50% |
| 4 | High | 70% |
| 5 | Very High | 90% |
- over an em dash in scripted workbook text to avoid encoding corruption in Excel-bound outputs.Critical requirement: Risk identification must be systematic and comprehensive, evaluating all 17 risk categories and identifying realistic threats and opportunities specific to the project. A register with fewer than 15-20 risks (for standard IT carve-outs) is likely under-identified and will not meet M&A governance standards.
Process:
Market & Competitors, Raw Materials, Intellectual Property for IT-only carve-outs): Document and exclude with clear rationaleExploit (maximize upside) or Enhance (strengthen enablement)Critical requirement: Risk Cause (column E) and Event (column F) must be detailed and context-specific, not abbreviated or generic.
Cause Column (E) — Root Factors with Project Quantification:
Event Column (F) — Specific Failure Scenarios:
Best Reference: Examine active-projects/Zebra/Zebra_Risk_Register.xlsx rows 5-14 for professional elaboration pattern showing project-specific risk narratives.
sys.path.insert(0, os.path.join(os.path.expanduser("~"), "py_packages")) before importing openpyxl.C:/Program Files/px/python.exe..xls files as source data — they may be XML-format XLS which openpyxl cannot parse. Embed risk data directly in the generation script as a Python list/dict structure.load_workbook(template_path) to open BD_Risk-Register_template_en_V1.0_Dec2023.xlsx; populate cells, then wb.save(output_path)..xlsx — never .xls or .csv only..xlsx file using BD_Risk-Register_template_en_V1.0_Dec2023.xlsx as the base — not a blank workbook, not the old Risk_analysis_template.xlsx.<ProjectName>/<ProjectName>_Risk_Register.xlsx.AlphaX/AlphaX_Risk_Register_Template.xlsx or Risk_analysis_template.xlsx as the template — they are deprecated.