Code highlighting

Showing posts with label Microsoft Dynamics AX 2012 R3. Show all posts
Showing posts with label Microsoft Dynamics AX 2012 R3. Show all posts

Thursday, March 02, 2017

Announcement: Warehouse Mobile Devices Portal improvements with February update of AX 2012 R3

A monthly cadence AX 2012 R3 update for February has just come out on LCS, and with it a few changes our team has done that deal with overall behavior and performance of WMDP - the Warehouse Mobile Devices Portal used in the Advanced warehousing module.

I want to call them out here, and if you are reading my blog to keep up to date with the Warehousing changes, I strongly encourage you to install the below changes:


  • A functional enhancement, that allows you to start execution of a work order that has some lines awaiting demand replenishment, processing the lines that can be picked already now
  • A performance optimization, that avoids updating certain persisted counters on the wave when work goes through its stages. 
    • This also ensures they do not get out of sync, as they were used to make certain decisions about what is allowed for a work order
    • Can also be downloaded individually as KB3217157
  • An integrity enhancement, that ensures we always are in a valid state in DB, where each service call from WMDP is now executed within a single transaction scope
    • Can also be downloaded individually as KB3210293
    • Can be turned off in code for a selected WHSWorkExecuteDisplay* class, if needed
    • This is a great change ensuring we do not commit any data unless all went well, but might hypothetically impact your new/modified WMDP flows, if you handle your exceptions incorrectly today. If you do find issues with them, please let me know, I am curious to know your specific examples.
  • Various minor enhancements, that ensure WMDP performs well under load
    • Can also be downloaded individually as KB3210293
    • This includes improvements to enable better concurrency in various WMDP scenarios, better error handling on user entry, etc.

Again, install these, try them out, and provide feedback!

There are a lot more enhancements and bug fixes that went into this release, you can read the full list by following the link below:


Thanks!

Thursday, April 28, 2016

Announcement: Instructor-led course: Advanced Deployment of WMS in Retail and Wholesale Warehouses with AX 2012 R3

Hey guys

It's kind of late notice, but still wanted to send this out in case you can make it.

There's a 3 day course next week (May 2 -  4) taking place in Lyngby, Denmark, led by Steve Mulaik, which will cover the WHS implementation topics targeting Retail and Wholesale industries.

To register for the course follow the link below:
https://mbspartner.microsoft.com/AX/WorkshopOffers/2

Here's a summary of the content:

The Advanced Deployment of Warehouse Management (WMS) in Retail is a 3-day instructor-led course to help address the unique needs of customers and partners deploying the Warehouse Management module within retail warehouses. The student will gain exposure to what makes retail warehouses different and how should the new Warehouse Management System (WMS) released in AX 2012 R3 be configured to meet many of these needs as well as what customizations customers or partners may want to provide to enhance the base offering even further. The course will focus on the needs of both ecommerce and brick & mortar retailers by using a case study built around a fictitious multi-channel retailer. The materials covered will include:
  • Inbound requirements & setup
  • eCommerce outbound requirements & setup
  • Internal warehouse operations
  • Brick & Mortar outbound requirements & setup
While not focusing on scenarios for distributors and wholesalers, the focus on retail scenarios in this course allows partners operating in the distribution sector to understand what the product can do for these industries because there is noticeable overlap in requirements. The scenarios covered will not include any integration to Production, however. 

Worth noting is that there will be a repeat of this course in June (June 6 - 8) in Gurgaon, India

Wednesday, July 22, 2015

Tutorial: Short pick goods on the mobile device in Warehouse management module of Microsoft Dynamics AX 2012 R3

Introduction

In a typical warehouse things go out of sync from time to time. So the inventory on-hand information registered in the system becomes different from reality, or what is actually there physically. But warehouse operations need to keep being executed, and such discrepancies should not block orders from being picked. That's why in Warehouse management in AX 2012 R3 we provide a flexible way to set up work exceptions of type "Short Pick". The warehouse workers will select short pick exceptions on their mobile devices in these exceptional situations. 

Business Case

