Building Vs Buying an OMS Part Two: Inventory Availability

Menard Maranan

Tech advocate and writer @ fabric.

March 28, 2022
buy-vs-build-oms-inventory
Summary
  • Without inventory availability, an OMS struggles to communicate available stocks to your sales channels and may cause over or underselling or frustration among customers.

  • An OMS works effectively with an IMS so that you can ensure your customers’ order is delivered to them quickly, but not all OMSs are made equal.

  • If you decide to buy an OMS, it’s important to look for a headless architecture that is highly flexible and scalable.

  • If you’re looking for a headless OMS solution, fabric is a modular e-commerce system that can be used to support specific e-commerce needs and provides a total system for clients who are out-growing their off-the-shelf solutions.

If you’re working at an e-commerce business, you’re well aware of the importance of a good order management system (OMS). An OMS oversees all of your business’ transactions, providing a seamless customer experience. This includes orchestrating order placements from different channels, passing those orders into fulfillment centers for picking, packing, and shipping, and then monitoring inventory and handling returns. An OMS makes sure you can quickly react and solve logistic challenges inherently involved in the process.

In part one of this series, you learned about order fulfillment and what factors to consider before you decide to build or buy an OMS solution. Here, we’ll focus on the supporting pillar of order fulfillment, which is inventory availability.

Inventory availability enables the order management process to flow seamlessly and ensures there’s enough stock to meet market demand. Without good inventory availability, warehouse teams will struggle to know the current status of the warehouse, which directly affects order fulfillment.

In this article, you’ll focus on what considerations go into building an inventory availability system and how your API-based OMS directly affects your decision to build or buy.

OMS and Inventory Availability

Inventory availability monitors the items stored in your warehouse to ensure you have enough stocks available for incoming sales while avoiding collecting too much inventory, which can end up as dead stock.

An OMS constantly tracks the inventory record from your warehouse system and communicates that to your sales channels so that customers can know if an item is available. This eliminates the risk of having too much or too little inventory on hand and can help eliminate delayed shipping and canceled orders.

Resupply, tracking stock, forecasting stock, and managing storage are four fundamental parts of the inventory availability process.

Resupply

One of the most difficult parts of the inventory availability process is balancing supply and demand. Incoming supplies and their data (i.e., item name, SKU, lot number, etc.) must be recorded and communicated by an OMS so that your sales channels have an accurate representation of the current status of the warehouse.

An OMS can connect a separate software, like a sales tracker to your inventory availability system that organizes and tracks warehouse data. It connects your IMS and your OMS so that all of your inventory data can be found in one place. Any change in IMS records pertaining to stock data must be communicated with the OMS so that you always have an accurate representation of the warehouse status for your sales channels.

fabric has an Inventory API that can handle updating inventory data with speed, accuracy, and efficiency. If you need a bulk inventory data update, you can choose the bulk insert to inventory endpoint to easily update it.

POST https://{your-given-fabric-domain-name}/api-inventory/inventory/bulk-insert

Here’s an example request payload for bulk updating your inventory data with the bulk insert to inventory endpoint from fabric documentation.


[
 {
 "sku": "1597422",
 "itemId": 1597422,
 "totalQuantity": 25,
 "reservedQuantity": 0,
 "locationId": 175,
 "type": "Stock",
 "channelId": 12,
 "transitRef": "wo-2002",
 "transitOrderDate": "2019-12-14T00:00:00.000Z",
 "transitStockDate": "2019-12-14T00:00:00.000Z"
 }
]

Tracking stocks

Every transaction, incoming order, and inventory availability process defines the warehouse status and its inventory. It’s important that the OMS and the user-facing sales channels are aware of stock levels to prevent things like over and under-fetching.

In order to track stocks, you need to have a convenient API endpoint that allows you to easily retrieve stock information; however, an endpoint like this can be tricky to implement. You have to ensure that the warehouse system can accurately communicate stock data with the OMS, which involves additional software. You also have to worry about the warehouse system accidentally passing bugs into production. In this case, there is a high possibility that your OMS will be affected and the bugs can be tricky to find and fix in the OMS and in the warehouse.

With fabric Inventory API, you can implement the GET generic inventory endpoint and retrieve the data you need.

The path for that is the following:

