Table of Contents
Updated by Colin
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.
- 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.
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
- Order of magnitude faster response times for
order.searchAPI 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).
- 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
- 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
- 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
- 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
- Capture the Commercial Invoice and CN22 documents from the create shipment response
- 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
- 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
SFto 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.createmethod to accept
vendor_skukeys for order items to support product matching by these fields in addition to
- Added a fifth parameter to
$flagswhich provides the ability to add a
unique_order_refkey which may be
trueor a string indicating a time since which the
order_refmust be unique.
- Added a
package:packedwebhook topic for when the package advances to
packedstatus, whether from
package_idto anywhere a package is returned in the webhook payloads (e.g.
inventory:adjustedevent was not firing after location import.
- Added packaging features to the
packagesdata for the
shipment:*webhook topics and
shipment.searchmethod using the key
- Added some missing fields to
shipment:*webhook topics to bring them to parity with the return value for
packagesdata for the
shipment:*webhook topics and
delivery:*webhook payloads to distinguish ASNs from RMAs.
- Return a
filesfield when using
print_or_downloadso that the generated return label may be downloaded via the API.
- Allow the
filesfield to be returned on request for
- Add 'Tracking Status' column to Packages grid