The warehouse app for Dynamics 365 for Operations and Finance (hereafter D365FOE) offers out-of-the-box support for both basic and more advanced warehouse processes. There are however some areas, where the process support can be improved.
In this post we investigate if PowerApps can be used to compliment the warehouse app to improve warehouse processes in D365FOE.
Lack of overview
For most warehouse processes, the warehouse worker can see an overview of pending warehouse work in worklists on the warehouse app. Worklists presents each work as a tile. The more tiles – the more work remains to be done.
Besides providing overview on remaining work, the worklist also provides, a quick way to initiate execution of the work. The worker simply touches one of the tiles to start the picking process.
There are however some processes, that are not supported by worklist. Examples of this include item receive process, production report-as-finished and system grouped picking. For these processes no overview is provided and the warehouse worker must initiate the process by manually entering (or scanning) a purchase order id, load id, production id etc.
PowerApps supported item receiving
As mentioned previously, the item receive process does not provide any worklist overview. Consequently, the warehouse worker must initiate the item receive process by manually entering a purchase order ID.
As a workaround you can find various purchase order overview forms in D365FOE, but they have several inherent problems:
- They are not specifically designed to display relevant information for warehouse workers performing the item receive process. They will typically display a lot of irrelevant information, and on the other hand omit important information relevant for item receive process
- They can’t be used to initiate the item receive process on the warehouse app
We have therefore tried to solve these two problems by creating a PowerApp (see below), that provides a specialized item receive overview and also allows the worker to initiate the item receive process in a simple way.
The PowerApp only displays information relevant for the item receive process. Furthermore exceptions / special handling is highlighted with color to increase awareness for the worker.
The warehouse worker can initiate the item receive process, by scanning a Purchase id barcode displayed on the PowerApp and optionally also the item barcode from the PowerApp:
Building an item receive PowerApp
The PowerApp is built using a standard tablet layout based on the list template.
First step is to identify the data entities containing relevant information for the item receive process. D365FOE comes with many predefined data entities. We identified the three data entities below, that contained the required item receive information.
Next step is to filter and sort the list of purchase orders. This is done in the item property of the gallery list:
Now start by inserting fields from the PurchaseOrderLinesV2 entity, as these can be inserted directly:
Fields from related data entities to PurchaseOrderLineV2 can be inserted using the lookup function:
Refresh of data
To make sure the PowerApp will display updated information, a timer is inserted. The timer counts to 60 seconds and then restarts.
Upon restart, the purchase line data source is refreshed:
Creating barcodes in PowerApps
To allow the worker to use the PowerApp to initiate the receiving process on the warehouse app, we need to add barcodes to the PowerApp screen.
This can be done by using a barcode API. The API that we are using is the http://labelary.com/viewer.html. This API enables you to generate a barcode from a ZPL file.
To create the ZLP file, download the Zebra Designer from the Zebra website. This free editor will create printed bar code labels, and the next steps will walk through the generation of a simple QR barcode.
Open the Zebra Designer -> create a new blank document and select the QR code.
In the next screen insert the requested data. In this case the number sequence does not contain letters, but the QR Barcode is able to have letter and special characters like -.
Press finish and resize the QR code.
Print the barcode as a file:
Select the print button and print as a file.
Save the file in a folder and edit the file in notepad.
In this case, the new web path looks like this:
This web site is then used in the power app:
Open the power app in edit mode and insert a picture:
Edit the picture and insert the web address from the previous setup.
The web address must be put in quotes. (“”)
In the web address, replace the ID with the function for purchase order ID.
This is done by writing &PurchaseOrderNumber&
Before editing (remember to put quotes around the text below):
After editing (remember to put quotes around the text below):
Now the app will show the barcode per line:
Improve Report-as-finished process using embedded PowerApps
In the report-as-finished flow in the warehouse app, the production number must be used when reporting as finished.
Instead of entering the production id manually or scanning from a piece of paper, we can use an embedded PowerApp, to display the barcode directly in the D365FOE production form. This will allow the worker to scan the production id from the D365FOE form to initiate the report-as-finshed process:
Creating the embedded PowerApp
The same method as the previous example can be used to generate a barcode for the production order. Using embedded powerapps do however require a few more steps, and we will go through them in the next steps.
In the PowerApp editor, create a blank app and insert a picture like the previous app.
We have selected a landscape app, as the embedded app will look nicer when adding it to the form in Dynamics365FOE.
Instead of the purchase order tag, insert the function for data from embedded powerapps in dynamics 365.
This fuction is called FinOpsInput and to use this in a web address, the EncodeUrl must be used.
The web address should look like this:
Select the OnStart function in the app. Do not select the picture before doing this. This line will enable Dynamics365FOE to use the app with live data as an embedded app.
Insert this function in the fx area:
If(!IsBlank(Param(“EntityId”)), Set(FinOpsInput, Param(“EntityId”)), Set(FinOpsInput, “”))
Copy the app id by selecting the file menu:
Select See all versions:
Click the details tab and copy the App ID number for later use:
Open Dynamics 365FOE and in the production orders details form, right click and personalize.
Insert powerapp in D365FOE
To insert the power app, select insert power app and point in the form where you would like the power app to be available.
Use the APP ID that you copied earlier and select the input field that you would like the power app to use. In this case the barcode should be generated for the production order ID.
Now, an embedded powerapp is available for all production orders, and the report as finished flow is simpler when using the warehouse app.
Advanced PowerApps using customized data entities
It’s also possible to create more advanced Powerapps using customized data entities. The Powerapp below supports the Load receive process in D365FOE. In this item receive variation, the worker starts by scanning a load id instead of a purchase ID. Instead of entering the load id manually, the worker scans the barcode containing the load id.
This PowerApp does however require a customized data entity consisting of information from loads, load lines, appointments and products.
The creation of customized data entities do require developer assistance, but there’s several advantages:
- The PowerApp becomes simpler/easier to build, because you do not need to join several datasources
- You can avoid delegation issues in the PowerApp, because you can filter data before sending it to PowerApps.
- App performance can be optimized using filtering at row and column level before sending data to the App
Powerapps provides interesting possibilities to extend warehouse and manufacturing processes in Dynamics 365 for operations. We are currently trying out PowerApps on D365FOE projects to get feedback from customers to understand where / how we can apply PowerApps to leverage the customers processes. Other processes that might benefit from the Powerapps described in these posts are:
- System grouped picking, where the worker must enter some grouping id – typically a sales order id or a load id to initiate picking of all work to a sales order/load etc.
- Work lists system grouped, where the worker must enter some grouping id – typically a sales order id or a load id to initiate picking of all work to a sales order/load etc .
- Material consumption, where the worker must enter a production id to register material consumption.
- Raw material picking, where you can use worklists – but they are not able to display production start date/time and context about the production – like production id, finished goods item etc.