GET https://{your-fabric-domain-name}/api-inventory/inventory/generic/{inventoryId}

Forecasting stocks

Inventory forecasting is important as you try to balance oversupply and undersupply. There are several factors you need to perform this forecast, including analysis of past data for the demand of each item and their price elasticity.

If you have an OMS, you can quickly pull important and related data for analysis, and with fabric, you can use the Orders and Inventory APIs to pull important data.

For example, let’s say you need to perform an analysis of when is the ideal time to order stocks in bulk ahead of time and when to order less. For this, you may need to review past sales data and identify the trends for which months you generated a lot of sales and when they were low. Companies like Amazon do similar analyses so that they can forecast demand and pre-order products ahead of time so that they can deliver faster to their customers. For this, you need to pull in past sales data from your OMS. In fabric, you can use the POST order query endpoint to query past sales data, where you can set which timeframe you want. Here’s an example of using the order query endpoint with fabric:

Here’s the endpoint:

POST https://{your-fabric-domain-name}/api-order/orders/query

And here’s the sample request payload:

{
 "offset": 0,
 "limit": 10,
 "sortBy": "createdAt",
 "sortDirection": "asc",
 "filters": {
 "status": [
 "ORDER_CREATED",
 "ORDER_PAYMENT_AUTHORIZED"
 ],
 "date": {
 "gte": "2020-11-01T18:12:03.412Z",
 "lte": "2022-12-03T18:12:03.412Z"
 },
 "orderTotal": {},
 "totalQuantity": {},
 "attributes": [
 {
 "attributeId": "60119337cb662800075717f8",
 "value": "blue"
 }
 ],
 "customerUserId": [
 "string"
 ],
 "customerEmail": [
 "string"
 ],
 "shipTo": [
 {
 "address": {
 "name": {
 "first": "Mark",
 "middle": "p",
 "last": "styler"
 },
 "phone": {
 "number": "555-555-5555",
 "kind": "mobile"
 },
 "isValidated": false,
 "email": "[email protected]",
 "street1": "10400 NE 4th St",
 "street2": "Suite 500",
 "city": "Bellevue",
 "state": "WA",
 "country": "USA",
 "zipCode": "98004",
 "kind": "Ship to address"
 },
 "delivery": {
 "actual": "string"
 },
 "shipping": {
 "actual": "string"
 },
 "promosApplied": [
 {
 "name": "test1"
 }
 ],
 "_id": "602c1511fcc5e900078ba4af",
 "shipToId": 1000001,
 "shipToType": "SHIP_TO_ADDRESS",
 "price": 24.87,
 "currency": "USD",
 "estimatedTax": 10,
 "committedTax": 10,
 "total": 34.87,
 "taxCode": "FR020000",
 "shipmentCarrier": "Fedex",
 "shipmentMethod": "Express",
 "shipmentMethodId": "10000001",
 "promisedDeliveryDate": "2021-02-14T00:00:00.000Z",
 "shipmentInstructions": "Leave at back door",
 "shipmentStatus": "Delivered",
 "readyForPickups": [],
 "id": "602c1511fcc5e900078ba4af"
 }
 ]
 }
}

This will return a JSON object containing query and orders data, which you can use for your analysis and forecast stocks to prepare your inventory.

Managing storage

A warehouse must be able to store its inventory efficiently, and space is a key metric that must be maximized to ensure you’re managing your stock well. It’s ideal to have a centralized dashboard of the warehouse’s status and analytics so that you have an overview of what’s going on with your storage facility.

It’s also helpful to have an algorithm that helps you maximize storage space. The algorithm is optional, especially if there’s a professional assigned to look after it, but the OMS must take care of pulling inventory data and (if possible) creating charts and graphs that can be used to review the information.

If you’re using fabric OMS, you can take advantage of its set of APIs dedicated specifically for OMS so that you can eliminate the development time of building your own and focus on efficiently managing your warehouse’s storage.

Inventory Availability Challenges

OMS systems handle the complexity of managing inventory; however, there are several challenges that you need to be aware of that can impact whether you decide to build or buy a technical solution.

Balancing inventory

Figuring out the ideal quantity of inventory to store is often challenging. You don’t want to be wasteful and inflate your expenses or be unable to meet market demand, losing sales in the process.

