Code highlighting

Showing posts with label load. Show all posts
Showing posts with label load. Show all posts

Sunday, September 18, 2016

Tutorial: Dealing with rush orders or the skill of "Ship now" in Dynamics AX

Introduction

Quite 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-through

I 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
The sales order has already been released and the work looks as below:

Open Work order
Now, since I want to rush this order, I am going to skip the staging step. How do I do that?
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
Note. You can only skip non-mandatory work on an order in Open status right now

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

However, the next pick he's instructed to make is in the bulk area, as nothing was left in the Pick area and the item has not been replenished yet.
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.

Friday, July 15, 2016

Walkthrough: Manual creation of Load packing structure in Warehouse management, Dynamics AX

Introduction

In the current version of Dynamics AX we have the ability to receive advanced shipping notes (ASNs) from vendors, store the corresponding shipment information, and then use this information to make receiving processes more efficient. Receiving an ASN is currently only available for products and warehouses that are enabled for advanced warehouse management processes (the so-called WHS-items and warehouses).

You can learn about importing inbound ASN files by following this link, where in my blog post I described that process in detail. 

Here we will walk through an example of manually registering the ASN information in the system. 
This could for example be used, if we are unable to import a specific ASN file format, having receiving an advance shipping note from the vendor. Or, if we want to rely on this functionality to “build-up” a pallet to be received, without actually having EDI document exchange with the vendor.

Here's a link to the video recording on YouTube.

Result

If you follow with the above walk-through, here is how the Load packing structure should look:

Load packing structure created as a result
Resulting Load packing structure

Note

One other thing I did not pay much attention to were the UOM used for the lines, having interchangeably used 'ea' and 'pcs'.


Thanks for watching!

Monday, October 13, 2014

Tutorial: High level overview of entity statuses in the new Warehouse management solution

I’ve seen a number of questions on the community and yammer groups asking about the statuses for Loads, Work, etc, where people were not sure what that means. I dug up this document with a brief description of all the possible statuses for Loads, shipments, Waves and Work in the new solution.
Hope you guys find it helpful, as I did at some point.
Load
  • Open: Load has been created, but no other warehousing processes have been executed on the load. Some or all load lines are not part of a shipment.
  • Posted: Load has been released to warehouse; related load lines have been assigned to shipments. These shipments may or may not be on a wave. If on a wave, the wave has not been executed.
  • Waved: Shipments tied to the load have been assigned to a wave, and the wave was executed. Any work that was created through the waving process has not been started.
  • In Process: Work tied to the load has started being executed, but does not meet the qualifications for an “In Packing” or “Loaded” status (see below).
  • In Packing: Work has been created for the entire quantity of load lines. All work has been put down to the manual pack station.
  • Loaded: Work has been created for the entire quantity of load lines. If not using a packing flow, all work has been put to a final shipping “baydoor” location. If using packing, all containers have been closed (All quantity tied to the load is picked against the appropriate sales/transfer orders).
  • Shipped: Load has been ship confirmed.
  • Received: For inbound loads, product receipt has been run for all quantity tied to the load.
Shipment (similar to load)
  • Open: Shipment has been created, but no other warehousing processes have been executed on the shipment.
  • Waved: Shipment has been assigned to a wave, and the wave has been executed. Any work that was created through the waving process has not been started.
  • In Process: Work tied to the shipment has started being executed, but does not meet the qualifications for an “In Packing” or “Loaded” status (see below).
  • In Packing: Work has been created for the entire quantity of load lines associated with shipment. All work has been put down to the manual pack station.
  • Loaded: Work has been created for the entire quantity of load lines associated with shipment. If not using a packing flow, all work has been put to a “baydoor” location. If using packing, all containers have been closed (All quantity tied to the load is picked against the appropriate sales/transfer orders).
  • Shipped: Shipment has been ship confirmed.
  • Received: For inbound shipments, product receipt has been run for all quantity tied to the shipment.
