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.

Worklist

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.

Purchase order today powerapp

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:

ScanPOnum       ScanItemId

Building an item receive PowerApp

The PowerApp is built using a standard tablet layout based on the list template.

PowerAppsListTemplate

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.

PowerAppsDatasources

Next step is to filter and sort the list of purchase orders. This is done in the item property of the gallery list:

PowerAppsSortFilter

Now start by inserting fields from the PurchaseOrderLinesV2 entity, as these can be inserted directly:

Fields

Fields from related data entities to PurchaseOrderLineV2 can be inserted using the lookup function:

lookup

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.

timer1

Upon restart, the purchase line data source is refreshed:

timer2

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.

onlineZPL

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.

zebraDesigner

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

BarcodeWizard

Press finish and resize the QR code.

QRcode

Print the barcode as a file:

Select the print button and print as a file.

QRcode2

Save the file in a folder and edit the file in notepad.

NotepadCopy the content and insert the content after this path:

http://api.labelary.com/v1/printers/8dpmm/labels/2×2/0/%10%10CT~~

In this case, the new web path looks like this:

http://api.labelary.com/v1/printers/8dpmm/labels/2×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:

PowerappsInsertBarcode

Edit the picture and insert the web address from the previous setup.

The web address must be put in quotes. (“”)

PowerappsInsertBarcode2

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):
http://api.labelary.com/v1/printers/8dpmm/labels/2×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):

http://api.labelary.com/v1/printers/8dpmm/labels/2×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:

PowerappsInsertBarcode3

 

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.

RAF-prodID

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:

embedded1.png

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.

CreateEmbeddedPowerApp

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:

http://api.labelary.com/v1/printers/8dpmm/labels/2×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.

Onstart

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:

filemenu.png

Select See all versions:

SeeAllVersions

Click the details tab and copy the App ID number for later use:

Details

Open Dynamics 365FOE and in the production orders details form, right click and personalize.

personalize.png

personalize2.png

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.

Personalize3

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.

insertPowerapp.png

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.

embeddedresult.png

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

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

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:

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

 

 

Advertisements