Scenario: Buy online and pick up in a store (BOPIS)
Inventory Visibility can be used to support the buy online and pick up in a store (BOPIS) capability for stores to get more benefits such as inventory optimization. BOPIS capability allows a customer to place an order through any channel and later arrive at a store to pick up products.
When a customer, pick up recipient, or gift recipient arrives at a store to collect the products in an order, the store associate first identifies the person. Then, the store associate scans the products that are available, marks any shortages, confirms the process, and prints a customer pickup acknowledgment.
Setting up BOPIS support in the Inventory service
As a System Integrator (SI) or customer developer, complete the following tasks:
- Identify the stores that provide BOPIS capability.
- Define low, medium, and high thresholds for inventory at node level.
- Identify the source systems that affect supply. For example, Point of Sales (POS), inventory management system, and third-party stores. Additionally, you also need to identify the source systems of supply changes, demand changes, and inventory inquiry.
- Perform the initial inventory sync from the source system that is identified in step 3 in the Inventory service using Supply and Demand Sync REST APIs.
- Set up the source systems identified in step 3 to send delta (or trickle) feeds on supply changes in the Inventory service. For example, when a POS store is performing check-out for a customer the supply change is happening which needs to be updated in Inventory service. You can use the Update REST APIs. This update helps stores have an accurate real-time inventory availability picture.
- Set up your systems to place demands. Place your order through an Sterling Order Management System. The order fulfillment system sends demand or supply updates to the Inventory service. For example, when a shipping order is being shipped, the order fulfillment system updates the demand by reducing the number of items that are ordered and reduces the supply by reducing the number of items shipped.
- Configure your different channels, such as web and POS channels, to inquire about inventory
availability through the Inventory service service.Note: First, the system integrator needs to configure or identify all the nearby or favorite stores for a customer. After that, you need to ask for the inventory availability for those stores from the Inventory service.
- If a business customer or system integrator want to work with reservations, they can create a reservation for an item in the system for that particular store. For more information, see Reservations.
- Set up weekly sync to make sure that inventory availability picture is accurate.
Example
- Create a reservation for an online order that is checked out to ensure that the item is still
available.
POST https://api.watsoncommerce.ibm.com/inventory/business/reservations { "lines": [{ "deliveryMethod": "PICK", "itemId": "SKU1024", "lineId": "1", "productClass": "NEW", "quantity": 3.0, "shipNode": "Matrix-Store-001", "unitOfMeasure": "EACH" }], "reference": "cart123", "timeToExpire": 15 }
- After the check-out is complete, the order is captured in IBM® Sterling Order Management
System Software.
Adjust the demand and consume the reservation to prevent
oversell.
POST https://api.watsoncommerce.ibm.com/inventory/business/demands { "demands": [{ "cancelDate": 2500-01-01T00:00:00Z, "changedQuantity": 1.0, "itemId": "SKU1024", "minShipByDate": 1900-01-01T00:00:00Z, "productClass": "NEW", "reservations": [{ "quantity": 1.0, "reference": "cart123" }], "shipDate": 2019-01-01T00:00:00Z, "shipNode": "Matrix-Store-001", "type": "OPEN_ORDER", "unitOfMeasure": "EACH" }] }
- The order is scheduled in IBM Sterling Order Management
System Software. Adjust the demand to represent
the current state type and
shipDate
.POST https://api.watsoncommerce.ibm.com/inventory/business/demands { "demands": [{ "cancelDate": 2500-01-01T00:00:00Z, "changedQuantity": -1.0, "itemId": "SKU1024", "minShipByDate": 1900-01-01T00:00:00Z, "productClass": "NEW", "shipDate": 2019-01-01T00:00:00Z, "shipNode": "Matrix-Store-001", "type": "OPEN_ORDER", "unitOfMeasure": "EACH" },{ "cancelDate": 2500-01-01T00:00:00Z, "changedQuantity": 1.0, "itemId": "SKU1024", "minShipByDate": 1900-01-01T00:00:00Z, "productClass": "NEW", "shipDate": 2019-01-02T00:00:00Z, "shipNode": "Matrix-Store-001", "type": "SCHEDULED", "unitOfMeasure": "EACH" }] }
- The order is released to the store where it can be picked, packed, and shipped. Adjust the
demand to represent the current state
type.
POST https://api.watsoncommerce.ibm.com/inventory/business/demands { "demands": [{ "cancelDate": 2500-01-01T00:00:00Z, "changedQuantity": -1.0, "itemId": "SKU1024", "minShipByDate": 1900-01-01T00:00:00Z, "productClass": "NEW", "shipDate": 2019-01-02T00:00:00Z, "shipNode": "Matrix-Store-001", "type": "SCHEDULED", "unitOfMeasure": "EACH" },{ "cancelDate": 2500-01-01T00:00:00Z, "changedQuantity": 1.0, "itemId": "SKU1024", "minShipByDate": 1900-01-01T00:00:00Z, "productClass": "NEW", "shipDate": 2019-01-02T00:00:00Z, "shipNode": "Matrix-Store-001", "type": "ALLOCATED", "unitOfMeasure": "EACH" }] }
- Finally, the order is shipped to the customer. Adjust the demand and supply to represent the
current state of
inventory.
POST https://api.watsoncommerce.ibm.com/inventory/business/demands { "demands": [{ "cancelDate": 2500-01-01T00:00:00Z, "changedQuantity": -1.0, "itemId": "SKU1024", "minShipByDate": 1900-01-01T00:00:00Z, "productClass": "NEW", "shipDate": 2019-01-02T00:00:00Z, "shipNode": "Matrix-Store-001", "type": "ALLOCATED", "unitOfMeasure": "EACH" }] }
POST https://api.watsoncommerce.ibm.com/inventory/business/supplies { "supplies": [{ "changedQuantity": -1.0, "eta": "1900-01-01T00:00:00Z", "itemId": "SKU1024", "productClass": "NEW", "shipByDate": "2500-01-01T00:00:00Z", "shipNode": "Matrix-Store-001", "type": "ONHAND", "unitOfMeasure": "EACH" }] }