Welcome back with another post on Power Automate. Sometimes, it happens in real world that we trigger an approval process and sometimes it gets halted due to non-availability of any approver or due to some other reasons. In such scenarios, the workflows instance keeps running. In such cases, what the requirement is that these instances should get terminated after a certain interval. By default, there is a timeout of 30 days for trial licenses. But for paid licenses, it keeps running. Therefore, we need to apply some workaround during the workflow creation to set a timeout of the instance and if the workflow instance reaches to that timeout before getting completed, it should get terminated. So, let's start -
- Suppose we have a SharePoint list named "ZTimeOut".
- We have to apply the timeout feature upon the item approval process. For this, we have to create a Power Automate flow upon this list.
- So, login to Power Automate portal and click on "+ Create". Choose ""Automated cloud flow".
- Give flow a suitable name and choose the trigger option as "When an item is created". click on "Create".
- It will create a new workflow. Select the Site Address and the List Name.
- Now, in order to apply the timeout, we will use the "Delay until" action. It needs a timestamp till when it has to wait.
- So, for that, we will define a variable "strTimeOut" of type string and set it's value as UTCNOW + 5 minutes. You may pick the time out duration (i.e. 5 minutes) dynamically as well from a master list and it could be Seconds / Minutes / Days / Months. You need to define one dimension either Seconds or Minutes or Days or Months. Then convert it accordingly in workflow.
- Now, initialize the variable "strTimeOut" and set the Value as below-
- Now save the workflow so that the workflow should get saved on cloud environment.
- Now, we will define another variable "blnIsProcessCompleted" with default value as false; which will be used to set as true once our approval process gets completed. In case, our approval process doesn't get completed before timeout, then based upon it's value, our code will terminate the workflow instance.
- Now, add "Start and wait for approval" action.
- At this stage we will add another action "Delay until" in parallel which will act as Timout feature for our flow.
- For this, click on + icon and choose "Add a parallel branch".
- Now search for "Delay until" action
- Give the variable "strTimeOut" as Timestamp input.
- Basically, we had created 2 branches. One branch will perform our approval process activity as usual. While other parallel branch "Dealy until" will wait for the stipullated time provided by variable.
- This action will wait for the datetime provided by strTimeOut in parallel.
- Now add a Condition action to check if the variable blnIsProcessCompleted is true or false.
- If false that means the workflow is still running so we will terminate the workflow. Before terminating, if you wish to inform user then you may add "Send an email (V2)" action. If you wish to update the item then you may use "Update an item" or "Send an HTTP request to SharePoint" action. Lastly, we will use Terminate action to terminate the workflow.
- This completes our TimeOut portion. Now come back to Approval Process. We had added one level of approval. Based upon outcome, you may write your own logic. I am adding one more level to show how the timeout works.
- Add one more "Start and wait for approval" action in the approval branch.
- Again, you may write your own logic based upon the outcome of this approval. Once all approval gets completed, you need to set "blnIsProcessCompleted" to true and then add the Terminate action.
- Save the workflow and now it's time to test it. For this, add one item in list.
- I had added one item and the workflow gets trigger. It sent me the first level approval notification.
- I had approved it.
- It triggered the level 2 approval notification
- I had approved it also.
- Now, if we check the workflow, it shows that it has been executed successfully and the approval process get completed with last Termination action execution as well.
- However, if we see that the "Delay until" is still showing in running mode. Let's wait for 5 minutes (out TimeOut). It's almost 7 minutes passed. Let's check the status.
- As we can see, the Delay until got cancelled and further steps also didn't executed. Means, it is working fine if the approval process goes smoothly. Now, what if any level doesn't take any action. Let see. I will initiate the process again. Approver 1 will approve the request. Approver 2 will not take any action until timeout.
- As we can see from below screenshot, Approver 1 has completed its request. Approver 2 haven't taken any action upon the request. So, we are waiting to get the request timeout.
- As we can see that the workflow reached to the timeout and it has been terminated by the parallel branch.
- The auto cancel mail is also received.
- The complete flow is-
- Important- You have noticed that in case of timeout, the approval instance for Level 2 still showing as waiting for response. This is because, as of now, there is no feature available by Microsoft to cancel the approval instance. However, it will not make any impact because, if the workflow instance has itself terminated and if the level 2 approver takes any action upon the request, it will not be entertained by the workflow as the instance has already been terminated.
- This way, we can implement the TimeOut feature in Power Automate.
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.