web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

News and Announcements icon
Community site session details

Community site session details

Session Id :
Power Platform Community / Forums / Power Automate / Approval architecture ...
Power Automate
Suggested Answer

Approval architecture issue (monthly flow + polling flow)

(0) ShareShare
ReportReport
Posted on by
Hi,


I have two Power Automate flows and I’m struggling with how to correctly track approval status across flows.


Flow 1 – Monthly flow

•Trigger: Scheduled (monthly)

•Creates Standard approval (First response)

•Does not wait for approval

•Stores ApprovalId = outputs('Create_approval')?['body/name'] in SharePoint

•Sets status to “Waiting internal action”


This flow must always finish, even if the approval is never answered.


Flow 2 – Polling flow

•Trigger: Scheduled (every 15 minutes)

•Gets SharePoint items where:

•Status = “Waiting internal action”

•ApprovalId is not empty

•For each item:

•Check approval outcome

•Approved → update SharePoint

•Rejected → notify via Teams

•No response after X days → send reminder


Problem

•Wait for an approval is not usable (blocking / validation errors)

•Get approval details causes 400 Bad Request and the flow cannot be saved

•Error happens at design time, not runtime

ApprovalId is valid, stored as text, and not empty.

Question

1.Is this two-flow pattern supported?

2.What is the correct way to read approval outcome from another flow?

3.Is there a known limitation with approvals + dynamic IDs?

4.What is the recommended non-blocking approval architecture?


Thanks!
Categories:
I have the same question (0)
  • Suggested answer
    David_MA Profile Picture
    13,935 Super User 2026 Season 1 on at
    You don't need a flow that polls every 15 minutes. Instead, you can set it up like this:
    1. Store the approval ID with the item like you are doing. That is needed.
    2. When the approval is created, update the source field in the approval just created with a unique value to your workflows. I set it to the workflow ID that creates the approval. This establishes the relationship between the list item and the workflow that will process the approval once it has been completed.
    3. Then create a workflow that triggers when a row is added, modified or deleted in Dataverse. Configure it with these settings:
      1. Changed type: Modified
      2. Table name: Approvals
      3. Scop: Organization
      4. Select Columns: statuscode
      5. Filter rows: msdyn_flow_approval_source eq 'unique GUID of flow that created approval' and statuscode eq 192350004, which means the approval has been completed.
      6. Then add a List rows action to the flow to retrieve the outcome of the approval. Configure it with these settings:
        1. Table name: Approval Responses
        2. Filter rows: msdyn_flow_approvalresponseidx_approvalid eq '@{triggerOutputs()?['body/msdyn_flow_approvalid']}'
      7. You can then get your related item in SharePoint with a Get items action based on the stored approval ID:
      8. You will probably want to check to make sure 1 item is returned. Since this will essentially allow an unlimited amount of time to elapse between when the approval was sent and when the outcome is received, someone could have deleted the original SharePoint request. Checking to make sure that it returns one item allows you to do some error handling.

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Introducing the 2026 Season 1 community Super Users

Congratulations to our 2026 Super Users!

Kudos to our 2025 Community Spotlight Honorees

Congratulations to our 2025 community superstars!

Leaderboard > Power Automate

#1
Haque Profile Picture

Haque 304

#2
David_MA Profile Picture

David_MA 245 Super User 2026 Season 1

#3
Expiscornovus Profile Picture

Expiscornovus 243 Most Valuable Professional

Last 30 days Overall leaderboard