An OMS is not able to handle this by itself, and stakeholders may need to get involved in order to balance inventory. A careful analysis of the demand, past sales, and market trends are crucial to avoid issues.

In order to balance inventory, some e-commerce companies adopt a technique from manufacturers called Just-in-Time (JIT) inventory availability, which was initially developed by Toyota and aims to store just enough inventory to meet the demand. Other companies implement ABC Analysis to prioritize items based on the value of products vs. sales generated.

Data analysis of trends

Analysis of trends is highly related to balancing your inventory. By doing so, you forecast trends and prepare for a possible surge in orders. You can also save money by not stocking inventory that isn’t currently in demand.

An OMS alone may not be able to perform analysis, but it can help analyze by providing current sales data. In fabric, you can use the POST order query endpoint under Order API to query past sales data.

Inventory accounting and cost management

The decision to buy more or less inventory depends on the financials of a company and its current cash flow. Because of this, finance and accounting departments often play a critical role in inventory availability decisions.

An OMS provides relevant data like sales information to help decisions involving inventory finance. In fabric, the order query endpoint under Order API can be used for this.

When you’re trying to decide if you should add inventory or not, the accounting department looks at your company’s balance sheet. The inventory, as part of the company’s asset, can only increase if you have the available cash or take out a loan to pay for it. Forecasting stocks and the result of analyzing your past sales obtained from your OMS can help decide whether you should add more inventory.

Inventory audits and reporting

Inventory audits are crucial for an OMS. The inventory status must be transparently reflected to the OMS to ensure that the record of stocks actually represents what’s in the warehouse. This ensures that sales channels are aware of how much inventory is currently available.

Auditing involves checking stocks and analytics to accurately represent the warehouse status on record.

If you have an IMS, it’s important that you communicate the inventory data to the OMS.


POST https://{your-fabric-domain-name}/api-inventory/inventory/bulk-insert

Here’s an example request payload for the bulk inventory import endpoint:


[
 {
 "sku": "1597422",
 "itemId": 1597422,
 "totalQuantity": 25,
 "reservedQuantity": 0,
 "locationId": 175,
 "type": "Stock",
 "channelId": 12,
 "transitRef": "wo-2002",
 "transitOrderDate": "2019-12-14T00:00:00.000Z",
 "transitStockDate": "2019-12-14T00:00:00.000Z"
 }
]

Managing dead stock

Dead stock is the inventory that you can’t sell anymore, especially if it’s perishable. All dead stocks are a loss to the company, but the effects can be minimized if you have effective inventory availability. The OMS must be aware of dead stocks so that it has a true representation of the current inventory. For this, your warehouse system must effectively communicate the warehouse status to the OMS.

If a product is nearing the end of its shelf life, you can consider offering a promotion so that you can quickly liquidate the assets and save some money.

Build or Buy

Let’s look at the factors that should influence your decision to build or buy an OMS system, as it specifically pertains to inventory availability:

Cash flow

As previously mentioned, accounting and finance departments usually have the most influential role in determining your cash flow.

If you’re considering developing your own OMS, then a large portion of your company’s money will be used to build the software. If you’re a large tech company like Facebook, paying for a development team to build and maintain your own OMS may be worth it, as it gives you full control of your software.

However, there are OMS solutions that already exist for a fraction of the cost of building and maintaining your own. Purchasing a pre-built solution also allows you to focus on other aspects of your business, like marketing and customer satisfaction.

If you’re looking for a third-party solution, it’s ideal to choose a headless one like fabric because it gives you the flexibility to scale as needed.

Developer time

If you’re looking for quick development, then a third-party solution like fiber is ideal. Almost half of the development work is done for you, which means your development team can focus on building your website or app instead of implementing lower-level dev tasks.

E-commerce expertise

Leveraging the specialization that a third-party solution like fabric offers you is a clear advantage over acquiring an in-house team of e-commerce experts to work with your development team to create a specialized system. Building your inventory availability requires experts in warehouse and logistics management, who should work closely with the devs in order to properly develop the software.

Buying not only saves you time and money but also lets your company focus on what’s most important to you, especially if it’s not your OMS.

Menard Maranan author Tech advocate and writer @ fabric.

Introducing fabric's Monthly Product Release Blog

April 2022 edition

Questions about scaling commerce?

Send us a question. We'll have a commerce expert answer it.