This article is relevant if you are looking for a NetSuite-based method to gain control and manage inventory allocations and commitments.
Background
Many times I am asked by prospective NetSuite clients to help lead an improved operations design. The classic challenge I see is when an organization replaced QuickBooks with NetSuite to gain “cloud benefits” but really only implemented general ledger, accounts payable and perhaps accounts receivable functionality. This often leads to a discussion of the goal of maintaining a perpetual inventory. Indeed, NetSuite can support real-time perpetual inventory but only so-far as practices are adopted that track the actual movement of goods; easier said than done.
Thus, the ability to maintain a perpetual inventory is one of the hallmarks for making assessments about an organization’s process maturity. Closely aligned with the perpetual inventory practice is the need to allocate inventory. Allocation situations present themselves when there is greater demand for goods than we have on hand. The topic brings forth the need for better forecasting, often discussed as “demand planning”, so that you can build a supply plan that will bring inventory on hand when it is needed. Thus, as one begins to think about these problems, it becomes more apparent that fundamentally, management needs to make better speculations about the future so they can prepare today for what they will need tomorrow. Preparation may mean gathering sufficient capital, human resources, operational practices and narratives that drive profitable action.
In the game of business, the point is to make offers in the form of promises that produce fulfillments that ultimately create declarations of satisfaction. Allocations, especially as they are designed for specific customers, are a form of promises. When we allocate inventory to a specific customer, we are basically making the promise to produce a fulfillment ahead of fulfillment to others. If we have insufficient inventory to take care of all of our demand in the form of orders, we need some kind of mechanism to prioritize who will get what.
NetSuite Inventory Commitments
NetSuite offers an inventory commitment feature to help you produce allocations. Depending on the way you configure the system, you can prevent item fulfillments from happening unless you have inventory committed on a respective sales order. Inventory commitments are quantity oriented and are ways to “hold (allocate) inventory” on order lines (typically sales orders and work orders) so that you can only perform the real inventory movement (an item fulfillment or and assembly build respectively) based on the “created from” order line quantity. Readers may be interested in my previous articles to understand how NetSuite works with these important counters:
- Learn how to get Control over NetSuite Backorder Situations
- How To Produce Additional Transactional Financial Information When Learned Late in Process
Out of the box, NetSuite has automatic versus manual commitments activated. In the manual inventory commitment mode, nothing will get allocated to an order unless you effectively manipulate the quantity committed on each sales order line. The manual method for inventory commitments is controlled by the global preference switch, “Perform Item Commitment after Transaction Entry”. Once in manual mode, another NetSuite subsystem emerges that gives you control over the manipulation of item commitment quantity. Thus, you can get full control over the allocation method in this manner.
NetSuite Automated Order Priority Inventory Commitments
The manual method is an “all or nothing approach”. Thus, it likely overreaches in the sense that now you need to do work all the time, in some fashion, to control inventory commitments across all inventory items. Fortunately, NetSuite gives you other methods to allocate inventory via commitments in an automated manner. I would like to focus here on the Order Priority method to discuss how one of our senior consultants, Boban D., listened to our client’s concerns and invented a manner that proved relatively easy to understand in use and needed only light automation to run seamlessly.
The “Inventory on Reserve” Sales Order Type
The first idea is that we can craft a sales order that we will type, through a custom field, as “Inventory on Reserve”. The idea is that any lines on this sales order will never actually be fulfilled — they instead will be fulfilled on another real order. Activating the Commitment based on Order Priority, we can set a priority number (lowest being the highest priority) as a means to sort which order lines are globally higher in priority for NetSuite to automatically allocate. In this model, we set the Customer Default Order Priority to be 100 so that regular sales orders will source line priority to start at 100. This is our “normal” priority.
When we want to reserve inventory for a specific customer, we create a sales order of type “Inventory on Reserve” and we set the line order priority to 1. We approve the sales order with a warehouse location so that the commitment feature allocates to this very high priority order. We prevent an item fulfillment or invoice from ever generating against this order. While there are different ways to prevent the item fulfillment and invoice from generating, most of our clients see the value in our rules-based Record State Manager framework to drive the process. See article Learn How to Build Scalable NetSuite Sales Order Practices here for background information.
Now, real sales orders are entered and these “normal” orders will get a priority of 100. With some light automation, perform a saved search lookup to see if the customer has an “Inventory on Reserve” sales orders in play with matching line items. If matching lines are found, then perform the following:
- Increase Priority on Real Sales Order: Modify the order priority on the Normal matched sales order lines to something slightly below the highest level (e.g., 2). This makes those lines have a strong affinity to the automated commitment algorithm.
- Reduce Quantity on Reserve: Reduce the number of items on the Reserve order by the Normal order quantity. This will effectively set the inventory needed free to then be allocated to the Normal order.
NetSuite Inventory on Reserve for Allocation
Under the method above, we then have a mechanism to control how much we “promised” via allocation and how much has been consumed over time. The “Inventory on Reserve” sales orders are now a new subsystem in the planning manager’s toolset. When working on a specific item, we use NetSuite’s handy sublist feature to show which customers have which quantities of “Inventory on Reserve”.
NetSuite Innovation to Drive Better Practices
The innovation above offered by our senior consultant is the hallmark of how you can use the NetSuite platform to drive better management practices. The method invented allows you to focus only on inventory where there are concerns. Getting control over situations and driving NetSuite behavior is one of the major reasons our team is valued. We take our expert understanding of the NetSuite tools and our capacities for invention to drive better practices, information visibility and ultimately, customer loyalty by helping our client’s customer declare their satisfaction.
If you found this article helpful, subscribe to get notifications of new articles. If you would like to drive better inventory management in your NetSuite system, let’s have a conversation.
This sounds nice. I want to make sure I understand. Are you proposing that we have a Sales Order running under this customer at all times, this “reserve” SO? Or optionally running it for the length required for that order? I suppose it’s optional to open it, close it, add lines, close lines, change quantities on each line, etc. And that this SO drives their real SO’s? Or did I miss something? Thank you.
Hi Jason,
I am proposing that each customer has a Reserve Sales order for all the lines where you made allocation promises. This sales order can live as long as necessary. The script will automatically wind it down and certainly can be pushed to close the line as real sales orders eat away at it.
Marty
Hey Marty,
Is there any way to access this “Order Priority” with a workflow or script? It seems like this could be automated to avoid accessing each SO every week to reassign allocation. This way we could assign our own criteria to order priority.
Hello Heath,
Yes, “orderpriority” is a field available on the items sublist of a sales order. You should be able to get at that value with a script.
Marty
“orderpriority” is available to scripts, but annoyingly not to Workflows