Wave
  • Created: Wave has been created. The wave may or may not have shipments assigned to it, but it has not yet been executed.
  • Executing: The wave is in the process of being executed. (Useful status for long running waves)
  • Held: The wave has finished executing, but has yet to be released. Any work that was created during the execution process is frozen, preventing it from being started until the wave is released.
  • Released: Wave has been released. Any work tied to the wave is unfrozen and able to be executed.
  • Picked: All work tied to a wave has been completed.
Work (Applies to both work header records and work detail lines)
  • Open: Work or work line has been created, but not started by a worker.
  • In Process: Worker has started work or work line, but not completed either.
  • Pending Review: Specific to cycle count work header only. Occurs when worker counts incorrect quantity or dimensions, but does not have the rights to automatically adjust inventory.
  • Skipped: Applies to work lines only. Status is applied for non-mandatory work lines when 'Skip non-mandatory work' option is used for a selected load/shipment.
  • Closed: Work or work line has been completed.
  • Cancelled: Work or work line has been cancelled.
  • Combined: Applies to work header only. Occurs when executing the “Pick & Pack” RF flow which combines multiple work units into a single one.

Monday, September 22, 2014

Tutorial: Update product receipts for loads and how to handle items missing from ASN

In my post about the ability of receiving a mixed pallet through the License plate receiving method on the mobile device, I mentioned that once the receiving and put away is complete, the next step would be to update the product receipt document. With that, the purchase order status is updated to Received and all relevant GL postings are done.

Posting a product receipt for a load can be done from two places in the new warehouse management module:
  • For a selected load, whether that is from the All loads list page, Load details or from the Load planning workbench. This will execute the posting right away
  • For 1 or more loads, running as a batch job in the background, using the periodic operation "Update product receipts"
The actual business flow is more or less the same regardless of where you launch the update from, and I am going to describe it below, also doing a small demonstration of the forms and data that are relevant.

One thing that I specifically want to call out in this blog post is a piece of functionality related to receiving ASN documents, namely the receiving exceptions for items missing from ASN.

Preparation

So, i guess it's clear that the first step for us to look into the product receipt process is to get a load created and corresponding work created/executed for it. This is described in my post about importing an ASN and using License plate receiving to register their arrival and complete the put-away, so I will start here by just briefly listing the data I am going to work with in this demo:
  • A load with 2 purchase orders on it, with shipping carrier specified as JB Hunt:
    • PO #1 with 1 line for item 000148_202, qty = 2 PL (150 ea), WH = 42
    • PO #2 with 1 line for item 000147_202, qty = 1 PL (100 ea), WH = 42
  • A packing structure for this load (based on ASN received from the vendor)
    • 1 pallet with License plate LP2POs006
      • 75 ea of 000148_202
      • 100 ea of 000147_202
    • 1 pallet with License plate LPMissASN001
      • 75 ea of 000148_202
  • Work is created and executed for LP2POs006 through License plate receiving
    • LPMissASN001 has not been received, as it did not actually arrive on the truck.
What the last line essentially means is that the vendor planned to and believes he sent us the entire order (thus it is in the ASN document), but in reality, one of the pallets is missing. So somebody needs to get notified about this exceptional situation and act on it, ensuring we do not get billed for the missing goods.

In order to showcase the receiving exception related to items missing from load as compared to the ASN I have also specified the corresponding work exception code in the Warehouse management parameters, as shown below:

Flow description

Warehouse management parameters

The "Update product receipts" menu item is located under Warehouse management \ Periodic, and opens into a dialog, where you can select the loads you want to post product receipts for. The criteria could be, for example, the shipping carrier bringing in the loads. If you know that "JB Hunt" delivers before lunch, we can try posting product receipts for their deliveries at, say, 2 pm.

Note

The batch job flow is per my understanding going to be used more often, so this is what I am going to describe in this post. Manual posting is pretty much identical, with 1 difference mentioned below.


