In the past, ecommerce was much simpler than it is now. Basically, it was all about publishing a catalog of products online and assigning them availability. In terms of business logic, the online store was treated just like another physical store, with its own set of stock. Often, online channels had dedicated warehouses or portions of company warehouses. There was no interaction between the different sales channels. Store owners actually saw the online store as a sort of internal competitor instead of a digitalization opportunity.
This single channel view also appeared in the ecommerce website architecture. Depending on whether there was stock in the dedicated warehouse, a product was either available or unavailable. On the website, there was no find in store functionality. There was no BOPIS (Buy Online Pick-up In Store), or ship from store workflows. Online orders were placed with predefined stock allocations. The order was then sent to the order management system for fulfillment.
Many businesses still operate this way today. However, over the past decade or so we have seen a big shift towards omnichannel business models. This is where the customer journey can begin online and end in store, or vice versa. A seamless experience where the customer always sees one brand and the brand always sees one customer.
This type of omnichannel experience cannot be achieved by allocating a dedicated stock to the online channel alone. In order to determine if a product is available, what is the expected delivery lead time (aka promise date) and implement a seamless experience regardless of the sale channel, an ecommerce website needs a single view of the inventory that's distributed across multiple stock locations (warehouses, stores, etc.).
As far as architecture is concerned, the role of the OMS changes significantly. Unlike a single channel flow, the stock information on a multi channel flow must be available online in real time. It is the OMS' responsibility to expose stock availability on the product page, product listing page, and checkout page. It is only the pick-pack-ship functionality that remains offline. All other functions become part of the commerce engine that drives the online experience.
The single view of the inventory should provide real-time stock information for a specific SKU or list of SKUs, that can change by market. Resource-wise, this calculation can be very expensive depending on how widely distributed the stock is. In terms of performance and uptime, the OMS SLAs must be identical to those for carts and checkouts. It is essential that OMS APIs are synchronous and deeply integrated with the online experience. In this sense, an OMS has a completely different meaning from what it was before. It is imperative to reconsider its role as well as the role of all other commerce components, or we risk approaching a new problem with old solutions that are no longer relevant.