EA Data Model
The EA catalog exists in two forms: CSV (working/validation surface) and Cloudflare D1 (published consumption layer). CSVs are the editing surface — D1 is written only after the validation gate passes. The schemas are shared.
Objects CSV — {slug}-objects.csv
One row per architecture object. Schema version: v3.2 (current).
| Column | Req | Values / Format | Description |
|---|---|---|---|
| ID | ✓ | {PREFIX}-NNN | Unique ID — prefix must match Type (e.g. APP-001, CAP-003) |
| Type | ✓ | See 18 prefixes | SAP LeanIX fact sheet type |
| Name | ✓ | Universal product name | Vendor/technical name as found in source (e.g. "Azure API Management") |
| Display_Name | ✓ | Organizational alias | What people in the org actually call it (e.g. "Maestro"). Never contains Name in parentheses. |
| Group | – | Architectural concept | Strategic category for board-level diagrams. Independent of vendor and org alias. |
| Subgroup | – | Sub-category | Optional further classification within a Group. No Group duplication. |
| Description | ✓ | Free text | What this component does |
| Level | ✓ | L0, L1, L2, L3 | Hierarchy depth (L0 = top-level) |
| Parent_ID | – | ID of parent object | Hierarchy containment — enables visual nesting in diagrams |
| TOGAF_Layer | ✓ | Business, Application, Data, Technology | Architecture layer — drives diagram layer placement |
| Lifecycle | ✓ | plan, phaseIn, active, phaseOut, endOfLife | Current lifecycle status (LeanIX camelCase) |
| Business_Criticality | ✓ | missionCritical, businessCritical, businessOperational, administrativeService | Impact if unavailable |
| Functional_Fit | – | perfect, appropriate, insufficient, unreasonable | Functional suitability |
| Technical_Fit | – | fullyAppropriate, adequate, unreasonable, inappropriate | Technical suitability |
| Owner | – | Person or role name | Who owns this object |
| Department | – | Department name | Owning department |
| Tags | – | Comma-separated | Labels for filtering — include Macroscope A-code (e.g. A250, A370) |
| Cost_Size | – | XS, S, M, L, XL | Relative sizing |
| Cost_Amount | – | Number | Estimated cost |
| Notes | – | Free text | Additional context |
Relations CSV — {slug}-relations.csv
One row per directed relationship between two objects.
| Column | Req | Description |
|---|---|---|
| Source_ID | ✓ | ID of the source object (must exist in objects CSV) |
| Source_Display_Name | ✓ | Display name of the source object |
| Relationship_Type | ✓ | One of 12 standard types (contains, supports, requires, uses, realized-by, owned-by, provided-by, transfers, successor-of, data-flow, depends-on, triggers) |
| Target_ID | ✓ | ID of the target object (must exist in objects CSV) |
| Target_Display_Name | ✓ | Display name of the target object |
| Description | ✓ | What this relationship means in context |
| Visual_Verb | ✓ | Short label for diagram edges (e.g. "uses", "triggers", "data flow") |
CO CSV — {slug}-co.csv
Changement Organisationnel — optional, produced only for roadmap-driven transformations. Mandatory for migration projects (one CO row per decommissioned, introduced, or migrated object).
| Column | Req | Values / Description |
|---|---|---|
| CO_ID | ✓ | CO-NNN — unique change record ID |
| Object_ID | ✓ | ID of the object being changed |
| Initiative_ID | ✓ | ID of the Initiative driving this change (INI-NNN) — use program-level INI |
| Scenario | – | Option_A, Option_B… — for orientation comparisons. Omit for single-project changes. |
| Impact_Type | ✓ | introduction, decommissioning, rollout, withdrawal, scopeChange, technicalChange, interfaceChange, discontinuation |
| Change_Type | ✓ | New, Modified, Retired, Migrated, Consolidated |
| Impact_Level | ✓ | High, Medium, Low |
| Impact_Description | ✓ | What changes and why |
| Current_State | ✓ | As-is state description |
| Target_State | ✓ | To-be state description |
| Phase | – | Implementation phase (e.g. "Phase 0 — Foundation" or "INI-002") |
| Cost_Project | – | Project cost estimate |
| OpEx_Delta | – | Change in operational cost |
| CapEx_Delta | – | Change in capital cost |
| Status | ✓ | Planned, In_Progress, Completed, Cancelled |
| Notes | – | Additional context |
D1 Database Structure
One D1 database per customer. Each database holds all that customer's DAE catalogs
via a catalog discriminator column.
The same SQLite schema runs locally and on Cloudflare (foundry split).
Customer Config — customers.json
Located at experiments/dae-catalog-d1/customers.json.
Adding a customer or DAE is a config edit — no code change needed.
{
"transgesco": {
"db": "transgesco",
"daes": [
{ "dae": "DAE-0007", "catalog": "TES", "label": "Évaluation des systèmes" },
{ "dae": "DAE-0007", "catalog": "BCM", "label": "Business Change Map" }
]
},
"stm": {
"db": "stm",
"daes": [
{ "dae": "DAE-0001", "catalog": "VTB", "label": "Vigie technique BizTalk" },
{ "dae": "DAE-0002", "catalog": "PIS", "label": "Passeport intégration STM" }
]
}
}