IntroductionQuite often, situations happen in supply chain which require the warehouse to handle rush orders, meaning that they need to ship the same day, if not immediately.
At the same time, the normal levels of data accuracy are still expected, meaning workers cannot just ship the goods without simultaneously registering everything in AX, as to not allow the data to get out of sync with the real world.
But, even though this situation is quite common, Microsoft Dynamics AX does not handle it quite that well. Specifically, once the work is created, you can't ship the load until after all work has been executed, including any intermediary stages (quality inspection, packing, etc.)
An alternative scenario is when delivers to a customer are done on a regular basis, using a third party logistics provider like UPS for deliveries, and per agreement their transportation vehicles depart from our docks at a particular point in the day. In such cases the workers may get instructions (or make the decision on their own if experienced) to skip certain picks and just ship what has already been picked, just to make the cutoff time. The remaining goods would be then shipped with the next planned delivery.
Today I would like to show one of the possible ways of achieving better results in the above scenarios with the out-of-the-box functionality in Microsoft Dynamics AX by showing two features:
- Skipping non-mandatory work lines
- Short picking without impact to the inventory but with load line qty reduced
Walk-throughI have created the following sales order in AX, which turned out to be a rush order, so I need to avoid the staging step I usually go through when picking such items, and instead, take the items directly to the bay door, where the truck is already waiting.
Note. For the purpose of the demo, I only have 2 items and no prior picks completed.
|Rush sales order|
|Open Work order|
Well, for this to work, the corresponding lines in the work template used to create this work must have been set up as optional (Mandatory flag was not set)
Luckily, that was the case for this order, so I can move on to step #2, actually skipping these lines.
That is done from the Load by selecting the "Skip non-mandatory work" button, as shown below:
|Load in Waved status with "Skip non-mandatory work" button|
Now the work looks like below. Note how the work class has been updated to enable the initial picker to load the goods as well
|Open work order, where staging lines are skipped|
OK, so let's execute this work now. We'll use a standard mobile device menu item with user directed work execution method.
The worker picks the first item from the picking area very close to the outbound dock, as shown below.
|Initial pick instruction from a Picking area|
Walking over to that area takes a whole 30 minutes, and John knows that he needs this order to ship in 10, so he makes the decision (or is called by the warehouse manager with instructions) to not ship this item now, but do it the next day or whatever the agreement is with the customer.
For this, he's going to short pick this item. Since we are not going to pick any items, he'll enter the quantity of 0, and select the reason for short picking - Ship Now, which we'll talk about in a minute.
|Short pick with reason = Ship Now|
After confirming the short pick, he'll immediately be asked to put the items he did pick (in our example just 1) to the BAYDOOR location, since we skipped the other lines
|Put directly to Baydoor|
As a result, the work looks like below:
|Work in status "Closed"|
All work lines have been Closed, and as you can see the remaining quantity is 0 for both picks, and for one of them the work quantity is also 0, since that was the line we short picked.
Now, hold on, you might say. I do not want to short pick these items - does that not tell the system that the items are actually not there, and in many cases adjust them out or create cycle counting work?
Not in this case. See the setup I have done for the Ship Now work exception below:
|Short pick work exception "Ship Now"|
As you can see, I have not selected to create cycle counting work or adjust these items out. All I selected was to Automatically decrement shipment or load
What that means is that on-hand will not be impacted in any way, however the quantity on the respective load line will be decreased, essentially taking this item off the load. Note that the source document line (in this case, sales order) is not impacted, since the customer still expects those goods. We do not currently support also reducing the quantity on the sales order. You will have to use the "Deliver remainder" function from the sales order line explicitly to achieve that.
So, let's take a quick look at the load now.
|Load in status "Loaded", where 1 line has 0 qty|
As you can see, the status of the load has been updated to Loaded, meaning all the goods planned for this load are on board.
You can read more about the various statuses of the Load/Shipment in my previous blog post:
That means we can now ship this load, as shown below:
|Load in status "Shipped"|
Hope this will help some of you avoid unnecessary customizations
Let me know if you have any questions.