Power Automate Multi-Stage Approval Bug: Fix Incorrect “Fully Approved” Email

👨‍💻 Introduction

While helping a colleague troubleshoot a Power Automate approval flow, I ran into a very common issue with multi-stage approval workflows.

If you are designing approval processes in Power Platform, this is something you will likely encounter at some point.

This post explains the problem and shows the correct pattern to fix it.

🐞 Problem Statement

In a two-stage approval workflow:

  • Stage 1 approver approves ✅
  • Stage 2 approver rejects ❌

But the system still sends:

"The document has been fully approved"

This creates confusion and breaks trust in the approval process.

🔍 How This Issue Happens

This issue usually occurs when:

  • Only Stage 1 outcome is validated
  • The flow does not check Stage 2 approval result
  • The final email is configured outside the correct condition scope

In some cases, the flow may also throw an error when referencing approval outputs incorrectly due to scope issues.

📝 Note on Approval Design

This solution applies to sequential approvals, where:

  • Stage 1 must complete before Stage 2 starts

If you are using parallel approvals, where multiple approvers act at the same time, you will need a different design approach.

✅ Solution Overview

To fix this issue, you must:

✔ Validate each approval stage separately
✔ Place conditions in the correct execution scope
✔ Send the final email only after all approvals are validated

🛠️ Step-by-Step Fix

✅ Step 1: Rename Your Actions

Clear naming reduces confusion and avoids mistakes.

Rename your approval steps like this:

  • Start and wait for an approvalApproval_Stage_1
  • Start and wait for an approval 1Approval_Stage_2

✅ Step 2: Add Condition for Stage 1

Use the following expression in your condition:

equals(outputs('Approval_Stage_1')?['body/outcome'], 'Approve')

Make sure:

  • There is only one condition row
  • No empty or unused conditions remain

✅ Step 3: Add Condition After Stage 2

This is the most important fix.

Add a second condition immediately after Stage 2 approval

equals(outputs('Approval_Stage_2')?['body/outcome'], 'Approve')

✅ Correct Flow Design

Two level sequential workflow
Two level sequential workflow

📷 Prefer a Visual Walkthrough?

If you would like to follow along with detailed screenshots of each step in the flow, I have created a separate step-by-step guide:

👉 Step-by-Step Power Automate Multi-Stage Approval Setup (Screenshots Guide)

This includes the full configuration for each action, condition, and approval stage.

--

Follow this structure for a proper multi-stage approval flow:

Trigger
 ↓
Get Response Details
 ↓
Approval_Stage_1
 ↓
Condition: Stage 1 Approved?
   ↓ YES
      Approval_Stage_2
         ↓
         Condition: Stage 2 Approved?
            ↓ YES → Send "Fully Approved" email
            ↓ NO → Send "Rejected" email
   ↓ NO → Send "Rejected" email

⚠️ Common Mistakes to Avoid

  • Sending emails outside the approval condition blocks
  • Referencing approval outputs outside their scope
  • Using default action names without renaming
  • Leaving extra condition rows in the logic
  • Assuming that approval stages automatically validate each other

✅ Important Note on Outcome Values

Depending on the template used, the Outcome field may return:

  • "Approve"
  • "Approved"

This can cause condition checks to fail unexpectedly.

✅ Bonus: Make Your Flow More Robust

To avoid issues with variations in the outcome value, use this safer expression:

equals(toLower(outputs('Approval_Stage_2')?['body/outcome']), 'approve')

Or a more flexible version:

contains(toLower(outputs('Approval_Stage_2')?['body/outcome']), 'approve')

🎯 Final Outcome

ScenarioResult
Stage 1 RejectRejection email
Stage 1 Approve and Stage 2 RejectRejection email
Both stages approveFully approved email

🚀 Conclusion

This is a very common issue when building approval workflows in Power Automate.

The key lessons are simple:

  • Always validate each approval stage independently
  • Keep conditions inside the correct scope
  • Ensure final actions depend on all required approvals

Designing flows this way makes your solutions more reliable and easier to maintain.

👏 Acknowledgment

This solution was created while helping resolve a real-world Power Automate workflow issue. Sharing it here so others can avoid the same problem and build better approval processes.

No comments

Powered by Blogger.