HDMI cables 000147_202 and 000148_202 are very popular products and a lot of our customers buy them. On a particular day we have 3 orders for these items, and the sales department has confirmed and released 2 of them to warehouse, while for the third one they are still nailing down some details, so only reservation has been done to ensure we can promise the goods to the customer. 

John the warehouse worker is going to location LP-002 to pick the first item, but finds that the cables are not there, even though that is what it says on his mobile device. He will need to do a short pick, and because there is nothing (0) items available, he is instructed by his warehouse manager to select Reason = "Items not there - Adjust out". 

He then proceeds to the second location in the work order, LP-001, but the required pick quantity is also insufficient there. Only 2 cables are available in the location, instead of 10 that he needs to pick. He will need to do a short pick again. This time, he will select Reason = "Items not there - Count", as this seems to be right, the items were there, maybe they just got misplaced to a nearby location.

John then proceed with completing the picking route and delivering the picked items to the bay door.

Walkthrough

A complete walk-through of the scenario described above is available on my Youtube channel.


Brief summary

Here's a quick recap of what happens in the video for those who prefer reading. Screenshots of all the important steps are available on my OneDrive.

  1. 3 sales orders exist
    1. A sales order for customer 1101
      1. Sales line for 5 pcs of 000147_202, reserved physically
      2. Sales line for 10 pcs of 000148_202, reserved physically
      3. Order is released to warehouse, with work created as follows
        1. Pick 5 pcs of 000147_202 from LP-002
        2. Pick 10 pcs of 000148_202 from LP-001
        3. Put all to BAYDOOR
    2. A sales order for customer 1102
      1. Sales line for 10 pcs of 000147_202, reserved physically
      2. Sales line for 15 pcs of 000148_202, reserved physically
      3. Order is released to warehouse, with work created as follows
        1. Pick 10 pcs of 000147_202 from LP-002
        2. Pick 15 pcs of 000148_202 from LP-001
        3. Put all to BAYDOOR
    3. A sales order for customer 1103
      1. Sales line for 5 pcs of 000147_202, reserved physically (at level above location)
  2. John logs in to the warehouse mobile devices portal and executes work for first order
    1. As actual inventory in LP-002 is insufficient for 000147_202, he executes a Short pick
      1. Enters Pick qty = 0, Reason = "Items not there - Adjust out", does not enter License plate, and confirms the short pick.
      2. The pick line is now closed, work quantity on it adjusted to 0, along with subsequent impacted lines (in this case, the Put line)
      3. As a result of work exception setup "Adjust inventory", a new work order of type Inventory movement was created and is automatically executed and closed. It adjusted out 10 pcs of 000147_202 from LP-002.
        1. 5 pcs were adjusted as part of the current pick line
        2. 5 pcs were adjusted because of work exception setup ("Remove reservations" flag on Adjustment type used). This removed the reservation for sales order #3, as there is no on-hand available for this item anywhere else in the warehouse with the specified inventory status. If there was inventory available, the reservation would not get removed, as it does not matter which location the items are in on the sales line level.
        3. 10 pcs did not get adjusted, as they are physically reserved for an open work pick line, and we never touch open work. This work would now need to either be cancelled, or same as current one, short picked.
      4. Sales order is still in Released status. When inventory is available again, we will need to manually add the corresponding shipment to a new or existing wave and process it to create remaining picking work.
    2. John walks over to location LP-001 to pick item 000148_202, but inventory is insufficient there as well, so he executes another Short pick
      1. Enters Pick qty = 2, Reason = "Items not there - Count", enters the LP to pick from, and confirms the short pick.
      2. John will now enter the Target license plate, and then deliver the 2 items picked to the bay door.
      3. The entire work order is now Closed, as all operations have been completed for it.
      4. A new Open work order of type Cycle counting was created for counting location LP-001. This is based on the work exception setup "Automatically create cycle counting".
      5. The corresponding load line quantity was reduced from 10 to 2, as a result of work exception setup "Automatically decrement shipment or load". This means this particular load line is now ready for shipping to the customer
      6. Sales order is now in Partially released status. When the inventory is available, the sales order will need to be released again to create work for the missing pieces.

