Data ownership
The source-of-truth data stores in the default catalog and the rules for reading and writing business state.
Every durable business concept has an owning system and a source-of-truth store. Other systems should depend on published contracts instead of reaching into another system’s data store.
Source-of-truth stores
| Data store | Owner | Business data |
|---|---|---|
| Product DatabaseProduct DatabaseContainer•v1.0.0 | Product Catalog SystemProduct Catalog SystemSystem•v1.0.0Internal system that is the source of truth for product data. Owns the product database and publishes product change eve...Ownerproduct-platformMapView docs | Products, product attributes and catalog change outbox. |
| Search IndexSearch IndexContainer•v1.0.0 | Search SystemSearch SystemSystem•v1.0.0Internal system that keeps product data searchable. Consumes product change events from the Product Catalog System, main...Ownersearch-platformMapView docs | Search-optimised product documents. |
| Cart DatabaseCart DatabaseContainer•v1.0.0 | Cart SystemCart SystemSystem•v1.0.0Internal system that owns the customer's shopping cart and the checkout flow. It is the source of truth for cart content...Ownershopping-platformMapView docs | Active shopping carts and checkout state. |
| Promotion DatabasePromotion DatabaseContainer•v1.0.0 | Promotion SystemPromotion SystemSystem•v1.0.0Internal system that calculates the discounts and promotions that apply to a cart. It owns promotion rules and returns c...Ownershopping-platformMapView docs | Promotion rules and discount configuration. |
| Order DatabaseOrder DatabaseContainer•v1.0.0 | Order Management SystemOrder Management SystemSystem•v1.0.0Internal system that is the source of truth for orders. It creates orders, tracks their lifecycle, and publishes events ...Ownerordering-platformMapView docs | Orders and order lifecycle state. |
| Payment DatabasePayment DatabaseContainer•v1.0.0 | Payment Processing SystemPayment Processing SystemSystem•v1.0.0Internal system that orchestrates payment for orders. It authorizes payments, requests charges from the external payment...Ownerpayments-platformMapView docs | Payment intents, charge outcomes and refunds. |
| Inventory DatabaseInventory DatabaseContainer•v1.0.0 | Inventory SystemInventory SystemSystem•v1.0.0Internal system that tracks stock and reserves it for orders. It is the source of truth for available inventory and conf...Ownerfulfilment-platformMapView docs | Stock levels and reservations. |
| Warehouse DatabaseWarehouse DatabaseContainer•v1.0.0 | Warehouse SystemWarehouse SystemSystem•v1.0.0Internal system that picks and packs orders in the warehouse. It reacts to completed orders, organises picking, and sign...Ownerfulfilment-platformMapView docs | Picking and packing work. |
| Customer DatabaseCustomer DatabaseContainer•v1.0.0 | Customer Management SystemCustomer Management SystemSystem•v1.0.0Internal system that is the source of truth for customer profile data. Owns the customer database and publishes customer...Ownercustomer-platformMapView docs | Customer profiles. |
| Review DatabaseReview DatabaseContainer•v1.0.0 | Reviews & RatingsReviews & RatingsDomain•v1.0.0The Reviews & Ratings domain owns customer feedback on products — how reviews are submitted, moderated, published and ag...Ownerreviews-platformMapView docs | Reviews and moderation state. |
| Rating CacheRating CacheContainer•v1.0.0Redis cache that serves each product's aggregate star rating with low latency.MapView docs | Reviews & RatingsReviews & RatingsDomain•v1.0.0The Reviews & Ratings domain owns customer feedback on products — how reviews are submitted, moderated, published and ag...Ownerreviews-platformMapView docs | Product rating read model. |
Read model pattern
Search SystemSearch SystemSystem•v1.0.0Internal system that keeps product data searchable. Consumes product change events from the Product Catalog System, main...Ownersearch-platformMapView docs and Rating CacheRating CacheContainer•v1.0.0Redis cache that serves each product's aggregate star rating with low latency.MapView docs are read models. They do not own the original facts. They rebuild their state from events such as Product CreatedProduct CreatedEvent•v1.0.0Published when a new product has been added to the catalog. Ownerproduct-platformSchemaMapView docs, Product UpdatedProduct UpdatedEvent•v1.0.0Published when an existing product's data has changed. Ownerproduct-platformSchemaMapView docs, Review PublishedReview PublishedEvent•v1.0.0Published when a submitted review passes moderation and becomes visible on the storefront. Ownerreviews-platformSchemaMapView docs and Rating UpdatedRating UpdatedEvent•v1.0.0Published when a product's aggregate rating changes as a result of a newly published review. Ownerreviews-platformSchemaMapView docs.
Write rule
Only the owning system writes its source-of-truth store. Cross-system updates should be commands or events. For example, checkout asks fulfilment to reserve stock with Reserve InventoryReserve InventoryCommand•v1.0.0Command to reserve stock for the items in a checked-out cart.
Ownerordering-platformSchemaMapView docs rather than writing Inventory DatabaseInventory DatabaseContainer•v1.0.0PostgreSQL database that is the system of record for stock levels and reservations.MapView docs directly.
Consistency rule
User-facing flows should make the consistency model explicit. Checkout needs coordinated confirmation across inventory, payment and order creation, so it uses the Checkout SagaCheckout SagaFlow•v1.0.0How the Checkout Orchestrator turns a checked-out cart into an order — reserving inventory, authorizing payment and crea...Ownerordering-platformView flowView docs. Search indexing can lag product writes, so it uses asynchronous product events.