How to overcome the Power Automate Approvals 30 days limit post is my attempt to show how to deal with this Flow annoying 30 days limit.
- General idea of approach
- First Flow – create new Audit item
- Second Flow – track Approval
- Trigger conditions
- Wait for an approval configuration
- Timeout configuration
- Approvals reminders consideration
- Flow result consideration
General idea of approach
Firstly I will allow myself to explain one bit:
- When Power Automate creates a new Approval, a new Approval ID is generated.
- When Approver is taking action then Approval ID is used by Power Automate to update necessary information in the back-end tables.
I will “grab” Approval ID and save it, with that I can wait for the Approver to act as long as I want. In other words I will have the ability to control what is happening between first and second step.
I can do it like that because Power Automate have dedicated actions to Create an Approval (triggers creation of Approval ID) and Wait for an approval (use Approval ID for updates).
There is also a third Approval action (most commonly used) which combine create and wait called: Start and wait for an approval but with it, I cannot go over 30 days limit…
In my solution I split the work and Create an Approval will be used in first flow then fresh and new Approval ID will be saved to Approval Audit list.
I’m using SharePoint list as back-end but all other data storage can be utilized.
Next from Approval Audit list will start second flow to Wait for an approval and apply remaining logic.
First Flow – create new Audit item
My first Flow for Long Approvals in Power Automate looks as follows:
As this only demonstration I will use manual trigger but I’m sure your process will start from a different place.
I will trigger the process manually and provide Title of my Audit item. Then create a new Audit Approval item. As the second process will start on MODIFICATION of item.
Next I’m using Create an approval action not Start and wait for an approval, just CREATE. With that I know process will move forward and not wait for the result of Approval action.
Next is update action of the Approval Audit item and I’m adding there ApprovalID so in the second flow I will be able to connect to the context of this Approval action.
In the update I’m also changing Process State to value: Starting.
Second Flow – track Approval
Second Flow in my configuration is starting with trigger When an item or a file is modified. To control when the Flow is running I’m also configuring trigger conditions.
Thanks to trigger conditions I’m limiting the number of the Flow runs and avoiding unnecessary executions which potentially could break the process.
In my trigger condition I’m checking Process State and looking for: “Starting” and “Timeout” values.
Update 12.12.2020 thanks @TomaszPoszytek for spotting missing @
@or( equals(triggerOutputs()?['body/ProcessState'],'Starting') ,equals(triggerOutputs()?['body/ProcessState'],'Timeout') )
If you are not sure how to create such formula you can use Compose action and in the Expression create your condition:
Finishing touch is adding @ character in the Trigger Conditions.
To access Trigger Conditions setting click the Trigger 3 dots menu and select Settings and you should find it at the bottom of the list.
Wait for an approval configuration
When I made trigger ready I’m adding update of Process State column to Pending. Then adding Wait for an approval action and adding to it ApprovalID value.
The most important setting in Wait for an approval is the Timeout and I’m setting it to 29 days and 23 hours (limit for flow is 30 days so prefer to leave an extra hour before expiry).
For testing, it is worth to use a value of 1 minute which is PT1M.
With this setting set like this I’m sure that one hour before expiry the Wait for an approval will timeout and I can configure what will happen utilizing run after options.
As I configured timeout setting, next I can create two branches one for scenario were Approver took actions and the second one for the Timeout scenario.
Won’t cover here the scenario where Approver made the job. Will focus on the one where they did not.
After adding branch and action first thing which I’m doing is configuration of run after setting. I’m selection only has timed out option.
In the action itself I’m changing Process State to “Timeout” value.
With that I’m closing the whole second Flow into a loop. Each time when Approver will not do the work, the process will “reset” itself and Wait for and approval.
It is possible to configure the whole process like this as the Approval action in the back-end have a very long expiry date:
As you can see How to overcome the Power Automate Approvals 30 days limit, the whole idea is around literally two actions Create an Approval, Wait for an approval and proper run after configuration. However, this is couple considerations which I would like also to cover.
Approvals reminders consideration
Why this is important? I think very much!
Just imagine finding Approval request after +30 days in your mailbox…
I will cover this consideration in details in: How to create reminders for Power Automate Approvals (shortly will publish this) as felt that reminders can be created in couple ways and not only for this scenario.
Yet, to not create gap and make anyone wait: the idea behind reminders is to save from initial Flow Respond link from Create an approval action and use it in second Flow to send reminder email.
Flow result consideration
If I leave the configuration as it is the process would work and the loop effect will be achieved. Yet, there is one bit more which bothers me:
Thou my logic is correct Flow execution result will be marked as FAILED…
To manage this I’m connecting both branches with Terminate action and selecting in it Succeeded value. Very important is to configure run after settings correctly:
To achieve such result just click first action, select checkboxes and then select second action. It is not indicated visually in the designer but it works.
You can also remove some actions from run after configuration.
You can check who this is working in gif connected to my Tweet about that.
The key point is now my Flows are finishing successfully:
This is a new section added on 18th December 2020.
While working with this approach I notice that it is perfect if the decisions of Managers is ALWAYS taking long time. But If in your scenario there is chance that Manager will react to the Approval very fast (couple minutes) then there is risk that process will FAIL:
That is occurring when Approver will react to Approval action quicker than second Flow will start (literally matter of minute, max couple).
I notice that in my Flows so if you think that your Approvers are so quick you can slightly change the solution architecture.
To mitigate this issue I decided to do the following updates in first Flow:
If you take a closer look this is 90% of second Flow configuration. I added the decision and Timeout branch. For me this is an extra layer of reaction, even if Approver will be fast as the light, process will work correctly. And if the process will Timeout at least once the risk that second Flow will not start on time is very very low.
The key is to do update of Process State property in the Timeout branch, update action not quicker:
Process State modification while first Timeout branch is executed is giving me confidence that Second Flow will start at the correct moment.
Please let me know if you notice that this change is not enough to resolve this approach loophole.
I’m also thinking about an alternative method to mitigate the loophole but that will require introduction of Solutions topic but for people which are already using Solutions instead of doing copy of actions the Call Child flow action might be the answer (but I need to test that back to back).
This is it How to overcome the Power Automate Approvals 30 days limit I hope you enjoyed it and what the most it will be useful for you.
This approach will also work for many Approvers thou in the text above I was not directly mentioning that.
What I really like in this approach is that it does not require premium license and all can be done quick quickly without a lot of extra effort. Speaking about extra effort with some changes it could also scale to not stick to single list but that is something for next post.
Thank you for reading and as always appreciate all comments and feedback.
About the Author:
As the community movement in the Microsoft is getting bigger and bigger and Sharing is carrying for me start to be mindset, decided to go out of my personal comfort zone and start to share solutions or ideas about some challenges which came across various projects. Hoping that it will save some struggle for the people and they will have extra time to create something nice which can be also shared.
Ziolkowski, D. (2020). How to overcome the Power Automate Approvals 30 days limit. Available at: https://365corner.pl/2020/12/02/how-to-overcome-the-power-automate-approvals-30-days-limit/ [Accessed: 3rd March 2021].
Find more great Power Platform content here.