Thursday, 4 February 2016

WHS Mobile Device application debugging

This post is about my debugging and error finding in the WHS Mobile Device application.

First of all some general info about the Warehouse Mobile Device Portal, Microsoft published a series of post on the topic that will cover the architecture, setting up etc. The posts are well worth the read.
Warehouse Mobile Device Portal part 1
Warehouse Mobile Device Portal part 2

and a general post about my problem area

Inventory on-hand movements/transfers using the mobile device menus

First of, there is the option of simulating the web based client by opening the Form WHSWorkExecute:

when opening it you get a X++ form that is ideal for debugging the code - the menu is customizable - so your may look different


And now to the problem, when ever we did a Location transfer (that was setup as a movement as per the guides in the Microsoft blogs above - so it's not the standard naming) in the mobile device application it went back to the From page.

We could copy the license plate into the client and the rest of the data would be filled in - seemingly:



Once we pressed the OK button however, the client would skip back to the From-page again, deleting the Qty:



Since the environment is without customisations, we suspected that the issue was data related - furthermore we could tell that the Inventory status was apparently blank even though we confirmed the status to be available in the On-hand inventory.


We could do transfers in the AX client via the Transfer journals, so the data related to the item was correct.

We were interested in investigating how the client form (either the web based or the AX form) got populated, because somewhere along the lines, the inventory status went missing.

Well, after some extensive digging we found the class that populates the form with labels, data fields and buttons:

WHSRFControlData



The population takes place in the populateData() and we could confirm that the InventStatusId was correct when assigning to the fromInventStatusId variable
 
but when adding the Id to the control, there was a round trip to the WMSInventStatus where the Name was inserted as data value and not the Status from the actual inventory status.

A short look into the WHS Inventory status form showed that the Name was blank, resulting in the Inventory status of item in the Mobile Device Portal not being populated - and consequently resulting in the user not being able to transfer the item (and the behaviour above).
 

Adding the Name to the Inventory status resulted in expected behaviour of the forms and we could do our transfer