Adaptive Card Approvals in Outlook – Part 3

Handling Reassigned Approvals with Adaptive Cards

Welcome to Part 3 in our series on Adaptive Cards in Outlook! In Part 1, we covered how to craft and send an Adaptive Card to kick off your approval process. Part 2 showed how to use Adaptive Cards instead of the standard Approval responses. Today, we're going to take it one step further—what happens when a user reassigns their approval to someone else?

Let’s dive in.


Step 1: Detecting a Reassigned Approval Request

To respond to reassigned approvals, we first need to monitor the Approval Request table—one of the key system tables used by Power Automate to track approvals.

If you remember from Part 2, each new approval creates a corresponding record in the Approval Request table. When an approval is reassigned, a new record is also created—but with a key difference.

Approval Request Table
Approval Reassigned Trigger

Here's how to identify reassigned approvals:

  1. Create a Trigger Flow
    Use the When a row is added, modified, or deleted (Dataverse) trigger and point it to the Approval Request table.

    • Select Columns: msdyn_flow_approvalrequestidx_reassignedfromid

    • Filter Rows: msdyn_flow_approvalrequestidx_reassignedfromid ne '<none>'

      This ensures the flow only triggers for reassigned approvals. The default value is <none> when first created—so we’re only interested in rows with a reassignment reference.

  2. Initialize Variables

    • Environment ID – Store your environment's GUID.

    • Tenant ID – Store your tenant ID (used to build direct approval links).

  3. Get Row by ID
    Pull in all the data from the specific Approval Request record.

  4. Extract the Approval ID
    Initialize a variable using the following formula to get the Approval ID in lowercase:

toLower(outputs('Get_a_row_by_ID_Approval_Request')?['body/msdyn_flow_approvalrequestidx_approvalid'])
Reassigned Process Upper Section

Step 2: Match the Reassignment to Your SharePoint Record

Now that we know which approval was reassigned, we need to determine if it matches one of your internal SharePoint records.

  1. Get Items from SharePoint
    Use the Get items action to search your list for a record with the matching Approval ID.

  2. Check for Results
    Add a Condition to ensure the length of the result is greater than 0: length(outputs('Get_items')?['body/value'])

  3. Get the Reassigned User
    Pull the owner of the Approval Request—this is your new approver.

  4. Get SharePoint Item Details
    Use this formula to grab the SharePoint item ID from your previous Get Items action:

outputs('Get_items_Sharepoint_Item_with_Matching_Approval_ID')?['body']?['value'][0]?['ID']
Reassigned Process Part 2

Step 3: Send the Adaptive Card to the New Approver

Now that we have everything we need, it’s time to build and send the Adaptive Card.

  1. Compose the Approval Link
    Since this reassigned request didn’t go through the usual "Create an Approval" process, we need to manually craft the link to the approval page:

    https://make.powerautomate.com/environments/{Environment}/approvals/received/{ApprovalID}?loginTenant={TenantID}

  2. Build the Adaptive Card
    Refer back to Part 1 to construct your Adaptive Card. You’ll want to include:

    • The approval details

    • A button linking to the approval (using the URL above)

  3. Send the Email
    Use the Send an email (V2) or Post an Adaptive Card in Outlook action to send the card directly to the reassigned approver.

Reassigned Part 3

Wrapping Up

Thanks for joining me on this deep dive into Adaptive Cards and Microsoft Approvals. We've now looked at how to:

  • Start approvals with Adaptive Cards

  • Replace standard responses with custom actions

  • Handle reassigned approvals and keep your flow on track

If you have questions or suggestions for future posts, drop them in the comments below or message me directly—I’d love to hear what you’re building!

Next
Next

Adaptive Card Approvals in Outlook - Part 2