Table of Contents
Version 2023.2
Updated by Colin
Driver's Documents
The documents that some carriers provide and require when sealing a manifest (for example, USPS SCAN forms) are now referred to generally as Driver's Documents. The process of downloading them from the shipping API integrations in some cases can be very slow or unreliable. We've made this an asynchronous process so the user can do other things while waiting and can easily check back on the progress if no documents are received or see when and where they were printed as well as a button to reprint them from the Scanner UI.
More Manifest Couriers for DHL eCommerce and UPS
If your DHL pickup driver is requiring separate manifests for specific DHL eCommerce services, or your UPS driver is requiring a separate manifest for UPS Mail Innovations packages, we've got you covered! Enabling these in the configuration will cause packages to be routed to new manifest couriers.
System > Configurations:
- Shipping Methods > DHL eCommerce > Use Separate Manifest Code for SmartMail Services
- Shipping Methods > UPS > Use Separate Manifest Code for Mail Innovations
Filter BFOs by Target Ship Dates
You can now filter Bulk Fulfill Orders by Target Ship Date with more flexibility!
Inventory Lock Contention
Database systems use row-level locking to ensure that simultaneous updates to the same row can be serialized to avoid one update having unexpected effects on another update. For "hot" rows (such as a product associated with a large number of orders) this can cause performance degradation as different processes are forced to wait on one another. To partially alleviate this lock contention between multiple processes we have rearranged our inventory tables into six separate groups of columns so that different types of operations (such as picking and order submission) that affect the same products do not have to block one another since they don't update the same columns.
TL:DR; User operations such as picking, packing, and inventory adjustments will be much less affected by heavy activity on the same SKUs resulting in a more consistent and better user experience and increased overall throughput of work.
Performance Optimizations
We've dug deep and found many more ways to optimize the performance of the system in specific areas as well as overall.
- Improved overall response time for many requests on systems with a large number of merchants.
- Measurably faster response times to
inventory.list
andinventory.detailed
API calls. - Order of magnitude faster response times for
order.search
API calls in some edge cases. - Submitting orders is 2-15 times faster and the portion of time spent locking inventory is in some cases reduced by half.
- Faster order reallocations, particularly for committing new inventory with a large number of backorders (depending on several factors).
Device Hub
- Add Upgrade Center tool for mass upgrades
- Add Network Diagnostic tool
- Many improvements were made to the client software. See release notes for Device App 1.8.14 and Device Service 2.3.18
- Add negate option to filters
- Manual Serial Scale setup now lists only present COM ports with description of COM port device if available
- Fix search and filter issues for devices and event logs
- Fix Add/Remove device on mobile
- Fix connected clients count and add total or filtered device count and total or filtered log count
- Fix Machine Filter for Logs
Other Improvements
General
- Sanitize date input values for lot tracking info to prevent recording obviously incorrect values (e.g. 0024 is assumed to mean 2024) - auto-corrected existing data entry errors
- Fixed slow add/remove package from large Manifests
- Fixed batches created using wrong locations violating burn order in some edge cases
- Fixed a condition that could cause a SKU to have a negative "Picked" quantity
- Fixed a unexpected error that could occur when adjusting inventory via the Admin UI
- Fixed auto-assigned locations when generating a Bulk Fulfill Order to choose unreserved locations rather than reserved locations in some cases
- Fix setting Special Supplies attribute via product import
- Added Warehouse and Tracking Numbers fields to delivery email templates
Scanner UI
- Fixed number of labels printed upon clicking Finished Receiving to match the number submitted by the user rather than the number of original containers
- Fixed delivery items unable to be put-away when the Lot Type was changed during receiving to one that had no user input fields
- Improve client-side and server-side validation of Collected Data to prevent extra scans from causing multiple data collections in edge cases
Tracking
- Improve handling of unusual tracking details and errors
- Added times to all status icons
- Added informative icons and tooltips to map markers
- Color coded bullet points of tracking details
Easypost
- Capture the Commercial Invoice and CN22 documents from the create shipment response
Shopify
- Shopify order notes are now captured as Internal Notes and Shopify Fulfillment Request message is now captured as an order comment instead of Internal Notes
- Shipments with multiple packages are now recorded as a single Fulfillment rather than one Fulfillment per package to avoid race conditions as Shopify splits partially fulfilled Fulfillment Orders
- Automatically re-link new Fulfillment Requests to existing orders after uninstalling and re-installing the app
SPS Commerce
- The Vendor ID field is no longer required or used for matching incoming documents to Merchant Integrations - only the Trading Partner ID is required. The Vendor ID was moved to the Inventory Advice configuration as it is still needed when generating Inventory Advice documents.
- Support incoming order items to match products by Barcode and Vendor SKU attributes
- Return the originally requested Buyer Part Number and Consumer Package Code with Order Ack and Shipment documents
- Added the origin warehouse address with type code
SF
to generated Shipment documents - Improve out-of-the-box mapping of shipping methods to standard Carrier Routing values for generated Shipment documents
- Added a Shipment Transformation Script to provide more flexibility when formatting the 856/Shipment document
Merchant API Changes
- Updated the
order.create
method to acceptbarcode
andvendor_sku
keys for order items to support product matching by these fields in addition tosku
. - Added a fifth parameter to
order.create
called$flags
which provides the ability to add aunique_order_ref
key which may betrue
or a string indicating a time since which theorder_ref
must be unique. - Added a
package:packed
webhook topic for when the package advances topacked
status, whether frompacking
or fromtracking_required
. - Added
package_id
to anywhere a package is returned in the webhook payloads (e.g.shipment:packed
) - Fixed
inventory:adjusted
event was not firing after location import. - Added
shipment_id
andupdated_at
to theshipment:*
events. - Added packaging features to the
packages[]
data for theshipment:*
webhook topics andshipment.search
method using the keypackaging
. - Added some missing fields to
shipment:*
webhook topics to bring them to parity with the return value forshipment.search
. - Added
status
to thepackages[]
data for theshipment:*
webhook topics andshipment.search
method. - Added
delivery_type
to alldelivery:*
webhook payloads to distinguish ASNs from RMAs. - Return a
files
field when usingdelivery_label.create
with areturn_service_type
ofprint_or_download
so that the generated return label may be downloaded via the API. - Allow the
files
field to be returned on request fordelivery_label.info
anddelivery_label.search
methods.
Grid Changes
- Add 'Tracking Status' column to Packages grid