A facilities team I worked with built a Power Apps request form, and the first thing people complained about was typing their own name, email, department and office location every single time. Microsoft 365 already knows all of that. Five minutes with the Office 365 Users connector filled those fields in automatically, and the complaints stopped.
In this tutorial, I’ll show you how to display the signed-in user’s profile in Power Apps: photo, name, email, phone, job title, department, location and manager. I’ll use the current V2 functions, because the older ones you’ll see in many tutorials are deprecated.
Quick answer: Add the Office 365 Users connector, then use Office365Users.MyProfileV2() for the signed-in user, for example Office365Users.MyProfileV2().jobTitle in a label’s Text. For the photo, set an Image control to Office365Users.UserPhotoV2(User().Email). For someone else, use Office365Users.UserProfileV2("user@contoso.com"). Load the profile once, in a named formula, instead of calling the connector in every label.
What you need
- A canvas app. Any layout works; I use a simple screen with a few labels and an Image control.
- The Office 365 Users connector. It’s a standard connector, so it doesn’t need a premium license.
- Users in Microsoft Entra ID with their profile details filled in. The app can only show what your admin has entered, so blank job titles or phone numbers show up blank.
Each person who opens the app is asked to allow the Office 365 Users connection the first time, because this connection isn’t shared with the app.
Step 1: Add the Office 365 Users connector
In Power Apps Studio, select Data in the left menu, then Add data. Search for Office 365 Users and select it:

If you don’t have a connection yet, Power Apps asks you to create one with your Microsoft 365 account.
Step 2: Load the profile once
Many tutorials put Office365Users.UserProfileV2(User().Email) in every label. That works, but each label makes its own call to the connector, and the connector is limited to 1,000 calls per connection every 60 seconds. It’s also slower. Load the profile once and reuse it.
Select the App object in the Tree view, choose the Formulas property, and add a named formula:
MyProfile = Office365Users.MyProfileV2();
Now every control can use MyProfile. Named formulas are recalculated only when needed, which Microsoft recommends over loading data in App.OnStart. If you prefer a variable, Set(varMe, Office365Users.MyProfileV2()) in OnStart does the same job. For more, see Power Apps named formulas.
Step 3: Show the profile photo
Add an Image control and set its Image property to:
Office365Users.UserPhotoV2(User().Email)
User().Email returns the user’s sign-in name (UPN), which is what the function expects. If someone has no photo, the call fails and the image is empty. This version checks first and falls back to the picture Power Apps already has:
If(
Office365Users.UserPhotoMetadata(User().Email).HasPhoto,
Office365Users.UserPhotoV2(User().Email),
User().Image
)
Step 4: Show the profile fields
Add a label for each field and set its Text property. The V2 fields use camelCase names:
| Field | Label Text |
|---|---|
| Display name | MyProfile.displayName |
| First and last name | MyProfile.givenName, MyProfile.surname |
MyProfile.mail | |
| Mobile phone | MyProfile.mobilePhone |
| Office phone | First(MyProfile.businessPhones).Value |
| Company | MyProfile.companyName |
| Department | MyProfile.department |
| Job title | MyProfile.jobTitle |
| Office location | MyProfile.officeLocation |
| City, state, ZIP | MyProfile.city & ", " & MyProfile.state & " " & MyProfile.postalCode |
| Country | MyProfile.country |
| Object ID | MyProfile.id |
The office phone is the one that catches people. businessPhones is a list, not text, so putting it straight into a label gives an error. First(...).Value shows the first number, and Concat(MyProfile.businessPhones, Value, ", ") shows all of them.
Other fields you can use include userPrincipalName, streetAddress, preferredLanguage, userType (Member or Guest), aboutMe and accountEnabled, which returns true or false.
Show another user’s profile
MyProfileV2() always returns the signed-in user. For someone else, pass their sign-in name or ID to UserProfileV2(). For example, with a text input where people type an address:
Office365Users.UserProfileV2(txtEmail.Text).jobTitle
To let people pick a person instead of typing, use a combo box with Office365Users.SearchUserV2({searchTerm: Self.SearchText, top: 10}).value as its Items. The combo box search with Office365Users tutorial walks through it.
Show the user’s manager and direct reports
The manager comes from Microsoft Entra ID. If a user doesn’t have one set, the call returns an error instead of a blank, so wrap it:
IfError(Office365Users.ManagerV2(User().Email).displayName, "No manager set")
For a list of direct reports, add a gallery and set its Items to Office365Users.DirectReportsV2(User().Email).value. Inside the gallery, ThisItem.displayName and ThisItem.jobTitle show each person.
A no-connector option: User()
If you only need the basics, the built-in User() function doesn’t need a connector at all:
| Formula | Returns |
|---|---|
User().FullName | The user’s display name |
User().Email | The sign-in name (UPN), which is usually but not always the email address |
User().Image | The user’s photo, for an Image control |
User().EntraObjectId | The user’s Microsoft Entra object ID |
Use the connector when you need the job title, department, phone or location. For more on this, see how to get current user information in Power Apps.
Troubleshooting
- 403 Forbidden on MyProfileV2 or UserProfileV2. Some fields the function asks for by default, such as skills or aboutMe, can be blocked in your tenant. Ask only for the fields you need with the optional select parameter, for example
Office365Users.MyProfileV2({'$select': "displayName,jobTitle,department"}). - 401 Unauthorized for guests. Guest users can’t read the full profile. The same select approach, limited to basic fields, works around it.
- “No manager found for the specified user.” The user has no manager in Microsoft Entra ID. Use IfError as shown above.
- A field is blank. The value isn’t filled in for that user. An admin can add it in the Microsoft 365 admin center or Microsoft Entra admin center.
- Formulas with UserProfile or MyProfile (no V2) stop working. Those are the deprecated V1 functions. Switch to the V2 versions and the camelCase field names.
These Power Apps tutorials build on user profile data:
- How to Get Current User Information in Power Apps? [Name, ID, Email, Image]
- 4 Various Ways to Get Selected User Manager Name By Default in Power Apps
- Filter Data By Current User in Power Apps [4 Ways]
- How to Use Power Apps Combo Box With Office 365 Users
- Power Apps Combo Box Search Office365Users
- Power Apps Named Formulas [5 Easy Methods]
Frequently Asked Questions
How do I get the current user’s job title in Power Apps?
Use Office365Users.MyProfileV2().jobTitle in a label’s Text property. Microsoft lists all the fields in the Office 365 Users connector reference.
What’s the difference between UserProfile and UserProfileV2?
UserProfile is the older V1 function, and Microsoft has deprecated it. Use UserProfileV2, or MyProfileV2 for the signed-in user. The V2 field names use camelCase, such as displayName.
How do I show the user’s photo in Power Apps?
Set an Image control’s Image property to Office365Users.UserPhotoV2(User().Email), or use User().Image, which doesn’t need the connector.
Why does the phone number give an error in a label?
businessPhones is a list. Use First(MyProfileV2().businessPhones).Value to show the first number.
How do I get the user’s manager in Power Apps?
Use Office365Users.ManagerV2(User().Email).displayName, wrapped in IfError in case no manager is set.

Preeti Sahu is a Microsoft MVP for Power Apps with over six years of experience working with SharePoint Online and the Power Platform. She is the co-author of the book Microsoft Power Platform: A Deep Dive. As a Power Platform developer, she has built various tools with Power Apps and Power Automate, and she makes Microsoft 365 videos for YouTube.
This is great, thank you.
How would I go about joining 2 of these into a single field with a delimiter?
Using your example, return the values for Designation; Department
Thank you. This is helpful. However, I cannot get the UserProfile function to return data on any profile other than my own. Is there something about the permissions that has to be changed?
How can we get custom profile properties in PowerApp?