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.