Shipping Container Management in NetSuite


When we talk to other NetSuite users we typically hear about what works and what doesn’t work whether it is with their current process or system. We’ve had a lot of conversations with users about gaps that they’ve identified with shipping container management in NetSuite. The problem is that items shipped to the USA from overseas need to be received into inventory while they are shipping. However, the items are not available to the customer until they arrive in the U.S. The receiving process is a manual, time-consuming process with many steps. Another issue they’ve experienced is that when manually performing these tasks in native NetSuite there is no link between items received into the temporary “On the Water” location and Items transferred out to the final destination. It’s difficult to differentiate which PO’s have actually arrived from those that are still “On the Water” as you can see quantities for on the water but not which PO it is.

Since shipping container management was a recurring topic that came up in conversation, we developed a solution for this. The solution that we created is able to:

  • Automate the “On The Water” receiving process in a repeatable, predictable process with as little human intervention as possible, while maintaining the integrity of the Inventory numbers and NetSuite’s native inventory processes.
  • Give the users a PO level view of their “On the Water” inventory for planning and reporting purposes.
  • Give the customer a view of past container receipts and contents to evaluate and report on vendor performance.
  • Automate the generation of the Vendor Bill to AP at the container/PO level for easy Payment and Reconciliation.

The solution consists of the following components:

Data Import: Import Vendor Invoice/Packing data to a record called Container Items. These are the SKU’s, QTY’s and unit price of each item in the container according to the vendor documents.

A process to find the Container record (in another record called, Container Tracking) or create a new Container Tracking record.

The Container is uniquely identified by concatenating three Text fields; all provided in the import.

  1. Container Number
  2. Vendor Invoice Number
  3. Seal Number

A process to match the container item to a PO: Using a field called Vendor PO Number, the containers are matched to PO records. After Submit, a user event script attempts to match each new container item to a line item on PO. This is done by comparing:

  1. Vendor PO Number
  2. SKU (item name/id)

When a match is found a field on the PO line is updated with the Container Item ID and the Container Item status is set to Ready. If NO matching PO line item is found, the Container item status is set to “Manual Process.”

Scheduled Process: A Scheduled Script runs, according to the schedule setup by the user (i.e. every 15 minutes, 2 hours, 1x per day, etc.), that looks for Container Tracking records with a status of ‘Ready’ and then Attempts to process the items that are marked as ready in each “ready” container. If an item is NOT marked as ready and the container is, that item will be skipped and the process will skip to the next item marked as ready.

NOTE: There are customizable pieces, such as the default status for containers could be ‘Ready,’ in which case no manual intervention would be required to process the container or the default status can be ‘New’ so they aren’t processed until the user marks them as ready. Containers that are not marked as ready would not be processed and would stay in their current status until changed to ready. The Items in that container would NOT be received into inventory until they are marked as ready. In addition, the unit price and quantity tolerance as well as line item validation are configurable.

Once the item is received to “On the Water” the item is Added to a Vendor Bill for AP, linked to the container as well as the PO for reconciliation AND added to a Transfer Order destined for the items final location (warehouse/store).

The items on the Transfer orders are committed to the order (i.e. the Available column of the on the water location should always be 0).

When the item arrives at the warehouse the and the actual number received is verified the user sets the actual receipt number on the transfer order and clicks a button to receive the entire container in one action. Overages and shortages are handled in this process as well so you never have to receive inventory that was not in the container into your warehouse and never leave excess inventory “on the water”.

*The solution that we’ve outlined was created for a specific customer, but it can be customized based on individual needs and goals.

Managing Your NetSuite Database

Over the last few years we’ve experienced quite a few NetSuite implementations and have helped a few move to a “Phase 2” implementation or added customizations for items such as “On the Water Inventory” or “Container Inventory” management. All in all, most companies have managed to move their use of NetSuite forward and have gained many improvements in their processes that a move to NetSuite promised. That’s the good news – NetSuite rocks and is continuing to make a dramatic impact on business efficiencies throughout the world.

So, now the bad news – with all the new process comes a lot of trial and error as well as improvements on your improvements. Adding to the complexity of data and process inputs are the introductions of new NetSuite administrators and power users through the years of NetSuite use. Each time a new administrator is added to the equation comes a need/desire to analyze and implement new process improvements, create new searches, reports and custom fields, to help them with their tasks. My question to you is “How many searches, reports and custom objects exist in your system for no other reason than everyone had forgot about them or they’re outdated?” What’s the impact on those unused data points? Maybe none? Maybe lots?

Well, here’s a sample of data generated by using FloDocs, from an account we service:

Account went live: 2008
Searches that haven’t been accessed in the last 6 months: 2506
Unused custom fields: 922
Unused scripts: 331
Unused records: 40

The list of metrics goes on, but the point I’m making is that there’s a desperate need to review your NetSuite systems and make sure you’re working with the cleanest and most efficient systems possible.

Another item that seems to go unspoken is the need for change management. How many of you are actively updating or implementing changes to your live NetSuite environment on a regular basis? Hopefully, most of you are testing new workflows, scripts, etc in a NetSuite Sandbox account prior to implementing in your live system, but I know that’s not always possible. In either case, we feel you should institute some type of change management tool. It could mean the difference between a catastrophic mishap with days to recover, if you recover, or use the change management system to revert back to a saved status in minutes/hours.

At the end of the day, if you haven’t considered putting tools or processes in place to protect and manage your systems, you should. If you’re interested in running a few tests to evaluate your system, the team at FloDocs have built a great tool to handle everything mentioned above plus much more. You can reach out to them directly or work with us and we’ll use our FloDocs instance to run some analysis for you. I bet you’ll be surprised with the results.