Ship From Store¶
domain event fulfilment
Outcome¶
Store stock can be used to pick, pack and ship online orders directly to the customer.
Service Flow¶
flowchart LR
S0["Allocate Inventory"]
S1["Generate Picking"]
S0 --> S1
S2["Confirm Picking"]
S1 --> S2
S3["Pack Shipment"]
S2 --> S3
S4["Ship Order"]
S3 --> S4
S5["Deliver Order"]
S4 --> S5
S6["Capture Payment"]
S5 --> S6
Capabilities¶
Order Orchestration Inventory Allocation Store Inventory Fulfillment Execution Payment Processing
Domains¶
order inventory fulfillment payment store
Business Objects¶
| Object | Classification | Domain |
|---|---|---|
| order | aggregate-root |
order |
| inventory | aggregate-root |
inventory |
| reservation | aggregate-root |
inventory |
| picking-task | aggregate-root |
fulfillment |
| shipment | aggregate-root |
fulfillment |
| payment | aggregate-root |
payment |
| store | aggregate-root |
store |
Business Services¶
allocate-inventorygenerate-pickingconfirm-pickingpack-shipmentship-orderdeliver-ordercapture-payment
Applications¶
| Application | Classification |
|---|---|
OMS oms |
system-of-record |
Inventory Service inventory-service |
system-of-intelligence |
SIM sim |
system-of-record |
Carrier Platform carrier-platform |
platform |
Payment Hub payment-hub |
platform |
Trigger Event¶
This process is triggered by the
order-routeddomain event.
Related Events¶
| Event | Classification | Object | Terminal |
|---|---|---|---|
OrderSplit |
transitioned | order | — |
OrderRouted |
transitioned | order | — |
FulfillmentLocationReassigned |
transitioned | order | — |
InventoryAllocated |
created | allocation | — |
InventoryReallocated |
transitioned | allocation | — |
InventoryAllocationReleased |
transitioned | allocation | ✓ |
InventoryAdjusted |
updated | inventory | — |
InventoryCounted |
transitioned | inventory | — |
InventoryTransferred |
created | stock-movement | — |
PickingStarted |
transitioned | picking-task | — |
PickingCompleted |
transitioned | picking-task | ✓ |
ShipmentPacked |
transitioned | shipment | — |
ShipmentDispatched |
transitioned | shipment | — |
ShipmentDelivered |
transitioned | shipment | ✓ |
PaymentAuthorized |
transitioned | payment | — |
PaymentCaptured |
transitioned | payment | — |
PaymentVoided |
transitioned | payment | ✓ |
PaymentRefunded |
transitioned | payment | — |
PaymentSettled |
transitioned | payment | ✓ |
AddressValidated |
transitioned | address | — |
FulfillmentOrderCreated |
created | fulfillment-order | — |
FulfillmentOrderDispatched |
transitioned | fulfillment-order | — |
DeliverySlotReserved |
transitioned | delivery-slot | — |
DeliverySlotConfirmed |
transitioned | delivery-slot | — |
DeliverySlotReleased |
transitioned | delivery-slot | — |
DeliverySlotExpired |
transitioned | delivery-slot | — |
ShipmentCreated |
created | shipment | — |
GiftCardActivated |
transitioned | gift-card | — |
GiftCardRedeemed |
updated | gift-card | — |
GiftCardToppedUp |
updated | gift-card | — |
GiftCardExpired |
transitioned | gift-card | — |
GiftCardCancelled |
transitioned | gift-card | — |
GiftCardRefunded |
transitioned | gift-card | — |
RefundProcessed |
updated | refund | — |
RefundFailed |
transitioned | refund | — |
RefundConvertedToCredit |
transitioned | refund | — |
AllocationActivated |
transitioned | allocation | — |
AllocationUpdated |
updated | allocation | — |
AllocationFulfilled |
transitioned | allocation | — |
AllocationReallocated |
transitioned | allocation | — |
AllocationCancelled |
transitioned | allocation | — |
StockCountOpened |
created | inventory | — |
StockCountStarted |
transitioned | inventory | — |
StockCountCompleted |
transitioned | inventory | — |
StockCountReconciled |
transitioned | inventory | — |
StockCountClosed |
transitioned | inventory | — |
StockCountRecountRequested |
updated | inventory | — |
StockCountCancelled |
transitioned | inventory | — |
PickingTaskCreated |
created | picking-task | — |
PickingTaskCompleted |
transitioned | picking-task | — |
ShipmentLabelGenerated |
updated | shipment | — |
Related APIs¶
| Endpoint | Method | Service | Description |
|---|---|---|---|
/orders/{id}/route |
POST | route-order |
Executes routing logic to assign the optimal fulfillmen… |
/payments/authorizations |
POST | authorize-payment |
Submits a payment authorisation request for the order t… |
/payments/authorizations/{id}/capture |
POST | capture-payment |
Captures a previously authorised Payment. Requires paym… |
/payments/authorizations/{id}/void |
POST | void-payment |
Voids a payment authorisation that has not yet been cap… |
/payments/{id}/refunds |
POST | refund-payment |
Initiates a full or partial refund against a captured p… |
/fulfillment/orders/{id} |
GET | track-order |
Retrieves the current state of a Fulfillment Order incl… |
/fulfillment/orders/{id}/dispatch |
POST | ship-order |
Dispatches a Fulfillment Order after all picking tasks … |
/transactions/{id}/payment |
POST | authorize-payment |
Adds a payment tender to an in-progress POS transaction… |
/picking-orders |
POST | generate-picking |
Creates a warehouse picking order from a Fulfillment Or… |
/picking-orders/{id}/status |
PUT | confirm-picking |
Updates the status of a picking order as a warehouse as… |
/stock/{sku}/locations |
GET | retrieve-location-stock |
Returns all warehouse locations holding a given SKU, in… |
/inventory/allocate |
POST | allocate-inventory |
Soft-allocates inventory for an order line, reducing AT… |
/shipments/{id}/tracking |
GET | track-order |
Returns the current carrier tracking status and estimat… |
/shipments/{id}/label |
POST | ship-order |
Generates a carrier shipping label for a dispatched ful… |
Validation Rules¶
| Rule | Type | Severity | Condition |
|---|---|---|---|
ship-from-store-requires-routed-order |
pre-condition |
invariant |
order.lifecycle = confirmed AND fulfillment-order.lifec… |