Skip to content

BOPIS — Buy Online Pick-up In Store

customer action transactional


Outcome

A customer can place an order online and collect it from a physical store on the same or following day.

Service Flow

flowchart LR
    S0["Create Order"]
    S1["Reserve Inventory"]
    S0 --> S1
    S2["Authorize Payment"]
    S1 --> S2
    S3["Generate Picking"]
    S2 --> S3
    S4["Confirm Picking"]
    S3 --> S4
    S5["Collect Order"]
    S4 --> S5
    S6["Capture Payment"]
    S5 --> S6

Capabilities

Order Management Inventory Reservation Payment Processing Fulfillment Execution Store Operations

Domains

customer commerce order inventory fulfillment payment store

Business Objects

Object Classification Domain
customer aggregate-root customer
basket aggregate-root commerce
order aggregate-root order
reservation aggregate-root inventory
inventory aggregate-root inventory
picking-task aggregate-root fulfillment
shipment aggregate-root fulfillment
payment aggregate-root payment
store aggregate-root store

Business Services

  • create-order
  • reserve-inventory
  • authorize-payment
  • generate-picking
  • confirm-picking
  • collect-order
  • capture-payment

Applications

Application Classification
eCommerce Platform ecommerce-platform system-of-engagement
OMS oms system-of-record
Inventory Service inventory-service system-of-intelligence
SIM sim system-of-record
POS pos system-of-engagement
Payment Hub payment-hub platform
Event Classification Object Terminal
BasketConverted transitioned basket
OrderCreated created order
OrderValidated transitioned order
OrderConfirmed transitioned order
OrderModified updated order
OrderCancelled transitioned order
OrderClosed transitioned order
InventoryReserved created reservation
ReservationConfirmed transitioned reservation
InventoryReleased transitioned reservation
ReservationExpired transitioned reservation
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
StoreDayOpened created store-day
StoreDayClosed transitioned store-day
StoreTaskAssigned created store-task
StoreTaskCompleted transitioned store-task
AddressValidated transitioned address
FulfillmentOrderDispatched transitioned fulfillment-order
ReservationCreated created reservation
ReservationReleased transitioned reservation
DeliverySlotReserved transitioned delivery-slot
DeliverySlotConfirmed transitioned delivery-slot
DeliverySlotReleased transitioned delivery-slot
DeliverySlotExpired transitioned delivery-slot
ShipmentCreated created shipment
EmployeeActivated transitioned employee
EmployeeDeactivated transitioned employee
EmployeeOffboarded transitioned employee
EmployeeArchived transitioned employee
GiftCardActivated transitioned gift-card
GiftCardRedeemed updated gift-card
GiftCardToppedUp updated gift-card
GiftCardExpired transitioned gift-card
GiftCardCancelled transitioned gift-card
GiftCardRefunded transitioned gift-card
ReceiptIssued created receipt
ReceiptAmended updated receipt
ReceiptVoided transitioned receipt
ReceiptArchived transitioned receipt
RefundProcessed updated refund
RefundFailed transitioned refund
RefundConvertedToCredit transitioned refund
StoreDayPreOpeningStarted transitioned store-day
StoreDayOpened transitioned store-day
StoreDayClosingStarted transitioned store-day
StoreDayReconciliationStarted transitioned store-day
StoreDayClosed transitioned store-day
StoreDayReopened updated store-day
StoreDayExceptionDeclared transitioned store-day
PickingTaskCreated created picking-task
PickingTaskCompleted transitioned picking-task
ShipmentLabelGenerated updated shipment
Endpoint Method Service Description
/orders POST create-order Creates a new Order from a validated Basket, transition…
/orders/{id} GET track-order Retrieves the full state of an Order including lines, p…
/orders/{id}/cancel POST cancel-order Cancels a confirmed Order, triggering reversal of payme…
/orders/{id}/confirm POST confirm-order Confirms a validated Order once payment is authorised, …
/inventory/reservations POST reserve-inventory Creates a timed Reservation for one or more SKUs at a s…
/inventory/reservations/{id}/confirm POST confirm-reservation Confirms a Reservation, converting it to a firm commitm…
/inventory/reservations/{id} DELETE release-reservation Releases an existing Reservation, returning the quantit…
/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…
/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
bopis-requires-store-inventory pre-condition invariant inventory-item.available-quantity >= 1 at selected stor…
bopis-requires-channel pre-condition invariant channel.lifecycle = active AND channel.type in [web, mo…

← Back to Process Catalog