Hotfixes

These are some of the hotfixes you should download. I believe all of them made it into CU9.

KB 3046556 - The short pick functionality ends in an unhandled state during cluster picking
KB 3031012 - "No conversion definition found from" when processing a short pick for a work
KB 3071198 - Quantity is updated incorrectly when doing short picking on transfer orders
KB 3069579 - Print line in work shows wrong quantity after a short pick

Wednesday, July 01, 2015

Tutorial: Custom work types and shipment notes on the mobile device in Warehouse management module in Dynamics AX 2012 R3

Business case

A customer requires that we upon request ship them HDMI cables packaged into special boxes that they have provided us with. The sales clerk taking the order over the phone puts in a Note whenever the goods need special packaging.
The expectation is then, that the warehouse worker executing the picking will get notified of the customer requirement, so he can also pick up the special boxes and pack the goods into them. Since our company carries many different HDMI cables, the number of boxes required is different each time. The worker is then also required to print the necessary number of labels, so that each box is accurately labeled. Once all of this is done, the special boxes can be loaded onto the transportation vehicle and shipped to the customer.

Walk-through

A complete walk-through of the scenario described above is available on my YouTube channel.


Brief summary

Here's a quick recap of what happens in the video for those who prefer reading. Screenshots of all the important steps are available on my OneDrive.
  1. A sales order for above customer, with Note (DocuRef) added on header level
    1. Sales line reserved physically, order released to warehouse
  2. On mobile device, execute the picking work
    1. An extra screen is shown before actual picks start, showing the shipment notes (telling the picker to use special boxes)
    2. After pick/put to stage, extra screens are shown
      1. How many boxes were used? This is a custom data input screen. This data is then saved on the work line for future use.
      2. Confirmation screen is shown with some information for work user. In this case, it's asking him to label all the boxes with the adhesive labels that were printed based on the above input of how many boxes he used, and press OK when he's finished.
    3. Now we can load the goods onto the truck.
  3. Review the completed work and related Custom data (No of boxes used).
  4. Review Warehouse management parameters
    1. Mobile device note type setting, which controls what type of DocuRef documents will be shown on the mobile device
  5. Review Work template setup. Two additional work template lines are added, both using Work type = Custom.
    1. A confirmation custom work type, that does not capture any data and only shows a message to the work user on the mobile device.
    2. A question (user interaction) custom work type, that captures data, asking for number of boxes used, as well as a custom method, which refers to a method on Classes\WHSWorkCustomData\ - in my example, this code would generate and print a specified number of labels.
  6. Review Document routing setup, where the label printer and layout are set up. Not of interest to this post. See my other post about label printing for more details.

Other possibilities

Here are a few other examples where it might make sense to rely on custom work types:

  • Capture the pallet type during picking. This data would be stored for later use.
    • Optionally, capture number of pallets of the corresponding pallet type. Based on that, update the load for further calculations of shipping costs.
  • Capture load seal number during loading (including update of the load with that info)
  • Capture temperature/weight/other characteristics of the items during picking/receiving
  • Print the Bill of Lading report as part of the picking flow. The picker would then be the one to pick up the printed report.

I'd be interested to hear of the way your company uses this feature!

Monday, March 02, 2015

Tutorial: Using Labor Standards in the new Warehouse Management solution

This post consists of two parts: An introduction to labor standards from a business standpoint, written up for me by Steve Mulaik from the Progress group, and then a short example of how all of this looks in AX today.

Introduction

One of the less well known but very distinguishing features of the new Warehouse management solution in Dynamics AX 6.3 is its support for multi-variable, engineered labor standards.  Labor standards are very important in warehouses that have lots of people.  A common misconception is that they are used to increase the pace of the workforce.  In reality, pace rarely increases much if at all.  Two other positive effects result from the proper use of labor standards.

