Marty Zigman - The NetSuite Expert

Conversations with Marty Zigman

Certified Administrator • ERP • SuiteCloud

Prolecto Labs Accelerator Templates

Drive a NetSuite Customer Blanket Sales Order Program

Accounting ERP General NetSuite



This article is relevant if you seek to drive a NetSuite based customer based blanket purchase order program that will automatically manage allocated inventory and release orders.

Background

Many business-to-business (B2B) distribution and manufacturing companies use the concept of blanket purchase orders as a way to plan future deliveries. A blanket is a tool used by both the customer and the supplier to help drive commitments which then enable both parties to plan in advance for when goods will be delivered. Organizations that wish to produce more predictability in their supply chain use blanket transactions to better inform all parties about lead times and other sourcing commitments.

NetSuite’s Blanket Purchase Orders are focused on helping companies purchase future raw materials.   However, the nature of this topic is to focus on suppliers that need to deliver goods over longer time horizons to their customers. Thus, often the term Customer PO is synonymous with the NetSuite Sales Order.  One may then ask, “How do you set up a NetSuite Blanket Sales Order Program”?  NetSuite does not really have an offer; although they have tools like contracts; these were designed for service commitments and not inventory-based transactions.

I spoke about a simple solution in 2017 under my article, Advanced Practice: NetSuite Customer Blanket Purchase Order Management.  This solution focused primarily on dollar volume commitments and not on inventory.

For a client that distributes a high volume of apparel, we designed and implemented such a NetSuite Blanket Sales Order program with a focus on inventory management. The nature of this article works with the fundamental concepts of item commitments in relationship to blanket sales orders.   NetSuite Item commitments give you a number of control options — the standard configuration is to automatically commit inventory to the first order that is approved. However, by using non-automatic (e.g., scheduled) item commitments, you can get more control over the item commitment algorithm.  See article Learn How to Gain Control over NetSuite Inventory Allocation Challenges to better understand item commitments to gain more understanding of how to work with the subsystem.

Customer Blanket Sales Order Concepts

Since the Sales Order is a key NetSuite concept used to manage customer demand, the record is very important in creating a Blanket Sales Order Program especially if we are going to manipulate inventory.  Other transactions, such as quotes and opportunities, while they inform NetSuite’s Item Demand management, they do not allow for actual item commitments.   As such, we want the blanket to indicate the overall demand for goods for a specific customer. Thus, we first distinguish Sales Orders by type:

  1. Normal: typical sales order deserving no special treatment.
  2. Blanket: an order that that represents the blanket. We do not fulfill this order, but we do use it to hold pricing agreements, overall blanket quantities, and allocate inventory.
  3. Release: a formal request for a portion of the blanket sales order.

Blanket and Release orders are linked to each other. As release orders are entered (typically electronically in a high volume environment), the blanket order needs to be decremented for the release order quantities.  Without automation, this can be quite cumbersome.

Item Commitment Considerations

NetSuite drives allocations via the item commitment feature. The Blanket Order can be shaped to hold item commitments — just like any other sales order.  However, the way we hold item commitments on the blanket is a matter of policy.  Depending on the organization’s capacity to keep inventory on hand for the future Release orders, they can devise inventory allocation (commit) strategies to the Blanket Order. Naturally, the concept of anticipated delivery windows becomes a concern when there is more demand for inventory than available.  NetSuite line commitment option allows you to commit full or partial quantities of items.

The key to a successful Blanket / Release Sales Order strategy is to devise an algorithm to give up item commitments held by the Blanket to the Release order.  It is simple to think, “decrement a commitment from the blanket order while incrementing the commitment to the release order”.  But it is not that simple.  The important thing to understand is that you can’t directly make item commitments happen via scripts. You have to attack item commitment allocations indirectly.  Thus, you need to get creative.

Introducing a Blanket Order Controller with the Commit Order Schedule

When you turn off automatic NetSuite Item Commitments, you are presented with a subsystem to schedule item commitments. The system allows you to define item commitments using saved search criteria to target a number of lines on sales orders to be inspected to “draw” available items into commitment. A Reallocate Open Quantities switch allows item quantities committed to one set of orders to move to another set of orders. An order priority quantity helps to sort which orders have more pull relative to other orders.  Without respect to the priority setting, our experience shows that the way we present lines (via sort) via the saved search drives the algorithm priority handling

