Multi-Fulfillments: A NetSuite Item Fulfillment Challenge


This article is relevant for organizations where creating drop shipments or multiple fulfillments derived for one sales order is commonplace and the native per-line shipping is insufficient to support the needs of the organization.


Over the past year, many organizations were forced to change tactics and adjust their business processes to tackle the numerous challenges they were faced with. Many of our clients processing sales orders to deliver goods have historically created a single item fulfillment to ship products to a single ship-to destination. Of course, all of that changed last year as offices were shuttered, in-person events were canceled and so many people were now working from home.

As a result, the requirement to create multiple item fulfillment records quickly and easily for a single sales order became an increasing challenge. Now, just to be clear… I’m not talking about having to create 5 or 10 item fulfillments for different ship-to locations. For some, it meant having to create hundreds or even thousands of item fulfillments; one for each distinct ship-to location. One common use case was a sales order was placed by a corporate client that wanted to send an item, kit or collection of various items to each of their employees working from home.

One key challenge is that the client would need to generate purchase orders and begin the production process before all of the addresses were known or received. It was impossible to get these all entered into the lines of the sales order anytime early in the process and prior to the transaction transformations. This only increased the pressure on our clients to ensure that the list of ship-to addresses are correct and complete so that the products can be shipped on time. Oh, what to do!

Pre-Fulfillment Records

Prior to the NetSuite item fulfillment records being created, our approach to handling this scenario was to start with a distribution of the goods contained on a sales order across several fulfillment groups consisting of pre-fulfillment records (PF’s).

We provided two (2) different methods to handle the distribution and routing of the items and quantities to be shipped to the various locations. For sales orders with a variety of products being shipped to less than fifty (50) ship-to locations, we enhanced the sales order user interface to enable a manual entry method with rapid copy and cloning features to make the UX easy to handle.

For larger scale multi-fulfillments, we’ve developed a template (Excel) to enable a simple drag and drop into NetSuite to create all the required pre-fulfillment records.

Fulfillment Group Creation (UI)

For starters, we added a new subtab on the sales order to allow users to manually enter those pre-fulfillment product definitions and shipping details.

Manual entry method for specifying pre-fulfillment records

When the user clicks on the Specify Pre-fulfillment Details button, a pop-up window appears that enables the user to easily break-down and split the items and quantities to be shipped to each distinct ship-to address.

Pre-fulfillment modal window for manual entry

This intuitive entry overlay will track how many pieces still require distribution as you create the fulfillment groups. Fulfillment groups contain independent ship dates, ship methods, ship address, and the item(s) to be shipped to each destination.

With simple “Add” and “Copy” operators on both the fulfillment group level and the item level, the entry is quite rapid for the user.

If a user enters an item quantity greater than the available quantity, then the field will highlight in error to prevent over distribution.

Check out this video demonstration of creating multi-fulfillments via the UI.

Fulfillment Group Creation (Import)

For orders with many ship-to locations, we built a separate drag-and-drop upload method that is able to consume either a CSV-formatted file or an Excel (.xlsx) file to automatically create pre-fulfillment records. Of course, we provide a template that users can download from this page to ensure that the data is properly aligned for upload.

Here is a video of the fulfillment group generation via CSV import.

UPDATE: We have enhanced the import UI to allow for pre-classifications and no longer require a single item fulfillment prior to upload.

CSV or Excel file drag-and-drop for large address/shipment lists

Before this upload process actually kicks-off, some basic data validations are first executed to help avoid common user errors when handling these lists. These pre-upload validations include confirming required fields are populated and that data types of each field match the respective column heading. We also perform address validation checks for US-based shipping addresses.

Once the upload process is complete, the pre-fulfillment records can immediately be viewed from the Sales order record.

Sales order view of pre-fulfillment records created

Auditing and Reconciliation

Now that pre-fulfillments are loaded, there are several sub-tab searches and auditing tools available to allow for reconciliation of every item being shipped and to ensure no items are left behind. In the image below, you can see mismatch summary searches, status of the import processing, and all of the items compared to both lines on the sales order vs. pre-fulfillment records.

Sample of Pre-fulfillment Auditing screen

Fulfillment Transformation (Map/Reduce)

Now that the pre-fulfillment records have been uploaded, a MultiFulfill function can be kicked-off by the user via a custom button on the sales order. This action will launch a Map/Reduce script in the background to create native NetSuite item fulfillment records; one for each ship-to address containing the items and quantities to be shipped to each location.

Item fulfillment for ship-to address #1
Item fulfillment for ship-to address #2


Multiple drop shipments and item fulfillments can be challenging to manage within the native constructs due to high transaction line counts and coordinating items to all shipping addresses, where you need to enter the same address on multiple lines. Three (3) items per fulfillment for five hundred (500) destinations yields a 1500 line sales order when using native means. This is simply unmanageable in our eyes. The problems are often further compounded when these shipments are not handled by an internal warehouse, but instead are being drop-shipped by vendors or a third-party logistics providers (3PLs).

These operations have matured and run to scale with certain clients performing thousands of fulfillments per sales order on a regular basis. Defining the addresses and items is a challenge no matter what tool you use, but we strive to make it as least painful as possible with our toolsets.

If you’re a high volume shipper looking to pull or order bulk quantities and then automatically transform them into multiple shipments, drop us a line via our contact us to see if some of our common practices and solutions would work for you.




eXtendTech is a NetSuite solution partner that develops applications to improve efficiency, productivity, and savings within the NetSuite platform.

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Handshake Mobile Redesign

Introduction to Stageverse — the Atrium

Creating Beautiful Professional Presentations

Design in daily life

The Basic Principles Of Home-elevator

Putting Research Into Action: Brainstorming & Prototyping

Lab team members reviewing sticky notes full of ideas after a brainstorming session

Book Review-Intertwingled: Information Changes Everything

Undercovering the Value of Human Factors

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
eXtendTech Team

eXtendTech Team

eXtendTech is a NetSuite solution partner that develops applications to improve efficiency, productivity, and savings within the NetSuite platform.

More from Medium

One of the longest flights in the world

Our Trip to Spurwing Island Lodge, Lake Kariba, Zimbabwe.

Authentic Paella Valenciana Recipe

Authentic Valencian Paella

Friday Five: NHS scam alert for free Covid test texts

Fake NHS webpage for ordering PCR test kit