Fulfilment and shipping
How stock reservation, warehouse packing and carrier handoff work after an order is completed.
FulfilmentFulfilmentDomain•v1.0.0The Fulfilment domain gets a confirmed order to the customer. It reserves stock, picks and packs orders in the warehouse...Ownerfulfilment-platformMapView docs gets confirmed orders to customers. It owns the operational handoff from stock reservation through warehouse work and carrier delivery.
System context map
Inventory System
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 owns Inventory DatabaseInventory DatabaseContainer•v1.0.0PostgreSQL database that is the system of record for stock levels and reservations.MapView docs. Inventory ServiceInventory ServiceService•v1.0.0
The system of record for stock. Reserves and releases inventory, serves stock-level queries, and publishes events when s...Publishesinventory-reserved, inventory-unavailableSubscribesreserve-inventory, release-inventory +1Ownerfulfilment-platformMapRepoView docs handles Reserve InventoryReserve InventoryCommand•v1.0.0Command to reserve stock for the items in a checked-out cart.
Ownerordering-platformSchemaMapView docs, Release InventoryRelease InventoryCommand•v1.0.0Command to release a previously held inventory reservation.
Ownerfulfilment-platformSchemaMapView docs and Get Stock LevelGet Stock LevelQuery•v1.0.0Query to fetch the current available stock level for a product.
Ownerfulfilment-platformSchemaMapView docs.
It publishes Inventory ReservedInventory ReservedEvent•v1.0.0Published when stock has been successfully reserved for an order. Ownerfulfilment-platformSchemaMapView docs or Inventory UnavailableInventory UnavailableEvent•v1.0.0Published when stock could not be reserved for an order. Ownerfulfilment-platformSchemaMapView docs during checkout.
Warehouse System
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 owns picking and packing in Warehouse DatabaseWarehouse DatabaseContainer•v1.0.0PostgreSQL database that stores picking jobs and their status.MapView docs. Warehouse ServiceWarehouse ServiceService•v1.0.0
Orchestrates picking and packing in the warehouse. It reacts to completed orders, creates picking jobs, and signals when...Publishesorder-ready-for-shippingSubscribesorder-completedOwnerfulfilment-platformMapRepoView docs reacts to Order CompletedOrder CompletedEvent•v1.0.0Published when an order has been fulfilled and completed.
Ownerordering-platformSchemaMapView docs and publishes Order Ready For ShippingOrder Ready For ShippingEvent•v1.0.0Published when a packed order is ready to be handed to a carrier for shipping.
Ownerfulfilment-platformSchemaMapView docs.
Picking WorkerPicking WorkerService•v1.0.0Works through picking jobs on the warehouse floor and signals when an order has been picked and packed.
Publishesorder-packedOwnerfulfilment-platformMapRepoView docs handles packing work and publishes Order PackedOrder PackedEvent•v1.0.0Published when an order has been picked and packed in the warehouse.
Ownerfulfilment-platformSchemaMapView docs.
Shipping System and Carrier
Shipping SystemShipping SystemSystem•v1.0.0Internal system that hands packed orders to carriers. It reacts to ready-for-shipping orders and creates shipments with ...Ownerfulfilment-platformMapView docs creates shipments through Create ShipmentCreate ShipmentCommand•v1.0.0Command to create a shipment with a carrier for a packed order. Ownerfulfilment-platformSchemaMapView docs. CarrierCarrierSystem•v1.0.0External carrier that delivers shipments to customers. It accepts shipment requests and reports delivery progress back. Ownerfulfilment-platformMapView docs is the external delivery provider and reports Shipment CreatedShipment CreatedEvent•v1.0.0Published by the carrier when a shipment has been created and dispatched. Ownerfulfilment-platformSchemaMapView docs, Shipment DeliveredShipment DeliveredEvent•v1.0.0Published by the carrier when a shipment has been delivered to the customer. Ownerfulfilment-platformSchemaMapView docs or Shipment FailedShipment FailedEvent•v1.0.0Published by the carrier when a shipment could not be delivered. Ownerfulfilment-platformSchemaMapView docs.
Boundary with Ordering
Ordering decides that an order exists. Fulfilment decides whether and how it can be delivered. Keep these lifecycles separate so cancellation, refunds and shipment exceptions can be handled independently.