Data Model (ERDs)¶
Each service owns its schema; there is no shared database
(ADR-006). Per-service entity-relationship diagrams are
kept as PDFs in docs/erd/ (viewable in any browser via the links below) rather than as
Markdown, since they are generated diagrams, not prose.
| Diagram | Scope |
|---|---|
| 01 - Monolith (reference) | The legacy monolithic schema this platform replaces incrementally - useful context for why the domain looks the way it does |
| 02 - Microservices (overview) | Cross-service overview: every service's schema on one map, with the (non-existent) foreign keys between services shown only conceptually |
| 03 - Customer Service | Customer, Address, Document |
| 04 - Product Catalog Service | Tariff, Addon, ProductOffering, TariffAddon |
| 05 - Order Service | Order, OrderItem, SagaState |
| 06 - Subscription Service | Subscription, MsisdnPool, SimCard |
| 07 - Usage Service | Quota, UsageRecord, CdrEvent |
| 08 - Billing Service | Invoice, InvoiceLine, BillCycle |
| 09 - Payment Service | Payment, PaymentAttempt, Wallet |
| 10 - Notification Service | NotificationTemplate, Notification, Channel (MongoDB) |
| 11 - Ticket Service | Ticket, TicketComment, SLA |
There is no published ERD yet for identity-service, campaign-service, dispute-service, or fraud-service (all added after the original ERD set) - their aggregates are documented in the Service Catalog instead.
Cross-service consistency¶
Since there is no shared database and no distributed transaction across services, consistency between two services' data is always eventual, driven by the same outbox/inbox event flow described in Events & Messaging. When you need to reason about "does service B's view of service A's data ever go stale, and for how long," start from the event catalog's producer/consumer table for the specific event involved, not from the schema alone.