02 — System Diagram

🔍 Open the Interactive Diagram Viewer — pan, mouse-wheel zoom, fit-to-screen, full-screen, per-area tabs, the full ERD, and a focus mode that draws one model and its neighbours at a chosen depth. LegacySystem is a hub table, so its links can be hidden to declutter the overview.

Regenerate the viewer after any DSL, menu_config.yaml or diagram_config.yaml change: python scripts/build_diagram_viewer.py lsrr.

The assurance spine

flowchart TD
  Entity[Entity]
  Sys[LegacySystem]
  Svc[BusinessService]
  SvcD[ServiceDependency]
  SysD[SystemDependency]
  Obs[ObsolescenceAssessment]
  Risk[Risk]
  CC[CompensatingControl]
  ER[EvidenceRequirement]
  EV[EvidenceSubmission]
  Repl[ReplacementInitiative]
  MS[ReplacementMilestone]
  Dep[ReplacementDependency]
  Cut[CutoverReadiness]
  Ret[RetirementPlan]
  Dec[AssuranceDecision]
  SH[StatusHistory]

  Entity --> Sys
  Entity --> Svc
  Svc --> SvcD
  Sys --> SvcD
  Sys --> SysD
  Sys --> Obs
  Sys --> Risk
  Risk --> CC
  Sys --> CC
  Sys --> ER
  ER --> EV
  Sys --> Repl
  Repl --> MS
  Repl --> Dep
  Repl --> Cut
  Sys --> Ret
  Repl --> Ret
  Sys --> Dec
  Sys --> SH

How to read it

  • LegacySystem is the hub. Dependencies, obsolescence, risks, controls, evidence, the replacement, retirement and status all hang off it; the viewer lets you hide those hub edges to see local structure.
  • Dependencies come two ways. A ServiceDependency links a business service to a system; a SystemDependency links one system to another (source → target — the tabs are labelled Source and Target).
  • Risk is held by controls. A Risk is mitigated by a CompensatingControl whose effectiveness is evidenced — the interim line until the system is replaced.
  • Replacement then retirement. A ReplacementInitiative (with milestones, a blocking ReplacementDependency and CutoverReadiness) delivers the new system; a RetirementPlan (with a confirmation checklist) then retires the old one, gated by an AssuranceDecision.
  • StatusHistory is the audit trail of the system's lifecycle transitions.

Backing data (denormalised for display)

Each foreign key carries a denormalised <fk>_name display column so lists read in plain language (e.g. a SystemDependency shows both its source and target system names; a CompensatingControl shows the risk it holds) without a join at read time — the house style for these apps.