Domains

Fulfilment and shipping

How stock reservation, warehouse packing and carrier handoff work after an order is completed.

Domain guide

FulfilmentFulfilmentDomainv1.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 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 owns Inventory DatabaseInventory DatabaseContainerv1.0.0PostgreSQL database that is the system of record for stock levels and reservations.Ownerfulfilment-platformMapView docs. Inventory ServiceInventory ServiceServicev1.0.0The 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 InventoryCommandv1.0.0Command to reserve stock for the items in a checked-out cart. Ownerordering-platformSchemaMapView docs, Release InventoryRelease InventoryCommandv1.0.0Command to release a previously held inventory reservation. Ownerfulfilment-platformSchemaMapView docs and Get Stock LevelGet Stock LevelQueryv1.0.0Query to fetch the current available stock level for a product. Ownerfulfilment-platformSchemaMapView docs.

It publishes Inventory ReservedInventory ReservedEventv1.0.0Published when stock has been successfully reserved for an order. Ownerfulfilment-platformSchemaMapView docs or Inventory UnavailableInventory UnavailableEventv1.0.0Published when stock could not be reserved for an order. Ownerfulfilment-platformSchemaMapView docs during checkout.

Warehouse System

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 owns picking and packing in Warehouse DatabaseWarehouse DatabaseContainerv1.0.0PostgreSQL database that stores picking jobs and their status.Ownerfulfilment-platformMapView docs. Warehouse ServiceWarehouse ServiceServicev1.0.0Orchestrates 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 CompletedEventv1.0.0Published when an order has been fulfilled and completed. Ownerordering-platformSchemaMapView docs and publishes Order Ready For ShippingOrder Ready For ShippingEventv1.0.0Published when a packed order is ready to be handed to a carrier for shipping. Ownerfulfilment-platformSchemaMapView docs.

Picking WorkerPicking WorkerServicev1.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 PackedEventv1.0.0Published when an order has been picked and packed in the warehouse. Ownerfulfilment-platformSchemaMapView docs.

Shipping System and Carrier

Shipping SystemShipping SystemSystemv1.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 ShipmentCommandv1.0.0Command to create a shipment with a carrier for a packed order. Ownerfulfilment-platformSchemaMapView docs. CarrierCarrierSystemv1.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 CreatedEventv1.0.0Published by the carrier when a shipment has been created and dispatched. Ownerfulfilment-platformSchemaMapView docs, Shipment DeliveredShipment DeliveredEventv1.0.0Published by the carrier when a shipment has been delivered to the customer. Ownerfulfilment-platformSchemaMapView docs or Shipment FailedShipment FailedEventv1.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.