architecture decision
ADR-011: Route fulfillment changes through ShippingService
Shipment commands and status changes are owned by ShippingService instead of being coordinated directly from OrdersService.
Decision RecordOctober 22, 2024AcceptedFulfillment
Context
Shipping integrations have provider-specific labels, carrier status mappings, and retry behavior. OrdersService should not own that complexity.
Decision
OrdersService emits order lifecycle events and sends shipment requests through ShippingService contracts. ShippingService owns shipment state and carrier-specific mapping.
Consequences
Fulfillment can evolve independently from order capture. OrdersService only observes shipment outcomes through events.