First, the utilization of the workforce improves, i.e. the time when workers are working.  With labor standards a warehouse manager can better estimate how many people are really needed to do a job and he can schedule accordingly.  A surprising outcome from standards projects is that they reveal how much supervisors “hedge” labor to cover the unknown.  Supervisors are much more willing to move or trade resources from their area to other areas after labor standards are implemented; they can see how much their department’s performance suffers if they do not.
AX can provide feedback on historical performance for a given warehouse task and that information can be used to develop a good planning number for how much a person can get done in a given area in a given segment of time.  No one can remain busy and perform well in a warehouse or warehouse area that has 30 people that really needs 25.


Second, labor standards can drive improvements in productivity through better methods.  A standard should be set around the best way to do a job.  A lot of companies have no idea what the best way is to do a job until they do a labor standards project.  Once identified, companies teach everyone the best methods and measure each person’s productivity.  Associates that are not meeting performance often times are not following the proper procedure.

What is a labor standard?

At this point, you might be wondering “What exactly is a labor standard?”  A labor standard is a formula used to calculate the estimated time it should take to perform a given class of work.  Labor standards are derived from timestudies of associates actually performing the work.  A timestudy is used to calculate statistically valid estimates for each element of a given class of work.  An “element” is a step a worker performs when doing a job.  For example, in picking there is an element for “Scan location” to confirm that the picker picked from the right location. 

You can see an example of how a timestudy looks and is then used here.

Once the timestudy is complete, as a result, we are getting out estimated times for executing a task, for example, 13.29 seconds for every line the user picks and 3.57 seconds for every unit he picks (See above timestudy example for more details).

It is worth noting that in many other systems this formula can only have one variable, e.g.
Estimated Picking Time = 18.26 seconds * # of lines picked
but in AX we can support two variables per standard (One for the Pick and one for the Put).  This means standards implemented in AX in most instances will be more accurate than in these other systems.

Labor Standards in Dynamics AX

So, let's use the results of the timestudy we got above (or one like it), and configure labor standards in AX, and then execute some work and see how the actual time is calculated accordingly

First thing we need to do is choose, which warehouses we want to enable for these calculation (note, that since they are done for every work line created/executed, you should only enable it on those warehouses where you actually need the data).

Labor standards configuration
Allow labor standards on Warehouse

The story behind the example

Our company sells fancy speakers. They are fancy, because they are relatively small, and are usually sold in cases, where one case holds 10 speakers. The orders are typically for 50-60 speakers (or 5-6 cases), because that is how many are installed in the smart houses they are made for. Here's how the product definition looks in AX:

Released product details
Released product details - FancySpeaker

The warehouse workers do case picking, going out to the picking location for the fancy speakers, picking up the 5 cases, stowing them on the pallet on their forklift, and then delivering the pallet for that order to the outbound dock, where it is loaded onto the truck. 
The work template supporting such an operation is shown below:

Work templates
Work template setup

The warehouse worker (John) based on our timestudy needs 36 seconds in total to drive to a selected location (about 20 sec) and then, after picking, to the dock to deliver the goods (about 16 sec). At the picking location, he needs about 9 seconds per case to pick it up from the location and put it on the pallet on the forklift. 

Sammy, the shipping clerk, who does the loading in our company, needs about 7.5 minutes per pallet (with 5 CS on it) that he needs to load on the truck.That is based on the volume of the pallet stacked with cases.

Labor standards configuration

We configure these times in AX using the Labor standards form, available under Setup in Warehouse management module.

Labor standards
Labor standards configuration

This is pretty flexible, allowing for separate configurations based on the Work trans type such as Sales and Purchase orders, Replenishment, etc., and Work classes, meaning that each unique warehouse operation can be timed separately. On top of that you can set up filters per Item/Location, to which the standards should apply. 

All the configuration values are specified in a uniform fashion, as X units per hour. This could be 
  • X transactions per hour (which is equivalent to X locations visited, as each work line corresponds to a specific location), where I specified John needs 36 seconds per location => 3600 sec (1 hour) / 36 seconds = 100;
  • it could also be in specific units, like in my example with 9 seconds per case (3600 sec / 9 CS = 400 CS per hour);
  • it could be based on weight/volume, like in my example, where Sammy loads pallets with approx volume of 0.5 m3 (based on product volume information and typical order quantity) in 5 min each => 6 m3 per hour (see note below);
  • it could also be work units, which could be applicable to my example as well, because we know the order is usually just the 1 pallet, so they would have 1 work per order, and thus we could base the calculation on the number of work orders processed per hour. 
