← Al Davies, 250 High Street

Get a person's manager in Power Automate

Short answer: add the Office 365 Users action Get manager (V2), put the requester's email or UPN in User (UPN), then use the output field Mail as the manager's email address. If the person has no manager in Microsoft Entra ID, Microsoft says the action returns "No manager found for the specified user", so add a fallback approver.

What the action does

Get manager (V2) is part of the Office 365 Users connector. Microsoft describes it this way: "Retrieves the profile of the specified user's manager." The same Microsoft page lists the connector as Standard in Power Automate. Your admin can tell you what your own plan includes.

The action has two inputs:

The profile it returns has a list of possible fields. The Microsoft page includes mail, jobTitle, department and displayName in that list. The Mail value is the one you need for an approval.

Where the manager comes from

The action reads the manager that is stored on the person's profile in Microsoft Entra ID. Microsoft says the missing manager message "happens when the user does not have a manager configured in Microsoft Entra ID." So the flow can only be as good as the profile data. If the manager field is wrong, your approval goes to the wrong person.

Before you build, ask your admin to check that the manager field is filled in for the people who will use the flow. Microsoft's page on managing user profile information in Microsoft Entra ID lists the manager as job-related information that can be added to a profile.

Step 1. Set up the request list

One way to start is a SharePoint list called Requests with these columns:

Use names like "Member 104" or "Client 12" when you test, not real people.

Step 2. Build the flow

Go to https://make.powerautomate.com and create an automated cloud flow. Exact names may differ on your screen.

  1. Trigger: use the SharePoint trigger for a new item in the Requests list.
  2. Add the Office 365 Users action Get manager (V2).
  3. In User (UPN), choose the email of the person who created the item from the trigger's dynamic content.

Microsoft describes User (UPN) as "User principal name or id." In most tenants the work email and the UPN match. Our advice, not a Microsoft rule: if a run fails to find the person, pass their UPN or ID instead, and test once with a guest account if guests submit requests.

  1. In Select fields, type: mail, displayName (this also avoids the 403 error described under What to avoid)
  2. Add the action Start and wait for an approval.
  3. In Assigned to, choose the Mail value from Get manager (V2).

On step 6, Microsoft's approvals page says: "In the Assigned to field, enter the email address of the person who will approve the request." It also says: "This action sends the approval request to the email address in the Assigned to field."

Keep the trigger on new items only. If you use a trigger for items that are created or modified, and the flow updates the same item, it can run itself again and again. See "Power Automate flow keeps running itself over and over".

Step 3. Plan for no manager

Some people will not have a manager on their profile. Decide ahead of time what happens to their requests. Here is one way to handle it.

Microsoft's page on error handling in Power Automate describes Run after settings this way: "Use Run after settings to specify what should happen if an action fails, times out, is skipped, or is successful." It also says: "For each action, you can set conditions to determine the next steps based on the outcome of the previous action."

One way to use that:

  1. After Get manager (V2), add an action that sets the approver to a named fallback person, such as an operations lead.
  2. Open the settings for that action and set Run after so it runs when Get manager (V2) has failed.
  3. Add a check on the approver's email after both paths, then continue to Start and wait for an approval.

Whether the missing manager shows as a failed step in your flow is something to confirm in a test run. Microsoft's page says only that the action "returns" the message. Test with one person who has no manager, and look at the run history.

Our advice, not a Microsoft rule: also check that the Mail value is not empty before the approval step. The Logic Apps expression reference describes the empty function this way: "Check whether a collection is empty." In the dynamic expression, use empty() on the Mail value. If it is empty, send the request to the fallback person.

Copy-ready expression

Our advice, not a Microsoft rule: in the expression editor, the manager's email is the mail field of the Get manager (V2) output. The expression looks like this, where the name inside body() must match your action's name:
body('Get_manager_(V2)')?['mail']
To test for a missing value, wrap it: empty(body('Get_manager_(V2)')?['mail']). Picking Mail from the dynamic content list does the same job without typing. Microsoft's connector page lists "mail" as a field in the returned user (GraphUser_V1).

Step 4. Save the result

Write the approval outcome back to the row. Set Status to 2 Approved or 3 Rejected, and fill the Approver column. Run this write only after the approval step ends, and use a trigger that does not fire on your own update.

What to avoid

Honest limits

This flow depends on the profile data in your directory. If managers are out of date, the right person will not get the request. A person who is out of office can still hold up an approval. For a related problem, see "Approvals lost in email: how to stop chasing sign-offs". Start with one request type and a short list of test users before you roll it out.

When to get help

You can build all of this yourself in Microsoft 365. If you would rather have it built and tested for your team, I do that. A tracker like this is a fixed price: $5,000 for one, built in 2 weeks. See "What a SharePoint tracker costs to build". Bring one example of the problem to a free call.

Tell me what's still manual

I am Al Davies. I run 250 High Street LLC and build SharePoint trackers and Power Automate flows for operations teams. I work remotely. The first call is free, and I will not try to sell you anything.

See trackers I built: Tools I built

FAQ

What does Get manager (V2) return when a person has no manager?

Microsoft's connector page says it returns "No manager found for the specified user" when the user does not have a manager configured in Microsoft Entra ID. Set a fallback approver.

Can I get the manager's manager?

Add a second Get manager (V2) action and give it the first manager's email. Each call goes up one level, and at the top it returns the no-manager message, so plan for that as in Step 3.

Which field do I use to send an approval?

Use the Mail value. Microsoft's approvals page says the Assigned to field takes "the email address of the person who will approve the request."

What is the expression for the manager's email?

Our advice, not a Microsoft rule: body('Get_manager_(V2)')?['mail'], or pick Mail from the dynamic content list.

Why does the action fail with a 403 error, and how do I fix it?

Microsoft says it may happen if default fields are blocked by tenant policies. Set Select fields explicitly, for example mail, displayName, or ask your tenant admin to allowlist the fields.

Sources