The challenge with NetSuite’s Commit Order Schedule system is that it only allows for either static search or other query definitions. But a Blanket Sales Order program needs to have stronger blanket/release order affinity so that blanket orders will give up their commitments to their respective release orders.

Blanket Controller

We designed a Blanket Order Controller to be a system that runs on a scheduled routine to help watch and control NetSuite’s Commit Order Schedule routine. You can not manipulate the Commit Order Schedule directly from script. But we can manipulate some elements that the Commit Order Schedule is using to perform its work.

  1. Blanket Order Management: when a release order is found, we effectively decrement the number of items ordered on the blanket order to free up allocated inventory;
  2. Release Order Management: we manipulate the order priorities on the release to a higher number.  We use this in our sorting.
  3. Commit Order Schedule Saved Search: We dynamically manipulate the Saved Search that is being referenced by the Commit Order Schedule so that it then sees both the Blanket and Release Orders. This search needs to be controlled so that it produces the affinity between the blanket and release order.  Under normal circumstances, this search returns no results;  but as soon as we see we have a release order for our blanket, we then manipulate the search so it returns our blanket and release order.
  4. Controller Monitoring: the environment is monitored under the supervision of the Blanket Order Controller. This is done via scheduled scripts that are watching the state of the orders while NetSuite’s native Commit Order Schedule does its work.  Since we are anticipating what is going to happen, we look for the expected states and we refine the transactions as NetSuite touches our orders; our controller then keeps the system operating as designed.

Drive a Blanket Sales Order Program

Our client was very pleased with the solution as it freed them from having to worry about inventory allocation for these orders. The blanket orders were for their best customers and they wanted to make sure these orders received extra attention and care. In their case, their primary focus was to ensure they had enough inventory to satisfy the blanket; as release orders arrived, they had no worries or manual work to do to automatically assign item commitments to respective orders.

Like all the things we do in our firm, we bring all our intellectual property to our clients without license-charge to help them get more value out of their NetSuite investment. Thus, we can bring this algorithm to other clients to solve their Blanket Purchase (Sales) Order challenges.

If you found this article helpful, feel free to sign up to receive notifications of new articles as I publish them. If you would like to automate your NetSuite Blanket Sales Order program, let’s have a conversation.

Marty Zigman

Holding all three official certifications, Marty is regarded as the top NetSuite expert and leads a team of senior professionals at Prolecto Resources, Inc. He is a former Deloitte & Touche CPA and has held CTO roles. For over 30 years, Marty has produced leadership in ERP, CRM and eCommerce business systems. Contact Marty to set up a conversation.

More Posts - Website - Twitter - Facebook - LinkedIn - YouTube

About Marty Zigman

Marty Zigman

Holding all three official certifications, Marty is regarded as the top NetSuite expert and leads a team of senior professionals at Prolecto Resources, Inc. He is a former Deloitte & Touche CPA and has held CTO roles. For over 30 years, Marty has produced leadership in ERP, CRM and eCommerce business systems. Contact Marty to set up a conversation.

Biography • Website • X (Twitter) • Facebook • LinkedIn • YouTube

4 thoughts on “Drive a NetSuite Customer Blanket Sales Order Program

  1. David says:

    In your scoping/investigations for this solution, how did the 2019.2 feature “Supply Allocation” (SuiteAnswer:87874) stack up with the requirements?

    I had been intending to implement “Order Priority” to manage blanket sales orders (re your article Learn How to Gain Control over NetSuite Inventory Allocation Challenges)

  2. Marty Zigman says:

    Hello David,

    I believe the real challenge is narrowing the scope of allocation from the customer’s blanket to the customers’ release order. Do you see a route with NetSuite’s allocation strategies built-in? In addition, I don’t see any NetSuite Blank Sales order concept. So it’s up to us to innovate.

    Marty

  3. Russell Gardiner says:

    At what point is the invoice raised? Can the invoice be raised at the point of order and then the stock held and called off as required?

  4. Marty Zigman says:

    Russell,

    We are very careful about that invoice generation event. It generally is when revenue is recognized. Please see my related invoice best practice article:
    https://blog.prolecto.com/2019/05/26/best-practices-for-automating-netsuite-invoice-generation/

    My suspicion is that there is more going on in your practices. Might you need customer deposit accounting?
    https://blog.prolecto.com/2018/03/24/exploring-netsuite-credit-card-and-invoicing-cash-sale-processing-options/

    Marty

Leave a Reply

Your email address will not be published. Required fields are marked *