The Work types we can select are Pick, Put, or Pick and put, which is useful for companies who don't want to spend a lot of time measuring each part of the picking process, but want to estimate the time for the entire operation at once. 
Note: I have used the Pick&Put for my Load work class, and have doubled the estimated work per hour (12 m3 instead of 6 m3 I calculated above). That is due to the fact that AX will stamp the individual work lines with the time, virtually doubling the estimated time for the operation.

Walkthrough for estimating the work for a sales order

Our company received an order for 5 cases of FancySpeakers from one of our frequent customers, Forest Wholesales, and don't ask me why they need speakers :).

Sales order with one line
Sales order for FancySpeaker

We have sufficient inventory in our warehouse, so we have accepted the order and are starting the picking process

Inventory on hand
Available on-hand

I will skip the part where we release the sales order to warehouse, add the created shipment to a wave, process and release the wave, thus creating the necessary picking work for the warehouse crew. Here's the work that will be created as a result of these steps:

Work header and lines
Work for FancyProduct order

As you can see on the screenshot above, the Estimated time for each work line has now been calculated, as well as a summed up total on the work header.
Note: This field, along with Actual time, Work in process and Closed work, are available out of the box in the product, but are not by default shown on the Work details screen. I have added them through Personalization on that form.
If we look at the calculations, you can see we are only picking from 1 location, and, as calculated above, it should take John 36 seconds to get there and then to the dock, 45 seconds to actually pick the 5 cases (9 sec per case), and then it should take Sammy 5 minutes (300 sec) to load the 5 cases on the pallet into the truck.

Walkthrough for capturing the actual picking time

In order to execute the work we will use the Warehouse mobile device portal shipped with Dynamics AX 2012 R3. For that, we need all the relevant work user, mobile device menu and menu item setup, etc. We will need to separate menu items, one for the picking operations done by John and one Sammy doing the Loading, which is also clear from my use of 2 separate work classes as part of the work template. Below are the mobile device screens John and Sammy go through. I have omitted the way they got to these. In my system I used user directed and user grouped execution modes, but in your system this could be completely different. If you are not familiar with this configuration, please refer to the following article on TechNet.

Warehouse mobile device portal Sales Pick
Mobile device screens for John
Warehouse mobile device portal Load
Mobile device screens for Sammy
I wanted to show these screens, as it is important in terms of understanding, how the Actual Time when executing work is calculated. 

When the work user sees the first of the two screens, that means that the selected work line with Work type = Pick is now in progress, its state is updated accordingly, along with the timestamp of when work execution started. Confirming the pick by clicking OK (or simply scanning in the required data with an auto-submit) marks the approx. time when the corresponding work line is finished (or, in terms of AX, closed). Same for the second screens in each image, with the only difference being that it is now a Put line.

Depending on the way your warehouse workers go through these screens, you might need to adjust your labor standards configuration to improve accuracy of measurements. 

OK, so now the work has been completed and the speakers have been loaded on the truck. Let's see what the work looks like:

Work header and lines
Work completed for FancySpeaker order

As you can see above, the Work in process and Closed work now contain the time stamps for when the work was started and when it was completed, as well as the calculated value for Actual Time for each of the work lines. The work header is also updated correspondingly. 

Reporting on productivity

Now that we have the standards setup in AX, it will calculate estimated times for each work line for each work class with a standard. Now you will want to start reporting on work user productivity. To do that, we need to introduce two more topics: employee efficiency and employee utilization.  Employee utilization measures the time that an associate was working. We can’t really see this in AX but we can estimate it. It probably is equal to the time they were on the clock minus two breaks of 15 minutes each and some time at the start and end of their shift.

Time on the Clock480minutes
Start of Shift-8
Break 1-15
Break 2-15
Personal Time-12
End of Shift-8
Off Standard0
422minutes

