This short guide will show one of possible solutions how to prevent a Cloud Flow action from failing when a lookup column output from a previous action is "null/does not contain data".
By implementing a custom expression function, you can failproof the action and keep each lookup column empty if required.
I have prepared a test cloud flow that permanently fails when executed because GUID = Null:
I am trying to update a "parentcustomeid" lookup of a Parent Contact and input must be "/entityset(key)" where:
• entityset - table entity set name that can be copied from related table configuration page.
• key - GUID of a row
Normally your action field could look like this:
"Account Name (Accounts)" /accounts(triggerOutputs()?['body/accountid'])
I suggest we add an Expression Function for the field using a string below:
if(Equals(triggerOutputs()?['body/accountid'], null), '', concat('/accounts(', triggerOutputs()?['body/accountid'], ')'))
Each expression function should be applied per/for each lookup column.
The logic behind this expression function is similar to Condition action except it is simply contained in a single line of text.
1. "If" checks whether our statement is true or false. In our case "if" (true) "Account" from "trigger outputs" "equals" "null", then the column will be kept clean by adding two single quotation marks - ''.
2. Otherwise "if" false, then it means that data (GUID) is present and we have to "concatenate" the similar " / accounts( triggerOutputs()?['body/accountid'] ) " formulas several parts it contains to maintain its structure inside a function expression.
If correctly done you normally won't be bothered with failure notifications and operations in your CRM won't be interrupted. 😉