Friday, February 05, 2016

Tips: Configuring Warehouse Mobile Devices Portal after installation on CTP7 and CTP8 builds of the latest Dynamics AX release

Introduction

Over the last couple of months we have had a number of customers go live on the latest version of Microsoft Dynamics AX, and some of them have decided to use the Advanced Warehousing solution including the Warehouse Mobile Devices Portal (WMDP) that is shipped together with AX.

In my last post I provided links for how to install and use the portal:
http://kashperuk.blogspot.dk/2016/01/tutorial-warehouse-mobile-devices.html

Here I would like to focus on a few aspects we've learnt based on interaction with the Go-Live customers, that will hopefully help some of you to avoid the same problems.

Tip 1

In CTP7 and CTP8 (in case you don't know what CTP stands for, read wiki) WMDP was not strongly signed. That means that on your environment after installation, you could receive an error like below (In Event Log):

Exception information: 
    Exception type: ConfigurationErrorsException 
    Exception message: Could not load file or assembly 'Microsoft.Dynamics.AX.Whs.Web, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. Strong name signature could not be verified.  The assembly may have been tampered with, or it was delay signed but not fully signed with the correct private key. (Exception from HRESULT: 0x80131045)

In the final (RTW) release of Microsoft Dynamics AX the assembly is strongly signed.

But if you are on CTP7 or CTP8, you can refer to one of the below solutions:

Solution 1

One thing you can do to resolve this is sign the assembly, using the strong name tool in a command like the following:

C:\Program Files (x86)\Warehouse Mobile Devices Portal\DEFAULT\bin> sn -Vr .\Microsoft.Dynamics.AX.Whs.Web.dll

This is the preferred approach.
For test environments, you could also just go with Solution 2

Solution 2

You can also just disable strong name verification on the machine you are testing out the portal on, by modifying the registry with commands below (for x86 and x64):

reg DELETE HKLM\Software\Microsoft\StrongName\Verification /f
reg ADD HKLM\Software\Microsoft\StrongName\Verification\*,* /f
reg DELETE HKLM\Software\Wow6432Node\Microsoft\StrongName\Verification /f
reg ADD HKLM\Software\Wow6432Node\Microsoft\StrongName\Verification\*,* /f 

Or, if you want to limit the scope of allowed non-signed assemblies, you can restrict it to just the WMDP dll in the above ADD commands like below:

reg ADD HKLM\SOFTWARE\Microsoft\StrongName\Verification\Microsoft.Dynamics.AX.Whs.Web,31bf3856ad364e35

reg ADD HKLM\SOFTWARE\Wow6432Node\Microsoft\StrongName\Verification\Microsoft.Dynamics.AX.Whs.Web,31bf3856ad364e35 

If you want to learn a bit more (or get a ready PowerShell function for the above), refer to this blog post.

Tip 2

WMDP is an ASP.NET MVC based web site and has a number of important configuration options in its web.config file. You can read more about the configuration options on MSDN.
One particular setting is important to note, since it is believed that it has an "incorrect" value by default after installation in AX 2012 CU8 build.

The setting is customErrors, and you can read all about it on MSDN

In production environments, this setting should always be set to "On", as WMDP X++ code in some cases throws unhandled exceptions, which result in a complete meltdown of the web site, if not redirected correctly to a user-friendly error page. 
The "Off" setting can be used on test environments when debugging the site, as it will provide call stack information for what happened. 

Hope this helps!

And let me know if you have additional tips to add here about WMDP, I will gladly add them here

Thursday, January 28, 2016

Tutorial: Warehouse Mobile Devices Portal for the latest version of Microsoft Dynamics AX

A lot of people have been trying to use the Warehouse Mobile Devices Portal (WMDP in short) on the latest version of AX (on various CTP builds we've released), and have been having a lot of trouble with that.

We've finally published the wiki article on installing the portal on a clean environment, that contains step by step instructions on how to download the installer, and how to configure it after installation to connect to the AOS. It's available here:
https://ax.help.dynamics.com/en/wiki/warehouse-mobile-devices-portal-for-microsoft-dynamics-ax/


Also, for those who just want to quickly execute some warehouse work and are used to the WMDP emulator form - that one is still available, and can be accessed very easily through the following link

https://usncax1aos.cloud.onebox.dynamics.com/?mi=action:WHSWorkExecute&cmp=usmf

(where you need to replace usncax1aos.cloud.onebox.dynamics.com with the URL of your AX)


Hope this helps!

And let us know if you have feedback on the installation instructions wiki page through whatever way you prefer.

Thanks!

Thursday, January 07, 2016

Learn more about the new release of Microsoft Dynamics AX

There's a public Wiki for latest release of Microsoft Dynamics AX

Please check it out, it has some content already, and more will be added over time as we near the public release.

The idea is that community members will also be able to add content there.

https://ax.help.dynamics.com/en/

Tuesday, January 05, 2016

Tutorial: Locations with open work exceptions in the new release of Microsoft Dynamics AX

Background

Microsoft Dynamics AX or, for that matter, any ERP system relies heavily on the information entered by the users. But, as we all know, in real life the data in the system frequently gets out of sync with the actual state of things.
In the Warehouse management module, when work is created, it is based on the on hand information (what we have and where we have it) as reported in the system. When work is executed, however, a real person, namely a warehouse worker, goes (or drives out) to the specified warehouse location to pick up the goods. But what if the item is not actually there? These kinds of discrepancies in AX 2012 are reported as work exceptions. Depending on your system configuration, the warehouse worker can create a work exception of one of the following types:
  • Override the location and search or directly input a new location, if the worker has knowledge of where else to find this item
  • Register a ‘short pick’, simply picking less than instructed, and rely on AX to handle the remaining pick requirements. You can read about this type of work exception in my previous blog post at http://kashperuk.blogspot.com/2015/07/tutorial-short-pick-goods-on-mobile.html
As a result of these worker actions a work exception would be recorded in the Work exception log. Now, that’s good, but no follow up would happen on these exceptions unless somebody explicitly went in and investigated the log, looking for patterns and possible ways to re-route or cancel the work one entry at a time.

Solution

With the release of new Dynamics AX we decided to do something about that. Relying only on that same information already recorded by the system (a few minor enhancements were done, where we now capture even more info) we have built a form for the Warehouse planner, where he can get an overview of any on-hand discrepancies in warehouse locations and take appropriate action on any exceptional situations right away, potentially avoiding delays in delivery of goods.

In this post I would like to walk you through the capabilities of this advanced form, which we called “Locations with open work exceptions”. Here is what it looks:


Locations with open work exceptions

The form’s primary purpose is to show the locations with problems, so the warehouse planner can do something about them, whether it is re-count, re-route, cancel work, etc. We show locations, where one or more work exceptions have been recorded and the state of the work exception is Open. A work exception is only relevant, if it has not yet been investigated, therefore we only show locations with Open work exceptions, also giving the warehouse planner the ability to mark the work exceptions as ‘investigated’ or ‘resolved’ by closing them.

The focus of this form is to streamline the outbound waves, so we only show work exceptions recorded during Transfer order and Sales order picking, limiting it even further to only the initial picks in the warehouse. So we do not, for example, display purchase order receipts, or exceptions recorded at the baydoor where the worker had to override the location as the lane was already full.

It’s a pretty large form with A LOT of data being shown. Let us walk through it from the warehouse planner’s standpoint, touching upon all of the supported scenarios. Once you get familiar with the different sections in the form, it actually gets pretty easy to navigate it.

Section 1. Understand the urgency

The warehouse planner needs to get an overview of the locations, where open short pick or location override work exceptions are currently logged. He needs to understand the urgency of following up on the exception to ensure the on-hand information is accurate for each of these locations. In order to do so the warehouse planner needs to understand the following:

  • When is the first work order line scheduled to be loaded (The scheduled load shipping date and time)? This is the date and time, when the load containing one of the pending work lines needs to be shipped, which drives how fast you need to ensure sufficient on-hand is available for picking on that location.
  • What is the location Id and which warehouse zone is this location in? For example, we might want to just ignore exceptions in certain zones of the warehouse, relying instead on periodic replenishment jobs.
  • What is the number of open work order lines for this location? That is, what other workers are going to come to pick something from this location in the near future. If there are none, it might mean that the urgency for follow-up on this location is much lower.
  • What is the date and time stamp of the last work exception logged for this location? That is, how recent is the report, maybe it has long since been resolved through other means like periodic (min/max) replenishment.
  • When was this location last counted? If it was counted recently, the work exception might not be relevant any longer. For example, if the date of the last count was after when the last work exception had been reported.
  • How many work exceptions were logged for this location and of which type? This could allow the warehouse planner to determine (depending on the business flows in the company) if there are any shipments that will be short, or if users were able to find on-hand somewhere else through overriding the location, in which case it might not be as urgent to follow up on this.
    • He can also drill down and look at the details of all the open work exceptions for this location, e.g., to see which orders are impacted.

The information described above is available in the grid on the left side and in the topmost fast tab, as shown in the screenshots below. 

You can use the built-in Quick Filter above the grid, as well as the Filter pane to narrow down the list to show only those locations that need an urgent follow-up. 

The Open work exceptions button will open the existing Work exceptions log form pre-filtered to the warehouse location currently selected.



Section 1. Navigation grid



Section 1. Location and Exception details
Section 1. Location and Exception details


The warehouse planner also has the ability to close all the work exceptions for the selected location. This way he can, for example, filter out all the ones that he’s not interested in, and update them to Closed one by one, using the Close work exceptions button above the navigation grid. Multi-selecting records in this grid is, sadly, not available.

Depending on the information presented the warehouse planner might decide that a re-count of the on-hand is in order, as a mitigation step for the work exception. He can create cycle counting work by location or by product, if he thought this would actually take care of the work exception reported. He could then close the exception and move on to the next location with problems.

Section 2. Understand which products have problems


OK, now that the warehouse planner has filtered out the relevant work exceptions, he can start to investigate them one location at a time. 
Each location can have one or more products stored on it. The warehouse planner can in the grid under Released products with exceptions see the list of all the products (the definition of course includes the product dimensions for each of them), as well as the inventory status and tracking dimensions for each product. He can then for each product review additional information to understand what can be done or if anything should be done at all.

Section 2. Released products with exceptions
Section 2. Released products with exceptions

Section 3. Understand immediate product demand

The above section also shows the quantity totals for the selected product on this location, allowing Wayne to quickly estimate the overall product demand and quickly judge if he can actually do something about the shortage:
  • Quantity of this product available on this location, as registered in the system. This might be useful if it was just a worker mistake, and counting could confirm or deny the correctness of the recorded on-hand quantity in the system, for example.
  • Quantity of this product needed on this location, as based on all open work order picking lines.
  • Quantity of this product incoming to this location, e.g. purchase order put away work lines, that could satisfy the pending demand for the product.
  • Quantity of this product available in other locations on the warehouse, that we could use to satisfy the demand directly or replenish the stock in this location.
The warehouse planner can then for the selected product and related inventory dimensions see all pending pick work lines, allowing him a quick overview of potential work exceptions in the near future if nothing is done. Two important pieces of information here, apart from the quantity required, are the Scheduled load shipping date and time, to judge necessary quantity availability, as well as the Blocked wave flag. If the work line is still blocked, it means we have a bit more time before the quantity must be available. 
Wayne can navigate to see the Work details for the selected line, if the information displayed in the grid is not sufficient for making the decision. He can also cancel one or more of the shown work lines using the Cancel work line button. He could choose to cancel the pending picks if, for example, there is in fact no quantity available to pick from / replenish from, meaning we won’t be able to complete this pick anyway, so there is no point in sending a worker over there and just getting a new short pick work exception created.


Section 3. Work order lines for selected product
Section 3. Work order lines for selected product

Section 4. Understand product availability at the warehouse

The warehouse planner needs to understand if he can make an emergency replenishment of the selected product to the selected location, thus satisfying the pending picks from there. The On-hand inventory for selected product fast tab allows him to do that by providing an overview of on-hand inventory available for the selected product (including all above inventory dimensions) at other locations at the same warehouse. 

Section 4. On-hand inventory for selected product

He can then select one of the locations with available on-hand and Create inventory movement work manually scheduling a move of inventory with all the relevant information pre-filled to move the goods to the location that is short. Note that only the on-hand that can actually be moved from the location is shown, meaning on-hand reserved for some other work, for example, is excluded.

Note, that a flag Has open work exceptions is displayed in the grid, which shows if there currently exists an open work exception for that location. The warehouse planner would potentially avoid trying to replenish from such locations, as the inventory on-hand registered in the system for that location seems to be wrong too, so the replenishment might fail, causing even more problems.

Conclusion

As you hopefully can see, this is a new awesome decision center for the Warehouse planner when it comes to handling exceptional situations in the picking flow. It is a very control-heavy form, but hopefully the above description helped clarify the intention behind all of the data shown.

Please let me know if you have questions or suggestions on how to improve the user experience / extend the flow here.

P.S. You can also view this blog post in Word if you want by following this link

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