Handling ‘Run Flow’ failures from a business process flow

My previous post explored the Customer Voice side of digitising and application process. In these next few posts I will focus on how I leveraged specific parts of Power Automate to create a seamless process from application initiation, through to submission, follow up and beyond. There are two key Power Automate flows - one to send the application to the enquirer and one to receive the completed application from the customer.

This post will focus on handling flow run failures from a business process flow - gracefully and informatively in a user friendly manner!

Send

Sending the application is triggered from the business process flow after the enquirer has been to visit and would like to complete a digital application.

SendDigiApp.png

Get context of the record the ‘Run Flow’ button was called from

Use get record and ‘BPF Flow Stage Table Row ID’ to get the record which the flow button was called from - in this case the ‘Enquiry’

SendApplicationMiddle.png

Error handling for customer email address

Unfortunately you cannot use business rules on the ‘Run Flow’ button on the business rpoces flow, so its entirely possible for a user to run the flow for an enquiry which doesn’t actually have an email address. This will cause errors and failures later in the flow so its best to handle this gracefully and to let the user know what went wrong/how to resolve it.

SendApplicationMiddle2.png

Mark business process flow step as failed

Use the ‘Update record’ to update the process Log linked to the ‘Flows Workflow Log Id’. Whether the flow fails or succeeds, if you don’t do this step the flow step will remain forever as ‘Processing’ which isn’t such a jolly user experience or audit trail.

ProcessFailed.png

Create an informative error email to calling user

As well as failing in the business process flow - we should notify the user as since the flow runs asynchronous (in the background) the failure message is not instant - they have probably left the record and carried on with their other tasks already. A few handy tips in this one -

  • Sending an email to a non ‘Contact’ or ‘User’ aka an ‘unresolved recipient’ - in the case of the BPF Flow step the ‘ID’ it sends back for the calling user is actually the Azure Active Directory ID, not the Dataverse User ID. But you do also get the email of the user in the response - so we can use this to send the email to the ‘calling user’. More info on this one check out this blog post from Linn Zaw Winn

  • Link the email back to the Enquiry using ‘Regarding’ - so that it will show on the activity timeline so if another user picks up the record later, they can clearly see what has happened, what went wrong and how to resolve the issue if not already done

  • Create a Dynamics URL back to the record that works based on the environment the flow is deployed to using the urihost(), ‘BPF Flow Stage Table Row ID’ and <a href></a> HTML syntax to create a clickable link

URIHost -> uriHost(outputs('Get_Enquiry')?['body/@odata.id']) <a href = "https://URIHost/main.aspx?pagetype=entityrecord&etn=TableLogicalName&id=RecordID">Link to Enquiry</a>

Send the email

Once the email is created use the ‘Perform a bound action’ action to trigger the email to send from Dataverse

SendApplicationLEFT.png

What’s next?

We have handled any potential errors - my next post will focus on the ‘happy path’ and how to send the application to the customer in a way which is personalised, unique and trackable.

Previous
Previous

Sending Digital Applications with Customer Voice & Power Automate

Next
Next

Make the Activity Timeline Control Useful in Model-Driven Power Apps