Items that are purchased-to-order, are generally inspected by the receiving worker. He or she should immediately tag the item, to avoid mistakes upon picking. When a purchase order line is directly linked to a sales order line, standard Microsoft Dynamics 365 for Finance and Operations can put the received item on a specific cross dock zone or cross dock location.
Challenges in standard Microsoft Dynamics 365 for Finance and Operations :
Warehouse Management supports the cross docking process for purchase-to-order items in an efficient way.
In Microsoft Dynamics 365 for Finance and Operations it is possible to setup Document routing layouts to print labels on a Zebra printer or similar. The label printing can be triggered from a work creation process on the mobile device, or from a work line print step.
Challenges in standard Microsoft Dynamics 365 for Finance and Operations :
Warehouse Management adds this functionality and more, e.g. example shipping labels for common carriers.
Important
Warehouse management > Setup > Document routing > Document routing layout
The table license plate labels contains the data for label printing.
Field | Description | Remark |
Put away label |
Mobile device menu item for a work creation proces Print label = yes |
Microsoft Dynamics 365 for Finance and Operations |
Work label |
Work template line of type Print, which generates a print work line that is executed once per work prior to the first put step |
Microsoft Dynamics 365 for Finance and Operations |
Wave label |
When processing the wave, a strip of labels can be printed upfront. These labels can be given to the picker before he starts the actual picking process |
|
Cross dock label |
Label that can be generated upon receipt instead of the standard put away label |
Warehouse Management |
Pick label |
Completion of a work line if there is a valid pick label print policy |
Warehouse Management |
Shipping label |
Closing a container on the packing station. The user that is set on the packing station form is included in the license plate label |
Warehouse Management |
Each field can be included as a variable in the ZPL code of the document routing layout. Each field can be used in the criteria of the document routing. E.g. define a specific label layout for certain customers, carriers etc based on a query on the license plate label.
Warehouse Management creates the labels with the following data (note that some fields were not filled by standard Microsoft Dynamics 365 for Finance and Operations functionality):
Field | Description | Remark |
Account name |
Put away label: Vendor account name Work label: Customer account name or Contact person name (depending on parameter Warehouse mgt > Print mgt) Cross dock/pick/shipping label: Contact person name or Customer account name (depending on parameter Warehouse mgt > Print mgt) |
$AccountName$ |
Account number |
Customer ID or Vendor ID |
$AccountNum$ |
Batch number |
Identification of the batch (single SKU only) |
$InventBatchId$ |
Bill of lading |
BOL number |
$BillOfLadingId$ |
Carrier |
Carrier (first part of the mode of delivery) |
$CarrierCode$ |
Color |
Color (single SKU only) |
$InventColorId$ |
Configuration |
Configuration ID (single SKU only) |
$ConfigId$ |
Container ID |
Shipping label: Container ID |
$ContainerId$ |
Customer requisition |
$CustPurchaseOrder$ | |
City from |
Load address, from city |
$AddressCityFrom$ |
From location |
Location from |
$WMSLocationIdFrom$ |
From name |
Load, from name |
$FromName$ |
From state |
Load address, from state |
$AddressStateIdFrom$ |
From street |
Load address, from street |
$AddressStreetFrom$ |
From zip / postal code |
Load address, from zip code |
$AddressZipCodeIdFrom$ |
From zone ID |
From zone (work line) |
$ZoneIdFrom$ |
GS1 company prefix |
Prefix from the WHS parameters |
$UCCCompanyPrefix$ |
Handling quantity |
$InventQty$ | |
Handling unit |
$InventUnitId$ |
Inventory profile |
Inventory profile (single SKU only) |
$InventProfileId_RU$ |
Item number |
Released product number (single SKU only) |
$ItemId$ |
Label format |
Label format |
$LabelFormat$ |
Label ID |
$LabelId$ | |
Label report name |
Label report name |
$LabelReportName$ |
License plate |
$LicensePlateId$ |
Line number |
Line number of order |
$LineNum$ |
Order number |
Sales order, Transfer order, Production order, Purchase order |
$OrderNum$ |
Ordered quantity |
Original quantity on order line (inventory unit) |
$OrderedQty$ |
Owner |
Owner ID |
$InventOwnerId_RU$ |
Packing quantity |
Packing quantity |
$PackingQty$ |
Printed date |
Date on which the label is created and printed |
$PrintedDate$ |
Pro number |
Pro number of the shipment |
$ProNum$ |
Product name |
Name of the released product |
$ItemName$ |
Remaining quantity |
Remaining quantity for order line |
$RemainingQty$ |
Serial number |
Serial number (single SKU, single serial number only) |
$InventSerialId$ |
Shipment ID |
Shipment number |
$ShipmentId$ |
Site |
Site of the load |
$InventSiteId$ |
Size |
Size (single SKU only) |
$InventSizeId$ |
Style |
Style (single SKU only) |
$InventStyleId$ |
To city |
Deliver to city |
$AddressCityTo$ |
To country/region |
Deliver to country |
$CountryRegionIdTo$ |
To location |
To location (put location of the work) |
$WMSLocationIdTo$ |
To name |
$ToName$ |
To state |
Deliver to state |
$AddressStateIdTo$ |
To street |
Deliver to street |
$AddressStreetTo$ |
To zip / postal code |
Deliver to zip code |
$AddressZipCodeIdTo$ |
To zone ID |
$ZoneIdTo$ | |
Unit |
$UnitId$ | |
User ID |
$UserId$ | |
Warehouse |
Load from warehouse |
$InventLocationId$ |
Weight |
Gross weight, summarized item gross weight and container tare weight |
$Weight$ |
Work center location |
Work center location ID |
$WorkCenterLocationId$ |
Work ID |
Work ID |
$WorkId$ |
Work order type |
Sales order, Raw material picking, Transfer issue, Purchase put away, etc. |
$WorkTransType$ |
Work quantity |
$Qty$ | |
Work template |
Work template code |
$WorkTemplateCode$ |
Field | Description | Remark |
Container number | Sequence number of the container within this shipment |
$DYSDWAContainerNumber$ E.g. to print "Package 2/5" via ZPL code |
Number of containers |
Total number of containers within this shipment |
$DYSDWANumOfContainers$ |
Bar code |
The (scannable) barcode stored on the sales line or purchase line. For purchase lines, the barcode must be active for printing |
$DYSDWAItemBarCode$ |
Country name from |
Name of the origin country |
$DYSDWAFromCountry$ |
Country name to |
Name of the destination country |
$DYSDWAToCountry$ |
External item ID |
Salesline external item ID |
$DYSDWASalesExternalItemId$ |
Net weight |
Net weight of the goods, i.e. without the tare weight, without the empty container weight |
$DYSDWANetWeight$ |
Carrier service code |
Service code, second part of the mode of delivery |
$DYSDWACarrierServiceCode$ |
Depot |
Depot number for this carrier for this zip code range |
$DYSDWADepot$ |
Route |
Route for this carrier for this zip code range |
$DYSDWARoute$ |
Contact number/address |
Phone number of the delivery address |
$DYSDWADeliveryAddressPhone$ |
Lot ID |
Inventory transaction ID |
$DYSDWAInventTransId$ |
From streetnumber |
House number of the from address |
$DYSDWAFromStreetNumber$ |
To streetnumber |
House number of the to address |
$DYSDWAToStreetNumber$ |
From building complement |
Building complement of the from address (house number addition) |
$DYSDWAFromAddressBuildingCompliment$ |
To building complement |
Building complement of the to address (house number addition) |
$DYSDWAToAddressBuildingCompliment$ |
Customer reference |
Customer reference |
$DYSDWACustomerRef$ |
External order number |
Customer's order number or requisition number |
$DYSDWAPurchOrderFormNum$ |
Load ID |
Load ID (collection of 1 or more shipments) (display method) |
$DYSDWALoadId()$ |
Load - extra info |
Load - Extra information (display method) |
$DYSDWALoadExtraInfo()$ |
Dock |
Dock location of the load (dock appointment or final shipping location) |
$DYSDWADisplayDock()$ |
Stop number |
Stop number of the shipment |
$DYSDWADisplayStopNum()$ |
Sales name |
Sales name on the sales order, initialized with customer name |
$DYSDWASalesName()$ |
Cluster position |
Cluster position of the work. E.g. when ship labels are printed with a work line step after the last pick line, and the worker must add the physical label to the correct position on the trolley |
$DYSDWAClusterPosition()$ |
To warehouse |
Destination warehouse ID (transfer orders only) |
$DYSDWAToWarehouse()$ |
Delivery name |
Delivery name of the sales order header, else filled with To name |
$DYSDWADeliveryName()$ |
Filter code 1..10 |
Product filter code 1..10 |
$DYSDWAFilterCode1()$ .. $DYSDWAFilterCode10()$ |
Requested ship date |
Production order: requested ship date of the sales line that is supplied through this production order (directly or via a transfer order) |
$DYSDWAShipDateReq()$ |
Confirmed ship date |
Production order: confirmed ship date of the sales line that is supplied through this production order (directly or via a transfer order) |
$DYSDWAShipDateConf()$ |
Height |
Production order: height |
$DYSDWAProdHeight()$ |
Depth |
Production order: depth |
$DYSDWAProdDepth()$ |
Width |
Production order: width |
$DYSDWAProdWidth()$ |
Density |
Production order: density |
$DYSDWAProdDensity()$ |
The Marked by ... methods below can be used on the label document routing layout when a transfer order is shipped from the DC to a local warehouse, and the transfer order receipt is 1:1 marked by a local sales order.
Also on a production order finished goods put away label, these Marked by information can be printed on the label.
Marked by name |
Related sales order name |
$DYSDWATransferMarkedByName()$ |
Marked by street |
Related sales line street |
$DYSDWATransferMarkedByStreet()$ |
Marked by street nr |
Related sales line street number |
$DYSDWATransferMarkedByStreetNumber()$ |
Marked by building |
Related sales line building complement |
$DYSDWATransferMarkedByBuildingCompliment()$ |
Marked by zip code |
Related sales line zip code |
$DYSDWATransferMarkedByZipCode()$ |
Marked by city |
Related sales line city |
$DYSDWATransferMarkedByCity()$ |
Marked by country |
Related sales line country |
$DYSDWATransferMarkedByCountry()$ |
Marked by customer reference |
Related sales line reference |
$DYSDWATransferMarkedByCustomerRef()$ |
Marked by customer requisition |
Related sales line requisition |
$DYSDWATransferMarkedByCustomerReq()$ |
Marked by mode of delivery |
Related sales line mode of delivery |
$DYSDWATransferMarkedByDlvMode()$ |
Marked by ship date |
Related sales line confirmed or else requested ship date |
$DYSDWATransferMarkedByShipDate()$ |
Marked by receipt date |
Related sales line confirmed or else requested receipt date |
$DYSDWATransferMarkedByReceiptDate()$ |
Marked by sales order |
Sales order ID that is supplied though this order (directly or via a transfer order) |
$DYSDWATransferMarkedBySalesId$ |
Important
To print a column with a list of items on the work label or the ship label, these display methods can be included in the ZPL.
For each column, the start position ^FO and the box size ^FB must be defined.
The elements in each column are separated by \& which is translated into a line break.
The Labelary.com viewer does not support the list unfortunately, but the result is visible by copying the actual ZPL code to the web page.
Field | Description | Remark |
Item list |
Work label: items on the pick work lines for the current target LP Ship label: items on the container lines |
$DYSDWAItemList()$ |
Item name list |
Product names of the items on the item list |
$DYSDWAItemNameList()$ |
Quantity list |
Quantities for the items on the item list |
$DYSDWAItemQtyList()$ |
Unit list |
Units for the items on the item list |
$DYSDWAUnitList()$ |
Barcode list |
Only filled if there is a related sales line with a barcode |
$DYSDWABarcodeList()$ |
External item list |
Only filled if there is a related sales line with an external item code |
$DYSDWAExternalList()$ |
Example ZPL:
^XA
^CF0,50
^FO50,100
^FD$LicensePlateId$^FS
^CF0,20
^FO25,300
^FB200,80,,
^FDItem number\&$DYSDWAItemList()$^FS
^FO150,300
^FB200,80,,
^FDDescr.\&$DYSDWAItemNameList()$^FS
^FO300,300
^FB200,80,,
^FDQty\&$DYSDWAItemQtyList()$^FS
^FO400,300
^FB200,80,,
^FDUnit\&$DYSDWAUnitList()$^FS
^FO500,300
^FB200,80,,
^FDExternal\&$DYSDWAExternalList()$^FS
^FO600,300
^FB200,80,,
^FDBarcode\&$DYSDWABarcodeList()$^FS
^XZ
Note
Important
Scenario: a sales order contains 7 lines:
In the coverage group of the purchase-to-order items, specify coverage code = Requirement. This will establish a direct link between sales order line and purchase order line.
When the first purchase order line that serves this sales order is received:
For the second, third, fourth, fifth purchase order line for this sales order:
In a similar scenario, the purchased components and raw materials for a production order, or the purchased products for an outbound transfer order can be crossdocked to one location per production order / transfer order.
When a cross docking template is set up, cross docking work is created instead of purchase work. If cross dock labels are set up as well, the label contains the address of the sales order or the address of the warehouse to which the goods must be transfered.
Warehouse management > Setup > Warehouse > Warehouses
When the parameter Print cross dock labels is activated on the warehouse, cross dock labels can be printed for purchase order lines that are directly related to e.g. sales order lines.
The parameter Block release until cross docked will prevent automatic release of the sales order line until the connected line is put away (i.e. the put away work is closed).
Warehouse management > Setup > Mobile device > Mobile device menu items
If "Print label" is switched on in the mobile device menu item, and there is a reference order line (e.g. the purchase order line has a reference to a sales order line), the label will contain the cross dock information like sales order, customer, delivery address etc.
Important
Warehouse management > Setup > Location directives (Purchase put)
The item to be cross docked can be directed to a location in the cross dock zone.
Warehouse management > Setup > Location directives (Sales pick)
The item that was cross docked can be picked from the location in the cross dock zone.
Warehouse management > Setup > Document routing > Document routing
Specify a document routing layout for sales orders. This will be used when the cross dock label is printed.
Note
Scenario: the item is purchased in the central warehouse, and then transfered to a subsidiary warehouse.
When receiving the item in the central warehouse, in stead of a purchase put away label, a transfer label with transfer order number must be printed.
A label is generated similar to the purchase put away label, but the work order type is Transfer issue, the order number is the transfer order number and the lot id is the reference lot (the transfer order shipment lot id).
Setup a document routing for Transfer issue, and corresponding document routing layout.
Scenario: when the BOM line type is vendor, and the production order is estimated, the raw material is purchased for this specific production order.
Upon receipt, in stead of a purchase put away label, a production raw material pick label with the production order must be printed.
A label is generated similar to the purchase put away label, but the work order type is Raw material picking, the order number is the production order number and the lot id is the reference lot (the production BOM line lot id).
Setup a document routing for Raw material picking, and corresponding document routing layout.
Note
In Microsoft Dynamics 365 for Finance and Operations wave label printing the labels will be printed when processing the wave, before the picking process is started. So the picker will take a physical strip of labels into the warehouse.
Challenges:
Therefor Warehouse Management adds the functionality to print a label during the picking process, on a printer that is mounted on the reachtruck or trolley or similar.
The functionality uses the Microsoft Dynamics 365 for Finance and Operations document routing framework for license plate label printing.
Warehouse management > Setup > Warehouse > Warehouses
When the parameter Print pick labels is activated on the warehouse, pick labels can be printed for
When the parameter Deferred pick label printing is activated on the warehouse, the worker does not have to wait for the physical label to be printed, but can proceed with the next pick line immediately, while pick labels are printed for the previous line.
Note
Warehouse management > Document routing > Pick label print policy
The pick label print defines for which work template lines one or more labels are printed. Print pick labels must be switched on at the warehouse.
Field | Description | Remark |
Line number | Defines the search sequence for the label print policy | The first found valid line applies |
Work template details |
Reference to a work template line |
Select a pick work template line for sales orders, transfer order issue, raw material picking |
Code 1 |
Product filter code 1 |
If filled, this setup is only used for released products with this code 1 |
Code 2 |
Product filter code 2 |
If filled, this setup is only used for released products with this code 2 |
Code 3 |
Product filter code 3 |
If filled, this setup is only used for released products with this code 3 |
Code 4 |
Product filter code 4 |
If filled, this setup is only used for released products with this code 4 |
Pick label policy |
Maximum number of labels |
If filled with a value > 0, and the number of labels per work line would be exceed this, the extra labels are not printed. |
This is to avoid printing massive qty of labels due to an error in the setup. |
Number sequence |
The SSCC number sequence, or an internal number sequence for the label |
Transportation number sequence setup is used that includes the calculation of a check digit |
Use container ID as label ID |
If 1 label per work line is printed, the label ID on the license plate label can be set equal to the container ID |
When printing a picking label during picking, table WHSLicensePlateLabel.LabelId can be filled with the container ID. This is mainly relevant if the container ID is already filled with the track and trace in the put-to-wall process (setting on the outbound sorting template). Thus, the same label layout (document routing layout) can be used for shipping labels and pick labels that are printed in a sorted inventory picking scenario. |
On the pick label the field handling quantity reflects the quantity for this label.
In case of a shortpick, the authorized worker may opt for reallocation. Microsoft Dynamics 365 for Finance and Operations will cancel or reduce the current work line, cancel the upcoming put line, and create a new work line for the same item on an alternative location. This new work line has no reference to the original work template line, but the pick label can still be printed automatically for the new work line.
Advised setup for the Transportation number sequence SSCC (Serialized Shipping Container Code):
Transportation management > Setup > Engines > Generic engines
Create an engine for calculation of the CheckDigit.
Field | Description | Remark |
Generic engine | CheckDigit |
Name |
Check digit |
|
Engine type |
Check digit |
|
Default |
No |
|
Engine assembly |
[empty] |
|
Engine class |
TMSMod10CheckDigitCalculator |
This is logic is used for check digit calculation in SSCC codes |
Source type |
X++ |
Transportation management > Setup > Carriers
Create a number sequence for SSCC or PostNL 15 characters code or PostNL 13 characters code or internal 7 digits.
Field | Description | Remark |
Number sequence | SSCC 00+18 digits / PostNL 15 characters / PostNL 13 characters / Internal 6+1 digits |
Nr sequence type |
Enter description here |
Enter remark here |
Name |
Serialized Shipping Container Code / PostNL15 / PostNL13 / Internal 6+1 |
|
Number sequence type |
Pro number |
Pro number and SSCC use the same logic |
Check digit |
CheckDigit |
|
Prefix |
Example: 0038712345 / 3STOPE / 3STOPE / [empty] |
|
Postfix |
[empty] |
|
Start sequence |
Example: 10000000 / 10000000 / 100000 / 100000 |
End sequence |
Example: 20000000 / 99999999 / 999999 / 999999 |
9 digits max! |
Next sequence |
Example: 10000001 / 10000001 / 100001 / 100001 |
|
Threshold sequence |
Example: 19999000 / 99999000 / 999000 / 999000 |
When this number is reached, the system starts to warn each time a new number is generated |
Length |
17 / 16 / 12 / 12 |
For internal numbering, this should be 8 or more |
In case an SSCC number is required per shipment, link this Pro number sequence to a carrier. The Pro number will be assigned when the shipment is created for this carrier.
In case an SSCC number is required per pick label, link this Pro number sequence to the pick label print policy for the applicable work template line.
Important
Warehouse management > Inquiries and reports > Reprint license plate label
The mobile device menu items include an activity code to reprint a label. The functionality can be used on a mobile device, and by scanning the license plate ID, the label can be reprinted to the same printer as before. Technically the label information is handled again by the document routing.
In standard Microsoft Dynamics 365 for Finance and Operations it is not possible to:
The Warehouse Management PC function Reprint license plate label can be used to reprint one or more labels in an efficient flow. Use a wireless or wired USB scanner and have a ZPL printer installed near the PC.
Optionally, the user ID which was stamped on the original license plate label, can be changed to a new user ID. This allows the printing of the label on a different printer, with a different layout. Specify an additional document routing setting for the new user ID, with the applicable printer and document routing layout.
Field | Description | Remark |
Set new user ID | Change the user ID on the License plate label? | Fields like (Mobile) user ID on the license plate label can be used for filtering in the document routing |
User ID |
This new user will be set on the license plate label. |
Select an existing mobile device user ID. |
Label ID |
This license plate ID, container ID or label ID will be retrieved, and the label will be printed according to the document routing settings for the new user (if applicable). |
Warehouse management > Periodic tasks > Clean up > Clean up license plate labels
As described above, license plate labels can be generated from various processes. Name and address information is stored on the license plate labels. The clean up functionality can, after a number of days, and only if the sales order is invoiced:
Field | Description | Remark |
Number of days to keep names and addresses for sales labels | When number > 0, replace name, street and number, reference and phone with a dot. Invoiced sales orders only. | GDPR requires that personal data is not stored longer than needed for the intended purpose. E.g. 30 days after invoicing the sales order, replace the names and addresses and contact person data on on the label with a dot. |
Number of days to keep |
When number > 0, remove the license plate labels. Invoiced sales orders only. |
E.g. 90 days after invoicing, the license plate labels for a sales order can be deleted. |
Warehouse management > Setup > Work > Work audit template lines update
On the setup of mobile device menu items that handle work it is possible to specifiy a work audit template. This functionality is a standard frame work that allows to record extra information upon receipt and put away processes, or when executing existing work.
The data is stored in the Work audit capture data. There is no validation on the entered value, so the mobile device menu label must be self explaining to the worker.
Important
In Warehouse Management extra custom methods are available to update and print a generated license plate:
Field | Description | Remark |
Audit trigger field | This field from the work table is displayed on the mobile device | E.g. TargetLicensePlateId |
Audit trigger event |
Prior |
|
Function |
Capture data |
|
AWHSSetQtyPerLabel |
Updates the field handling quantity (WHSLicensePlateLabel.InventQty) |
AWHSSetLabelFormat |
Updates the field label format (WHSLicensePlateLabel.LabelFormat) |
E.g. Mobile device menu label = "Size 3 or 4" |
AWHSInsertLabel |
Insert a label for a quantity on a non LP location |
For mobile device menu items that do not have the option Print label. Hence there is no record in License plate label. This custom method only creates a record. Print the label with AWHSPrintLabels method |
AWHSPrintLabels |
Triggers n times the print command for the current label according to the document routing setup |
To avoid unintended waste of labels, the maximum is n = 100 labels |
Suggested use:
Receipt labels: upon mobile receipt, the required number of labels and the optimal size can depend on the actual packing appearance. A4 label on a pallet, A3 label on a carton, A2 label on small boxes etc. The worker can decide on the mobile device the required set of labels. Create a work audit template while capturing data with the methods:
Link the mobile device menu item to this work audit template.
Reprint product labels: execute a movement by template in the mobile device, and set the qty per label, the format and the number of labels. Create a work audit template with the methods:
Link the mobile device menu item to this work audit template.