Create long-running approval requests in Power Automate (override 28-days timeout)

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

Power Automate Workflow

Step 1. Add a column to flag Request status

For our use case, we will have 3 different status: Started (default value), Complete (when approver completes request), Restarted (to indicate the request was resent)
Power

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. 

automate

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”

Automate Power

We need Status = “New”.

				
					@equals(triggerOutputs()?['body/Status/Value'],"New")
				
			

Write this text under “trigger conditions” and hit on “Done”

Power

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.

Long-Running Approval Power Automate

Step 4. Modify “wait for an approval” time out attribute.

Use the action’s ellipsis and then click on the “Settings action”

Settings Action

We will update the “timeout” field.

Process Automation Services

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.”

P15D Approval Request

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 t