- Documentation
- /
- Iscrm
- /
- 02 — System Diagram
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. Control and ControlDeficiency are hub tables, so their 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 iscrm.
The assurance spine
flowchart TD
Entity[Entity]
Sys[InformationSystem]
Dom[ControlDomain]
Obj[ControlObjective]
Ctl[Control]
Cyc[AssessmentCycle]
Asmt[ControlAssessment]
ER[EvidenceRequirement]
EV[EvidenceSubmission]
Def[ControlDeficiency]
RP[RemediationPlan]
RA[RemediationAction]
RT[Retest]
Risk[RiskAcceptance]
Dec[AssuranceDecision]
CR[ClosureRequest]
CA[ClosureApproval]
SH[StatusHistory]
Entity --> Sys
Sys --> Ctl
Dom --> Obj
Obj --> Ctl
Cyc --> Asmt
Ctl --> Asmt
Ctl --> ER
Asmt --> ER
ER --> EV
Ctl --> EV
Sys --> Def
Ctl --> Def
Asmt --> Def
Def --> EV
Def --> RP
RP --> RA
Def --> RT
Ctl --> RT
Def --> Risk
Def --> Dec
Def --> CR
CR --> CA
Def --> SH
How to read it
ControlandControlDeficiencyare the hubs. Assessments and evidence hang off the control; remediation, retest, risk acceptance, decisions and closure hang off the deficiency. The viewer lets you hide those hub edges to see local structure.- Assessment produces deficiencies. A
ControlAssessmentrecords design/operating/ overall effectiveness; an ineffective result raises one or moreControlDeficiency. - Retest gates closure. A
ControlDeficiencythat isclosure_blockingmust reach aRetestoutcome ofPASSEDbefore aClosureApprovalcan beAPPROVED; aFAILEDretest keeps it open (an interimRiskAcceptanceis not closure). - Closure is two-part: a
ClosureRequest(declaring completion) and an independentClosureApproval(the authorised outcome). StatusHistoryis the audit trail of each deficiency's state 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 Control shows its system and objective; a Retest shows the deficiency
title) without a join at read time — the house style for these apps.