This would suggest that most employees are about 87% utilized on most days if a warehouse is well run. At some sites the employees are given cards to fill out when they don’t have anything to do or have to do something that doesn't have a standard and supervisors will subtract this “off standard” time from the available minutes to work when calculating an associate’s performance.

To report on associate productivity we can print a simple report that shows the total actual (whether that is captured by the system or taken based on worker utilization) and estimated minutes associated with each work user (for example, on a given day). We can then export this to Excel, and divide the Estimated time * 100 / Actual time, getting the worker efficiency in %.

Reports available out of the box in Dynamics AX

In Dynamics AX 2012 R3 there are 2 simple reports that can be printed, that show two different slices of the captured execution time data.

SSRS Report: Labor by work transaction type
Labor by work transaction type
Labor by work transaction type could be interesting for warehouse managers when investigating inefficiencies in certain warehouse processes. They could for example see that as of this week, it takes much longer to complete picks for transfer orders and dig deeper to figure out the problem with the process.

SSRS Report: Labor by user
Labor by user
Labor by user can help us measure worker productivity, as described above. As we can see from the above report printout (of course, it is only for 1 work order, so is not really sufficient for such measurements), John needed a bit of extra time to perform his picks, which earns him an efficiency score of 1.35min/1.42min = 95%. Sammy was on the mark, getting 5.00min/4.98min = 100.4%.

Assuming that the defined standards are good, the efficiency should be around 90% to 100%. Sometimes some associates can earn over a 100%, but scores over 120% should be scrutinized because usually it is impossible for a human to outperform a well-designed standard by more than 120 to 130%. More likely if the number is low like 70% or even 50%, it usually points to a problem in employee utilization. The associates are not working all the time or there are too many people to keep busy all the time. Labor standards thus lead to changes in supervisor behavior as much as they do associate behavior. Supervisors have to run a much tighter ship under labor standards.

Conclusion

Labor standards are one of the best ways that AX can really improve a warehouse. It is in every warehouse manager’s interest to investigate using them. Even if your workforce will not accept being measured, you still could get great value from standards. While a popular opinion is that labor standards drive workers to “sweat more” the reality is the improvements in productivity rarely come about from driving up worker pace. The improvements which can be 20 to 30% or more usually come about from teaching supervisors how many people are needed to get a certain amount of work complete and in teaching associates the best way to do a job.

Try them out!

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.

Tuesday, September 16, 2014

Tutorial: Generating shipping labels using the GS1 SSCC-18 barcode format

As a follow up to my previous post about printing labels using the new WHS solution, I wanted to describe an extra feature that is available out of the box in the new Warehouse management solution and allows to generate the license plate shipping label in the format of an 18-digit serial shipping container code (SSCC), which is "used by many companies to identify a logistics unit, which can be any combination of trade items packaged together for storage and/or transport purposes; for example, a case, a pallet or parcel.", as quoted from GS1.

Here is an example of an SSCC-18 barcode (description of each of its components is provided here):

Configuring the SSCC in Dynamics AX

Let's take each part of the code above and see where we set it up in Dynamics AX:


  • Application Identifier for SSCC is always 00 and is therefore also hard-coded in the X++ code
  • Extension Digit in AX is used to specify the type of the logistics unit - pallet, case, etc. This is set up in the Unit sequence groups by specifying a digit 1-9 in the field License plate packing type, and is during work execution retrieved based on the item being processed. If no item is specified, Extension Digit will be set to 0.

Note

There is currently no validation implemented for this field, meaning you can type in any integer. Typing in a value that is more than 1 digit will obviously compromise your SSCC integrity

Here is how I have set up my Unit sequence group "Ea PL" for this demonstration:


  • GS1 company prefix is set up in the Warehouse management parameters and thus will be unique per company in Dynamics AX.

Note

There is currently no validation implemented for this field, meaning you can type in any string with a length of 8 or less characters. The requirement is of course that you only type in numerical data. Note also that according to the standard, the company prefix can be as large as 10 digits, which is not supported in AX right now, but is rather easy to customize if necessary.