Once you confirm the processing, the job will be added to the queue on the batch server, and will be executed based on the recurrence you have selected on the Batch tab page.
For this demo I have not enabled it to run in the batch, so the execution happens right away.

Here's an attempt at capturing what is going to happen with the selected loads when you schedule the product receipt update for them:

  • Loop through all the selected loads
  • If Load has not yet been Received
    • check if the load has been ship confirmed, or the state of the related route (TMS functionality) if a load is part of a route. If it is not confirmed
      • ship confirm the load and all related loads that need to be confirmed at the same time (because they are on the same route)
        • if at least one of these loads cannot be ship confirmed, none of the loads will be confirmed. A number of things are checked here, but they are part of the transportation management flow, which is not the focus of this post, so I will omit describing them
      • As a result, the status of the load changes to Shipped 
    • check the document status of the purchase orders related to the load
      • if the purchase order is not confirmed, confirm it.
    • This entire step is executed within 1 transaction, while the below steps are part of another transaction. So if you for example cancel the actual product receipt, your loads would stay ship confirmed.
  • Loop through the load lines
    • Compare the load line to the related ASN item lines, finding discrepancies between the "planned" receiving quantity on the load line and the quantity work was actually created for based on the ASN packing structure. To rephrase, we compare, how much we ask the vendor to deliver in the selected load and how much he actually delivered.
      • If a discrepancy is found, create a receiving work exception with exception code selected in Warehouse management parameters \ Code for missing items from ASN
Note: We currently do not record the actual quantity discrepancies, just that there was a difference, as well as the load and order line information
    • For each purchase order linked, prepare the order for posting product receipt. All load lines will be posted as part of 1 large update, so if multiple orders exist they will be posted in 1 go, with the same ParmId.
      • Actually post the product receipt for all relevant orders. 
        • Display the Posting product receipt dialog. Note the product receipt IDs are generated as _#, so you should be able to later identify all product receipt documents posted for a load based on such a condition (if you do not override the number with the actual vendor IDs)
        • Select to update only the Registered quantity, as that is what we have received according to the warehouse
        • As a result, the status of corresponding purchase orders is updated to Received, or stays Open if some of the quantity was not received in full. 
      • Update the load, removing load lines that were not received at all and decreasing quantity on those that were only received partially.
  • Update load status to Received
    • Update status of all shipments that are part of the load to Received

Manual posting difference

When posting the product receipt manually, the button to post is actually disabled until the purchase orders in the load are all in Confirmed status.

Demonstration

Navigate to Warehouse management \ Periodic \ Update product receipts, and configure the criteria for updating all loads delivered by JB Hunt that have not been Received yet. 

Update product receipt selection criteria


When you confirm the update, the above flow is going to execute, confirming the inbound shipment and displaying the product receipt posting dialog with both purchases shown. Notice the product receipt numbers assigned, and that only the registered quantity is updated. Confirm the processing.

Product receipt posting dialog


Once the update is complete, we can go back and check on the load. As you can see, the Load Status has changed to Received, and the quantity on the first load line has been decreased to match what we actually received.

Received load information


At the same time a receiving work exception has been logged in the system, pointing to a discrepancy of type "Missing item from ASN", as shown below:

Work exceptions log


If you now take a look at the purchase orders from the All Purchase orders list page, you will see that one of them was fully updated and thus has a status of Received, while the other is still Open and has an expected delivery for the quantity that was missing from the ASN. We'll now need to contact the vendor/carrier and figure out what went wrong with this shipment.

Youtube video walkthrough

As an experiment, I have also recorded the above flow in a screen cast and uploaded it to my Youtube channel. Take a look and let me know what you think. Is that helpful at all? (I take any kind of feedback very well :))

Summary

This post was trying to address two main goals:
  • Explain and demonstrate, what happens behind the scenes when posting a product receipt for loads
  • Show, how you can set up a receiving exception, that will allow more easily tracking cases where something went wrong and we did not get the goods we were supposed to.
I hope it's more clear now and you'll be able to use AX to the full extent when it comes to inbound ASNs.