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 DatabaseContainerv1.0.0 | Product Catalog SystemProduct Catalog SystemSystemv1.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 IndexContainerv1.0.0 | Search SystemSearch SystemSystemv1.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 DatabaseContainerv1.0.0 | Cart SystemCart SystemSystemv1.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 DatabaseContainerv1.0.0 | Promotion SystemPromotion SystemSystemv1.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 DatabaseContainerv1.0.0 | Order Management SystemOrder Management SystemSystemv1.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 DatabaseContainerv1.0.0 | Payment Processing SystemPayment Processing SystemSystemv1.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 DatabaseContainerv1.0.0 | Inventory SystemInventory SystemSystemv1.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 DatabaseContainerv1.0.0 | Warehouse SystemWarehouse SystemSystemv1.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 DatabaseContainerv1.0.0 | Customer Management SystemCustomer Management SystemSystemv1.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 DatabaseContainerv1.0.0 | Reviews & RatingsReviews & RatingsDomainv1.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 CacheContainerv1.0.0Redis cache that serves each product's aggregate star rating with low latency.Ownerreviews-platformMapView docs | Reviews & RatingsReviews & RatingsDomainv1.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 SystemSystemv1.0.0Internal system that keeps product data searchable. Consumes product change events from the Product Catalog System, main...Ownersearch-platformMapView docs and Rating CacheRating CacheContainerv1.0.0Redis cache that serves each product's aggregate star rating with low latency.Ownerreviews-platformMapView docs are read models. They do not own the original facts. They rebuild their state from events such as Product CreatedProduct CreatedEventv1.0.0Published when a new product has been added to the catalog. Ownerproduct-platformSchemaMapView docs, Product UpdatedProduct UpdatedEventv1.0.0Published when an existing product's data has changed. Ownerproduct-platformSchemaMapView docs, Review PublishedReview PublishedEventv1.0.0Published when a submitted review passes moderation and becomes visible on the storefront. Ownerreviews-platformSchemaMapView docs and Rating UpdatedRating UpdatedEventv1.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 InventoryCommandv1.0.0Command to reserve stock for the items in a checked-out cart.
Ownerordering-platformSchemaMapView docs rather than writing Inventory DatabaseInventory DatabaseContainerv1.0.0PostgreSQL database that is the system of record for stock levels and reservations.Ownerfulfilment-platformMapView 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 SagaFlowv1.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.