Here is how I have set up the GS1 company prefix for this demonstration:


  • Serial reference is currently only set up to be generated based on a number sequence for License plate IDs. Many people request that the Container ID (used as part of manual packing or containerization flows) is used instead, but that's as of right now not possible and requires a customization. 

Note

There is currently no validation implemented to ensure the length of the generated number is within the required 6-9 digits, or that the generated string actually only consists of digits. It is therefore your responsibility to ensure the corresponding number sequence segments are set up correctly, ensuring that the combined length of GS1 company prefix and generated license plate ID is always 16 digits.

Here is how I have set up the License Plate ID number sequence for this demonstration:


  • The check digit is calculated automatically based on the generated ID and appended as the last symbol. No extra setup is required for this.

Mobile device menu item configuration

In order for all of the above to work, we need to make sure that the license plate is generated automatically by selecting the "Generate LP" check-box on the corresponding mobile device menu item.

Here is how I have set up the menu item for executing sales picking work for this demonstration:



OK, that's pretty much it. Now every time that a new target license plate is generated as part of picking sales orders, it will be in the format of a serial shipping container code. All you need to do is actually configure the work template to print the license plates, as shown in the above-mentioned post about printing labels.

The same will apply not only to sales picking work, but to many other types of mobile device flows, which as part of the flow generate a new license plate, both inbound and outbound.

Actual demonstration

To start off, I have configured the work template for sales orders to include an additional step to print the label, as shown on the screenshot below:


Next, I created a new sales order for 75 ea of item 000148_202, where a unit conversion is set up so that 1 PL = 75 ea. The order line is to be dispatched from warehouse 42, as shown below:


I reserve the line (you need to ensure there is sufficient on-hand inventory available for item 000148_202, and it is in a location, which is part of your location directives setup for Sales order picking), and release the order to warehouse, which, in turn, based on my wave template, creates a new wave and processes it, resulting in the creation of picking work that is shown on the image below:


As you can see, the Print steps is there, and the work lines are for 1 PL, which means that when printing the label, PL will be used to determine the value of the Extension digit.

Since the actual printing is already described in my previous post, I will use a different approach this time and will not setup the document routing at all. This will generate the label for me, but won't actually print it.

OK, so now let's proceed and actually execute the work. At the Pick screen, you will see the generated license plate ID, and can confirm that the format is right.


Note

The field is currently editable, so the work user can accidentally overwrite the generated value. This might improve in future AX releases to prevent human error.

Hotfix

I am afraid the contents of the generated ID are a bit off at the moment. If you type in the below SSCC code into a check digit calculator (e.g., here), you will see that the calculator produces a different check digit as compared to Dynamics AX. This is a product issue Microsoft is aware of, and it has been hot-fixed since RTM. The KB article number is 3001157 (should be available on LCS soon).


Once the Pick line is executed, the printing itself will happen, and will create a record in the License plate labels table. Go ahead and complete the Put, and let's review the label information that was persisted by navigating to Warehouse management \ Inquiries \ License plate labels. I took the liberty of hiding the uninteresting fields from the view.


As you can see, all the vital information about the license plate label, as well as the context in which this label was generated are stored, and can be used in the future.
You can, for example, reprint the label, if necessary, using a mobile device menu item with an Activity Code = Reprint label

That's it for today! Stay tuned for more.

Monday, July 14, 2014

Announcement: Warehouse management system implementation guide for Microsoft Dynamics AX 2012 R3 is now available for download

If you have been following my latest posts on the new Warehouse management module in Microsoft Dynamics AX 2012 R3, and are curious to find out more, you should check out the new implementation guide that has been released today.

You can download it through the following link:
http://www.microsoft.com/en-us/download/details.aspx?id=43660

If you have any feedback on the guide itself, or on the information missing from it, feel free to reach out through comments to this post, and I will convey the message appropriately.

Enjoy the read!

Saturday, July 12, 2014

Walkthrough: Cancelling put-away work in Microsoft Dynamics AX 2012 R3

