Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Microsoft 365 Copilot connectors for people data enable you to ingest people data and knowledge from your source systems (for example human resources, talent management, or other people systems) into Microsoft Graph. Adding people data to Microsoft Graph makes it available to Microsoft 365 Copilot and people experiences such as the profile card and people search. When you ingest your data, Copilot can reason over the data and use it to respond to user questions.
Important
Microsoft 365 Copilot connectors for people data built using the Microsoft Graph API are currently in public preview with limited functionality. For more information, see Notes and limitations.
The preview for people connectors has been updated with these requirements:
- Requires configuration of the
contentCategoryproperty on theexternalConnectionentity. - Switch from using attribute named mapping for properties to the use of people domain specific labels.
- A user can now be identified either via
userPrincipalNameorexternalDirectoryObjectId.
You build Microsoft 365 Copilot connectors for people data in the same way as other Copilot connectors using the Microsoft Graph external connections APIs. To ensure Microsoft 365 recognizes your connection as containing people data, you must follow the connection configuration and schema requirements, as well as register the connection as a source of profile data.
Note
For an example connector that provides people data, see Microsoft 365 Copilot connector for people data sample.
Connection configuration requirements
Copilot connectors that contains people data must set the externalConnections contentCategory property to have the value people.
Connection schema requirements
Microsoft 365 Copilot connectors for people data support enrichment for the following Microsoft 365 user profile entities.
- The schema must have one property with the
personAccountlabel to be able to map theexternalItemto a person. - Properties without a label are considered custom properties.
| Property label | Property type | Profile entity | Description |
|---|---|---|---|
personAccount |
string |
userAccountInformation |
Indicates the Microsoft Entra ID user the item targets. |
personName |
string |
personName |
Adds names to the user. |
personCurrentPosition |
string |
workPosition |
Describes the current position of the person. |
personAddresses |
stringCollection |
itemAddress |
Max 3, one each of Home, Work, and Other. Adds addresses to the user. |
personEmails |
stringCollection |
itemEmail |
Max 3. Adds email addresses to the user. |
personPhones |
stringCollection |
itemPhone |
Adds phone numbers to the user. |
personAwards |
stringCollection |
personAward |
Describes awards the user earned. |
personCertifications |
stringCollection |
personCertification |
Describes certifications the user earned. |
personProjects |
stringCollection |
projectParticipation |
Describes projects the user participated in. |
personSkills |
stringCollection |
skillProficiency |
Describes skills the user is proficient in. |
personWebAccounts |
stringCollection |
webAccount |
Describes external web accounts the user has. |
personWebSite |
string |
webSite |
Describes a website for the user. |
personAnniversaries |
stringCollection |
personAnniversary |
Adds one or more anniversaries tot he person |
personNote |
string |
personAnnotation |
Adds a note to the user. |
Example schema:
{
"baseType": "microsoft.graph.externalItem",
"properties": [
{
"name": "accountInformation",
"type": "string",
"labels": ["personAccount"]
},
{
"name": "position",
"type": "string",
"labels": ["personCurrentPosition"]
},
{
"name": "skills",
"type": "stringCollection",
"labels": ["personSkills"]
},
{
"name": "requisitionId",
"type": "string"
}
]
}
Serialization of JSON entities
Each property, with a label, are either of type string or stringCollection, and represents a JSON serialized string representation of the Microsoft 365 profile entity being enriched.
{
...
"properties:" {
"accountInformation": "{\"userPrincipalName\": \"adelev@contoso.com\"}",
"position": "{\"detail\":{\"jobTitle\":\"ProductManager\"}}",
"skills@odata.type": "Collection(String)",
"skills": [
"{\"displayName\":\"Product requirements\",}",
"{\"displayName\":\"Customer research\"}"
],
"requisitionId": "REQ-12345678
}
}
Important
We expect changes during the public preview and ahead of general availability of this core schema configuration. Regularly check this page for updates.
Registering the connection as a profile source
After you create the connection, you must register the connection as a source of profile data and add it to the list of prioritized sources.
You register the connection as a profile source by using the profile source API with sourceId set to the connection ID of your connector and the webUrl property set to an HTTPS link to either the external system or a page with additional information about the source.
After registration, you must add the connection to the list of prioritized profile sources using the Profile property settings API. Add the URL to the profile source, in the format of https://graph.microsoft.com/beta/admin/people/profileSources(sourceId='connectionId'), where connectionId is the unique connection ID of the connection, to the prioritizedSourceUrls array. This array represents the order in which Microsoft 365 composes the view of a person. If you want your connection to be the highest prioritized source, add it as the first item in the array.
Notes and limitations
- People data provided via a Copilot connector is visible to all users in the organization. Connector data is stored in the user's Microsoft 365 profile. For more information, see Microsoft 365 Copilot connectors for people data.
- You must set the access control list (ACL) on items ingested by the connector to grant access to everyone.
- You must provide valid string encoded JSON objects for profile entities. Microsoft Graph ignores invalid values.
- Non matched user accounts (
userPrincipalNameorexternalDirectoryObjectId) will be ignored. - Microsoft Graph treats any property without a label as a custom property.
- Custom properties might show up in profile cards as notes during the preview, but Microsoft will remove them before or at general availability.
- Microsoft 365 might take up to 6 hours after the connection is created before it becomes available in search, people experiences, or Copilot.
- Connections with people data don't support staged connections.
- The following labels are not yet supported
personManager,personAssistants,personColleagues,personAlternateContactsandpersonEmergencyContacts.