Saturday, September 3, 2022

Power Automate: Flows Timeout Issue Through PowerApps

Hello Friends,

Welcome back with another post on Power Automate. Today, we will discuss about the TimeOut issue when calling a flow from PowerApps. Sometimes, you have observed that the flow you had written for some processing, takes longer time to get it complete. When, such workflows are called from PowerApps, we get a timeout issue on PowerApps after 2 minutes. However, if you had observed, that the flow is still running. The reason is the service which acts as a communication bridge between PowerApps & Power Automate for Request/Response drops the connection after 2 minutes. So, how to handle this situation?

As of now, there is no solution provided by Microsoft to handle this situation. However, we can do a workaround for that. Let's start.

  1. Create a "Instant cloud flow" in Power Automate. Give name as "POC-FlowTimeOutIssue" and the trigger type as "PowerApps".
  2. Click on Create to create the flow. Add to input parameters (Initialize variable) named-
    1. DisplayName
    2. Email
  3. The data type of these parameters will be string and the Value will be "Ask in PowerApps".
  4. Now add a delay action and set the delay for 3 minutes.
  5. Now add an action "Respond to a PowerApps or flow".
  6. Add the output as below-
  7. Save the flow and test it. It will ask you to provide the values for input parameters. Provide the Display Name & Email ID and click on Run flow. Follow the steps to the flow executed.
  8. You will find that the flow execution got failed. It will throw one error "The execution of template action 'Respond_to_a_PowerApp_or_flow' is failed: the client application timed out waiting for a response from service. This means that workflow took longer to respond than the alloted timeout value. The connection maintained between the client application and service will be closed and client application will get an HTTP status code 504 Gateway Timeout.". But no worries because it was a Test, not executed from PowerApps.
  9. Now, create a PowerApps and add a button.
  10. Now from left navigation menu, click on Power Automate Icon >> + Add flow >> Search flow >> POC-FlowTimeOutIssue
  11. Now, write below code on "OnSelect" property of the button.
  12. Save the app and play it. click on the button to execute the flow.
  13. You will see the 5 dots scrolling at the top as well as the button got disabled. After 2 minutes, you will find that the suddenly got enabled and the scrolling of dots stopped. This is because, the flow got timed out. We haven't got any visible error on screen because, we are saving the output in a variable. Let's stop playing it. and check the app. We will find an error in app.
  14. If we see the flow running status, we found it again failed. The Error Details are-
  15. It is saying the connection between client application and service got closed.
  16. Now, what is the solution?
  17. Here, we have 2 solutions-
    1. If there is only data processing and no intimation to user.
    2. If there is processing the data and intimate to user.
  18. For both solutions, you have to follow below process-
  19. In PowerApps, add one condition on "OnSelect" function of button just after the existing code.
    1. If(IsBlankOrError(vrOutPut),Notify("Your request has been timed out, however, it is already processing at the backend.",NotificationType.Error),vrOutPut);
      
  20. In case, if user needs to be intimated, then add below code
    1. If(IsBlankOrError(vrOutPut),Notify("Your request has been timed out, however, it is already processing at the backend. You will receive an email.",NotificationType.Error),vrOutPut);
      
  21. Now come back to flow. In case of intimation to user, add "Send an email (V2)" action at the end of flow.
  22. Now, click on the 3 dots of this action and choose "Configure run after".
  23. Select the options as shown below and click on Done
  24. Save the flow, click on test and enjoy.
  25. With this, what will happen is that whatever output you want to give to user, it will be sent through mail.
  26. For example, user has clicked on button to export data to excel. Now, if the data is large, it will surely get timeout. then with this method, you can provide the Excel link back to user of the file itself as an attachment to user over email.
  27. The best part is we had configured it to not run if the Response action got executed successfully. It means it will trigger if the Response action got failed / timed out / skipped.
With this, I am concluding this post.
Happy Coding !!!
Will see you again with some new topics.

Stay Safe !
Stay Healthy !

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.