After updating a Flow, calls to that Flow from PowerApps start failing.
If a new input is added to a Flow without a PowerApp being updated the Flow will fail with an error message like
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 like
In PowerApps it may look like
Or in Flow
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, PowerApps will treat the value as blank and the PowerApp will behave unexpectedly.
To invoke a Flow from PowerApps, PowerApps needs to know what inputs the Flow needs, what connections to supply to Flow and what outputs a Flow will return. PowerApps store this information in the definition of your PowerApp. This creates a binding between a version of a PowerApp and the Flows used in it. Changing any of these three aspects of a Flow can break all previous versions of PowerApps that integrate with that Flow. To fix an affected PowerApp or to make use of one of these Flow changes the PowerApp needs to be updated.
Types of changes most likely to break a PowerApps ability to call a flow include
- Adding a new Ask in PowerApps token
- Adding a new connection for example by adding a new action from a Connector that was not 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 PowerApps actions
Other changes to the inputs or outputs will not break the integration between PowerApps and Flow but will require the PowerApp to be updated so that it can use them.
Changing a live PowerApp
Once a PowerApp is published it is always recommended to make copies of Flows used by the PowerApps to make any updates. Any update to a Flow referenced by a live PowerApp has the potential to break existing users. Do not delete or turn off the existing Flows until all users have been upgraded to the new published version of the PowerApp.
In the new version of the PowerApp reference the new Flows. When the new version of the PowerApp is published, users will start to use the new Flows with the correct inputs, outputs, and connections. This will prevent Flow updates for new versions of PowerApps from affectingusers of the existing version.
Changing a PowerApp development version
While developing a PowerApp making changes to a Flow not used by a live version of the PowerApp is easy. After making changes to the inputs, outputs, or connections of a non-published Flow simply reselect the Flow from the Flows Pane.
This will update the definition of the Flow in the PowerApp validating that the correct input, outputs and connections are used in the PowerApp.
Users of the PowerApp will not begin using the new Flows until the PowerApp is published soupdating the existing Flow is ok until it is used by a live version of the PowerApp.