Best practices when updating a flow used by a Power App
This article describes best practices and steps to mitigate common errors when running Microsoft flows in Power Apps.
Applies to: Power Apps
Original KB number: 4477072
Error code "InvokerConnectionOverrideFailed" on Flow run
Some flows fail to run in Power Apps. In the Flow run history or the Power Apps telemetry, you might receive an error that resembles the following:
{
"code": "InvokerConnectionOverrideFailed",
"message": "Failed to parse invoker connections from trigger 'manual' outputs. Exception: Could not find any valid connection for connection reference name '<some_connection>' in APIM tokens header."
}
Note
This error also occurs when you call the install
API on Common Data Service (CDS), but the response is a generic error "Install flow failed."
Cause
This issue occurs because the flow has been updated to use a new connection, but the app still uses the old flow metadata. Updating the flow doesn't update the apps that use the flow. To solve this issue, you must manually update the app for changes to be reflected in the app and for the flow to work.
Mitigation steps
Note
Make sure to perform the following steps in the source or development environment and update the solution. Once the solution is updated, import it to all the target or production environments.
- Open the app for editing using the latest version of Power Apps Studio.
- Remove the flows from the app (Remove flows from the Power Automate tab).
- Re-add the flows to the app.
- Save and republish the app.
Error code "ConnectionAuthorizationFailed" on Flow run
{
"code": "ConnectionAuthorizationFailed",
"message": "The caller with object id '{user_id}' does not have the minimum required permission to perform the requested operation on connection '{some_connection_id}' under API '{some_connection_api}'."
}
Cause
This error means that although the maker has permissions to the flow, the maker doesn't have permissions to the dependent connections that are used in the flow actions. This is a limitation of the Power Apps and Flow integration.
Mitigation steps
Note
Make sure to perform the following steps in the source or development environment and update the solution. Once the solution is updated, import it to all the target or production environments.
This mitigation is to have all connections in the flow be owned by a single user and then have that user add the flow to the app.
Error code "WorkflowTriggerIsNotEnabled" on Flow run
{
"code": "WorkflowTriggerIsNotEnabled",
"message": "Could not execute workflow '<GUID>' trigger 'manual' with state 'Disabled': trigger is not enabled."
}
Cause
This error means that the flow is turned off.
Mitigation steps
Note
Make sure to perform the following steps in the source or development environment and update the solution. Once the solution is updated, import it to all the target or production environments.
The mitigation is to turn on the flow.
Inner error code "ResponseTimeout" on Flow run
{
"error": {
"code": 504,
"source": "<api hub source>",
"clientRequestId": "<GUID>",
"message": "BadGateway",
"innerError": {
"error": {
"code": "ResponseTimeout",
"message": "The server did not receive a timely response from the upstream server. Request tracking id '<some_tracking_id>'."
}
}
}
}
Cause
This error means that the synchronous flow takes longer than 120 seconds (2 minutes) to finish, causing it to time out. Learn more about the timeout limit of an outbound synchronous request.
Mitigation steps
Note
Make sure to perform the following steps in the source or development environment and update the solution. Once the solution is updated, import it to all the target or production environments.
The mitigation is to find which flow run is taking too long and optimize it to run in two minutes using the resolutions provided in Troubleshoot slow running flows.
Error code "0x80040265" or "0x80048d0b" on Flow run
{
"code": " 0x80040265",
"message": "Failed to install the flow."
}
{
"code": " 0x80048d0b",
"message": "Failed to install the flow."
}
Mitigation steps
Note
Make sure to perform the following steps in the source or development environment and update the solution. Once the solution is updated, import it to all the target or production environments.
Try the solutions mentioned for one of the following error codes:
Error code "MissingConnectionReference" on Flow run
{
"code": " MissingConnectionReference' ",
"message": " Connection reference '<connection name>' was not given by invoker."
}
Example error:
Connection reference '<connection name>' was not given by invoker.
Cause
Essentially, app and flow metadata must be synchronized. Any changes made to a flow require the app maker to edit the apps using the flow and remove or re-add the changed flow.
For solution apps or flows, an app might successfully invoke the flow in the source environment and then fail in the target environment with this error message:
Connection not configured for this service.
The reason is that there might be a change to the flow in the target environment, but it doesn't exist in the source environment.
Mitigation steps
Note
Make sure to perform the following steps in the source or development environment and update the solution. Once the solution is updated, import it to all the target or production environments.
In the source environment, edit the app. Remove and then re-add the flows to the app. Save and publish the changes.
In the target environment, remove all unmanaged layers on the app and flow.
Export the solution and import it into the target environment.
Note
There can be no unmanaged layers on either the flow or the app because this can cause issues in connection to the flow.
Error code "NotAllowedConnectionReferenceon" on Flow run
{
"code": " NotAllowedConnectionReference",
"message": "Connection reference '<connection name>' was not given by invoker."
}
Example error:
Connection reference '<connection name>' was not given by invoker.
Cause
This error means that the app has flow metadata that specifies that a SQL connection is required on the installation, but the actual flow metadata is different.
Mitigation steps
Note
Make sure to perform the following steps in the source or development environment and update the solution. Once the solution is updated, import it to all the target or production environments.
Mitigation option 1
In the source environment, edit the app. Remove and then re-add the flows to the app. Save and publish the changes.
In the target environment, remove all unmanaged layers on the app and flow.
Export the solution and import it into the target environment.
Note
There can be no unmanaged layers on either the flow or the app because this can cause issues in connection to the flow.
Mitigation option 2
- Change the connection from Embedded to Invoker.
- Navigate to the flow portal to edit and update the flow settings.
- On the flow details page, in the Run only users section, select Edit.
- To update the flow connection source to Invoker, select Provided by run-only user and save.
- To update the flow connection source to Embedded, select Use this connection and save.
- Verify by triggering the flow. You see that the "install flow network" calls now are succeeding.
Other symptoms
After updating a flow, calls to that flow from Power Apps start failing.
If a new input is added to a flow without a Power App being updated, the flow will fail with an error message that resembles the following:
Unable to process template language expressions in action 'Send_me_a_mobile_notification' inputs at line '1' and column '1900': 'The template language expression 'triggerBody()['Sendmeamobilenotification_Text']' cannot be evaluated because property 'Sendmeamobilenotification_Text' cannot be selected. Please see
https://aka.ms/logicexpressions
for usage details.'.If the connections required to run a flow change, an error complaining about connections should appear:
In Power Apps, it might look like:
Or in Flow, it might look like:
Unable to process template language expressions in action 'Send_an_email' inputs at line '1' and column '1899': 'The template language expression 'json(decodeBase64(triggerOutputs().headers['X-MS-APIM-Tokens']))['$connections']['shared_office365']['connectionId']' cannot be evaluated because property 'shared_office365' doesn't exist, available properties are 'shared_flowpush'. Please see
https://aka.ms/logicexpressions
for usage details.'.If a response output is removed, Power Apps will treat the value as blank and the Power App will behave unexpectedly.
Cause
To invoke a flow from Power Apps, Power Apps needs to know what inputs the flow needs, what connections to supply to the flow, and what outputs the flow will return. Power Apps stores this information in the definition of your Power App, which creates a binding between a version of a Power App and the flows used in it. Changing any of these three aspects of a flow can break all previous versions of Power Apps that integrate with that flow. To fix an affected Power App or to use one of these flow changes, the Power App needs to be updated.
Types of changes most likely to break a Power Apps ability to call a flow include:
Adding a new Ask in Power Apps token.
Adding a new connection. For example, by adding a new action from a Connector that wasn't previously used like the SharePoint Connector.
Changing an existing connection. For example, changing an existing connection to a new connection.
Removing an output from a Respond to Power Apps action.
Other changes to the inputs or outputs won't break the integration between Power Apps and Flow but will require the Power App to be updated so that it can use them.
Resolution
Changing a live Power App
Once a Power App is published, it's always recommended to make copies of flows used by the Power Apps to make any updates. Any update to a flow referenced by a live Power App has the potential to break existing users. Don't delete or turn off the existing flows until all users have been upgraded to the new published version of the Power App.
In the new version of the Power App, reference the new flows. When the new version of the Power App is published, users will start to use the new flows with the correct inputs, outputs, and connections. Which will prevent flow updates for new versions of Power Apps from affecting users of the existing version.
Changing a Power App development version
While developing a Power App, making changes to a flow not used by a live version of the Power App is easy. After making changes to the inputs, outputs, or connections of a non-published flow, reselect the flow from the Flows pane.
It will update the definition of the flow in the Power App validating that the correct input, outputs, and connections are used in the Power App.
Users of the Power App won't begin using the new flows until the Power App is published. So updating the existing flow is ok until it's used by a live version of the Power App.