Sending approval requests is one of the most common use cases for which Power Automate is used for. After all, the out-of-the-box connector for approvals has a limitation: if the approval request is not approved or rejected within 28 days, the action will time out and this will cause your flow to fail.
In this post, we will show you a workaround to create long-running approval requests so wave good-bye to the 28 days limitation!
Use Case
This SharePoint list records new projects, requiring management approval. Some projects need over 28 days for approval due to larger investments. If approvers do not take action on the approval request, we will resend it every 15 days.
Projects sent for approval have a “New” status.
Power Automate Workflow
Step 1. Add a column to flag Request status
Step 2. Set up your trigger
Since we need to track both new projects and restarted requests, our trigger will be “when someone creates or modifies an item.” Just select the SharePoint site and the list this trigger will be linked to.
We will need this workflow to be triggered when:
– New Projects are added to our list (ie, when item is created, when our projects are created they are created with “New” status)
– Approval request is restarted (it, when item is modified to Request status = “Restarted”, but Status of the project remains as “New“)
Now, let’s add some settings to the trigger to ensure the workflow will only run when any of the above conditions are met. We will use “trigger conditions” for this.
When we write trigger conditions on choice columns, it’s always written like this: triggerOutputs()?[‘body/{column-name}/Value
Go to the ellipsis in the trigger card and hit on “settings”
We need Status = “New”.
@equals(triggerOutputs()?['body/Status/Value'],"New")
Write this text under “trigger conditions” and hit on “Done”
Note we are applying this condition on the “Status” column – which we use for project status, not the “Request status” column
Step 3. Add Approval Actions
First, let’s add “Create an approval” action, add all the approval details and then add the “Wait for an approval” action. In this second action, just select “approval ID” variable coming from the “create an approval action”.
What this will do is to create an approval request and send it to the approver(s). After it’s sent, it will wait for approval to happen. Accordingly, while we wait, here is where we have the so-called 28 days limit. Above all, this is where the workaround starts.
Step 4. Modify “wait for an approval” time out attribute.
Use the action’s ellipsis and then click on the “Settings action”
We will update the “timeout” field.
The value you write here will depend on your process needs, but let’s suppose we want to resend the approval request to our approvers every 15 days. Accordingly, we will write P15D (just make sure this value is less than 28 days). Afterward, just click on “Done.”
Step 5. Create a branch
Right after the “wait for an approval” action, add two parallel actions, as shown below. Accordingly, on the left side, we will have a condition, and on the right side, we will have the “Update item” SharePoint action
Step 6. Define what your workflow will do if action is approved or rejected
For our use case, we will just update the project status in the SharePoint list, we will also update request status to “complete”. This will be in the left side brach.
Step 8. Define what your workflow will do if action is not taken on the approval request
The “Update item” action should look like below, make sure the column you added at the beginning to flag restarted request is set as “Restarted“
On the right side of the branches, use the ellipsis to update the “configure run after” value.
Make sure you update the checkboxes to look as below:
After you click on Done, this is how branches should look:
What this will do is:
- If the approval request is completed within 15 days, it will follow the left path (where we set the project as approved).
- If the approval request is not completed within 15 days, the “wait for approval” action will time out and go to the right side of the workflow. This will make the request to be restarted and resent to the approver
Step 9. Cancel approval request before the next one is sent.
This step is kind of optional because a new request will be sent regardless if you cancel the previous ones or not. After all, leaving open requests can cause issues or confusion for the approver if they find older emails regarding requests which have already timed out. Accordingly, it’s recommended to add this action in Power Automate to cancel any request that is older than 15 days.
All approvals data is stored in Dataverse, so we will need a Dataverse action for this – so note that if you add this step, your Power Automate flow will become premium (hence, a license will be required – you can read our guide on licensing here).
Look for the “Update a row” action and set it up as follows:
- Select “Approvals” as table name
- Row ID = Select “approval ID” from the “create an approval” action.
- Stage = Complete
- Status Reason = Canceled
- Status = Inactive.
Dataverse action should look like this:
It should be added right after the “update item” action, on the right branch of our workflow.
Step 10. Test your Workflow and See Magic Happen!
This is how the final flow should look:
If you want to test faster, you can accordingly change the “wait for an approval” timeout setup to something like PT5M – for it to timeout after 5 minutes. This way, you will be able to test faster and make sure your requests are being completed, re-sent, and canceled properly.
This is how canceled requests will look:
All set! Now you can have your approval workflows run for over 28 days!