In the new Warehouse management solution shipped with Microsoft Dynamics AX 2012 R3, any movement of inventory in the warehouse would normally have a corresponding piece of work registered together with work lines detailing where the warehouse workers should pick the goods from and where they should put them.

Therefore, it is no surprise, that when you receive a purchase order (or any other inbound order, like a transfer or a return) through the new mobile device portal, work will be created to put away the goods into a storage location (or QA or whatever you set up in your location directives). The closest analogy for those who know the existing WMS II solution that I have is the pallet transports used in conjunction with arrival journals, where goods get physically registered at the inbound dock, and a pallet transport is created to move the pallet to the location found based on the put-away rules selected on the arrival journal line (Check picking/bulk locations). The new solution allows a much better level of control over all the warehouse operations.

What I want to talk about today is the cases where the created work is not satisfactory and needs to be modified / canceled.

There are three scenarios I would like to mention:

  1. The put-away location needs to be changed, because the suggested location is unavailable or another location is simply preferable.
  2. The put-away work needs to be canceled, where a decision about the put-away location will be taken later
  3. The put-away work needs to be canceled, because the receipt was incorrect to start with



1. If the warehouse worker doing the put-away is an experienced user who is allowed to make on the spot decisions about modifying the suggested flow of inventory, he can override the put location, storing the goods away into a different location at the warehouse.

This is controlled by a policy on the setup of warehouse workers, accessible through Warehouse management \ Setup \ Work users \ Worker, as shown in the below screenshot:

Work user policies
Allow work user to override put location when executing work

2. Another way to achieve this would be to cancel the pending put-away work, ensuring that workers do not see it on their mobile devices as something they should execute now, and creating a manual movement to a location of choice when the decision where to move the goods is made. This would be a decision done by a receiving clerk / warehouse manager. 
It could also be due to some extra paperwork or inspection being done on the items, where it's yet unclear if the system-selected put-away location is OK. (If it is, the warehouse manager could simply block the work until a decision is made, which would prevent workers from executing on it)

In order to cancel the work, simply press the "Cancel work" button on the Work details form (or corresponding list page). See a step-by-step walk-through below.


3. Now, sometimes, due to input errors or other factors, you would want to not only cancel work, but also make sure the goods are not physically at the warehouse either, reverting the entire receipt as if it never happened (you'll still have a trace of it happening). This could, for example, be useful if the receiving clerk was logged in to a different warehouse and accidentally received a purchase order to that warehouse instead of the one the user was actually at (Note: Not possible in RTM, need a corresponding hotfix installed).

This additional step of unregistering the items is controlled by a policy on the Warehouse management parameters, called "Unregister receipt when canceling work".

Warehouse management parameters
Warehouse policy - Unregister receipt when canceling work


Here is a step-by-step description of the cancel workflow:
  • Create a new purchase order for a WHS-enabled item to a WHS-enabled warehouse
Purchase order details
Purchase order with one line for a WHS-enabled item to a WHS-enabled warehouse
  • Using the mobile device portal, register the receipt of the above purchase order (Hint: use a mobile device menu item with Mode = Work and Work creation process = Purchase order item receiving)
PO receipt
Purchase order receipt on Mobile Device Portal

  • View the inventory transactions for the above purchase order, and confirm that they are registered at the default receiving location at the selected warehouse (Note: It is the warehouse the user was logged in to when doing the PO receipt from the mobile device)
Inventory transactions
Purchase order inventory transaction with Receipt status = Registered

  • Open the created put-away work (Hint: You can navigate directly to the new piece of work from the purchase order details form, by clicking on Work details button in the Lines section), and click on Cancel work.
Work details
Canceling put-away work

  • Confirm that Work status of the work header and lines has changed to Canceled, and (depending on the above warehouse management policy) the purchase order line inventory transaction is back in Ordered receipt status. 

Note: This policy is currently implemented only for Purchase orders and Transfer order receipts. It will not come into play when registering the receipt of a return order or any other inbound order types.


I would also be interested in hearing your scenarios, which require canceling put-away work, and the reasons behind them. So if you use this functionality for reasons other than described above, please leave a comment below.

Thanks