Birger Larsen – AX / Dynamics 365 blog on WMS

Using PowerApps to support warehouse processes


Written by Steffen Daugaard Pedersen and Birger Larsen

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:

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 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.

Copy the content and insert the content after this path:×2/0/%10%10CT~~

In this case, the new web path looks like this:×2/0/%10%10CT~~%10CT~~CD,~CC%5E~CT~%5EXA~TA000~JSN%5ELT0%5EMNW%5EMTT%5EPON%5EPMN%5ELH0,0%5EJMA%5EPR4,4~SD15%5EJUS%5ELRN%5ECI0%5EXZ%5EXA%5EMMT%5EPW609%5ELL0406%5ELS0%5EFT79,343%5EBQN,2,10%5EFDLA,00000451%5EFS%5EPQ1,0,1,Y%5EXZ

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):×2/0/%10%10CT~~%10CT~~CD,~CC%5E~CT~%5EXA~TA000~JSN%5ELT0%5EMNW%5EMTT%5EPON%5EPMN%5ELH0,0%5EJMA%5EPR4,4~SD15%5EJUS%5ELRN%5ECI0%5EXZ%5EXA%5EMMT%5EPW609%5ELL0406%5ELS0%5EFT79,343%5EBQN,2,10%5EFDLA,00000451%5EFS%5EPQ1,0,1,Y%5EXZ


After editing (remember to put quotes around the text below):×2/0/%10%10CT~~%10CT~~CD,~CC%5E~CT~%5EXA~TA000~JSN%5ELT0%5EMNW%5EMTT%5EPON%5EPMN%5ELH0,0%5EJMA%5EPR4,4~SD15%5EJUS%5ELRN%5ECI0%5EXZ%5EXA%5EMMT%5EPW609%5ELL0406%5ELS0%5EFT79,343%5EBQN,2,10%5EFDLA,”&PurchaseORderNumber&”%5EFS%5EPQ1,0,1,Y%5EXZ

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:×2/0/%10%10CT~~CD,~CC%5E~CT~%5EXA~TA000~JSN%5ELT0%5EMNW%5EMTT%5EPON%5EPMN%5ELH0,0%5EJMA%5EPR4,4~SD15%5EJUS%5ELRN%5ECI0%5EXZ%5EXA%5EMMT%5EPW609%5ELL0406%5ELS0%5EFT89,337%5EBQN,2,10%5EFDLA,”&EncodeUrl(FinOpsInput)&”%5EFS%5EPQ1,0,1,Y%5EXZ”

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.

Click insert.

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:

What’s next?

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: