Chad Carlton
Chad Carlton

Reputation: 153

Finding and Displaying Extension Properties in MS Graph

This AAD powershell easily lists out the extension Properties for a user:

> Get-AzureADUser -ObjectId [email protected] |select -ExpandProperty ExtensionProperty

Key                                                             Value
---                                                             -----
odata.metadata                                                  https://graph.windows.net/d29b7a9b-6edb-4720-99a8-3c5c6c3eeeb0/$metadata#directoryObjects/@Element
odata.type                                                      Microsoft.DirectoryServices.User
createdDateTime
employeeId                                                      50413382
onPremisesDistinguishedName
[email protected]                              directoryObjects/8cc715a1-0698-4d1a-8f49-441a84b6dbc4/Microsoft.DirectoryServices.User/thumbnailPhoto
[email protected]                           image/Jpeg
userIdentities                                                  []
extension_10a03227b5f146ad8a0087cf0bafd627_division             |30103611|50435526|50230396|10192257|86009851
extension_10a03227b5f146ad8a0087cf0bafd627_company              wingtiptoys Inc.
extension_10a03227b5f146ad8a0087cf0bafd627_extensionAttribute10 GF
extension_10a03227b5f146ad8a0087cf0bafd627_employeeID           50413382
extension_10a03227b5f146ad8a0087cf0bafd627_cn                   50413382
extension_10a03227b5f146ad8a0087cf0bafd627_extensionAttribute8  wingtiptoys Inc. Inc.
extension_10a03227b5f146ad8a0087cf0bafd627_extensionAttribute7  Chuck
extension_10a03227b5f146ad8a0087cf0bafd627_extensionAttribute6  US11
extension_10a03227b5f146ad8a0087cf0bafd627_extensionAttribute5  US1-Rochester, NY- Site
extension_10a03227b5f146ad8a0087cf0bafd627_extensionAttribute4  USC
extension_10a03227b5f146ad8a0087cf0bafd627_extensionAttribute2  Regular
extension_10a03227b5f146ad8a0087cf0bafd627_employeeType         ARR

I now have a request to build this sort of display into an authenticated web page, with a prior page that someone can type in that Object ID and see that output on the screen using the Microsoft Graph Client SDK.

The key issue is that I can't hardcode the list of Extension Properties. I need to just list what is on that particular user.

I've found how to get the value of an extension attribute once you know it's name, but how do you get the list of attributes above without knowing the attribute names ahead of time? (the -ExpandProperty ExtensionProperty part of the PowerShell)

I've tried to get at this data via graph explorer, and am having difficulty. I've tried:

Upvotes: 2

Views: 3411

Answers (1)

Marc LaFleur
Marc LaFleur

Reputation: 33094

You can use the /beta endpoint to get the complete property set. The /v1.0 endpoint has a default filter that gets applied but the /beta endpoint does not.

For example (using Graph Explorer):

https://graph.microsoft.com/v1.0/users/87d349ed-44d7-43e1-9a83-5f2406dee5bd

returns:

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
    "businessPhones": [
        "+1 425 555 0109"
    ],
    "displayName": "Adele Vance",
    "givenName": "Adele",
    "jobTitle": "Product Marketing Manager",
    "mail": "[email protected]",
    "mobilePhone": null,
    "officeLocation": "18/2111",
    "preferredLanguage": "en-US",
    "surname": "Vance",
    "userPrincipalName": "[email protected]",
    "id": "87d349ed-44d7-43e1-9a83-5f2406dee5bd"
}

Using the beta version:

https://graph.microsoft.com/beta/users/87d349ed-44d7-43e1-9a83-5f2406dee5bd

returns:

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users/$entity",
    "id": "87d349ed-44d7-43e1-9a83-5f2406dee5bd",
    "deletedDateTime": null,
    "accountEnabled": true,
    "ageGroup": null,
    "businessPhones": [
        "+1 425 555 0109"
    ],
    "city": "Bellevue",
    "createdDateTime": "2017-07-29T03:03:26Z",
    "companyName": null,
    "consentProvidedForMinor": null,
    "country": "United States",
    "department": "Sales & Marketing",
    "displayName": "Adele Vance",
    "employeeId": null,
    "faxNumber": null,
    "givenName": "Adele",
    "imAddresses": [
        "[email protected]"
    ],
    "isResourceAccount": null,
    "jobTitle": "Product Marketing Manager",
    "legalAgeGroupClassification": null,
    "mail": "[email protected]",
    "mailNickname": "AdeleV",
    "mobilePhone": null,
    "onPremisesDistinguishedName": null,
    "officeLocation": "18/2111",
    "onPremisesDomainName": null,
    "onPremisesImmutableId": null,
    "onPremisesLastSyncDateTime": null,
    "onPremisesSecurityIdentifier": null,
    "onPremisesSamAccountName": null,
    "onPremisesSyncEnabled": null,
    "onPremisesUserPrincipalName": null,
    "otherMails": [],
    "passwordPolicies": "DisablePasswordExpiration",
    "passwordProfile": null,
    "postalCode": "98004",
    "preferredDataLocation": null,
    "preferredLanguage": "en-US",
    "proxyAddresses": [
        "SMTP:[email protected]"
    ],
    "refreshTokensValidFromDateTime": "2017-09-12T21:08:09Z",
    "showInAddressList": null,
    "signInSessionsValidFromDateTime": "2017-09-12T21:08:09Z",
    "state": "WA",
    "streetAddress": "205 108th Ave. NE, Suite 400",
    "surname": "Vance",
    "usageLocation": "US",
    "userPrincipalName": "[email protected]",
    "externalUserState": null,
    "externalUserStateChangeDateTime": null,
    "userType": "Member",
    "extension_fe2174665583431c953114ff7268b7b3_Education_ObjectType": "teacher",
    "extension_fe2174665583431c953114ff7268b7b3_Education_TeacherNumber": "106",
    "assignedLicenses": [
        {
            "disabledPlans": [],
            "skuId": "c7df2760-2c81-4ef7-b578-5b5392b571df"
        }
    ],
    "assignedPlans": [
        {
            "assignedDateTime": "2017-07-29T03:03:25Z",
            "capabilityStatus": "Enabled",
            "service": "Adallom",
            "servicePlanId": "8c098270-9dd4-4350-9b30-ba4703f3b36b"
        },
        {
            "assignedDateTime": "2017-07-29T03:03:25Z",
            "capabilityStatus": "Enabled",
            "service": "SharePoint",
            "servicePlanId": "e95bec33-7c88-4a70-8e19-b10bd9d0c014"
        },
        {
            "assignedDateTime": "2017-07-29T03:03:25Z",
            "capabilityStatus": "Enabled",
            "service": "SharePoint",
            "servicePlanId": "5dbe027f-2339-4123-9542-606e4d348a72"
        },
        {
            "assignedDateTime": "2017-07-29T03:03:25Z",
            "capabilityStatus": "Enabled",
            "service": "exchange",
            "servicePlanId": "efb87545-963c-4e0d-99df-69c6916d9eb0"
        },
        {
            "assignedDateTime": "2017-07-29T03:03:25Z",
            "capabilityStatus": "Enabled",
            "service": "MicrosoftCommunicationsOnline",
            "servicePlanId": "0feaeb32-d00e-4d66-bd5a-43b5b83db82c"
        },
        {
            "assignedDateTime": "2017-07-29T03:03:25Z",
            "capabilityStatus": "Enabled",
            "service": "MicrosoftOffice",
            "servicePlanId": "43de0ff5-c92c-492b-9116-175376d08c38"
        },
        {
            "assignedDateTime": "2017-07-29T03:03:25Z",
            "capabilityStatus": "Enabled",
            "service": "YammerEnterprise",
            "servicePlanId": "7547a3fe-08ee-4ccb-b430-5077c5041653"
        },
        {
            "assignedDateTime": "2017-07-29T03:03:25Z",
            "capabilityStatus": "Enabled",
            "service": "RMSOnline",
            "servicePlanId": "bea4c11e-220a-4e6d-8eb8-8ea15d019f90"
        },
        {
            "assignedDateTime": "2017-07-29T03:03:25Z",
            "capabilityStatus": "Enabled",
            "service": "ProjectWorkManagement",
            "servicePlanId": "b737dad2-2f6c-4c65-90e3-ca563267e8b9"
        },
        {
            "assignedDateTime": "2017-07-29T03:03:25Z",
            "capabilityStatus": "Enabled",
            "service": "PowerBI",
            "servicePlanId": "70d33638-9c74-4d01-bfd3-562de28bd4ba"
        },
        {
            "assignedDateTime": "2017-07-29T03:03:25Z",
            "capabilityStatus": "Enabled",
            "service": "MicrosoftCommunicationsOnline",
            "servicePlanId": "3e26ee1f-8a5f-4d52-aee2-b81ce45c8f40"
        },
        {
            "assignedDateTime": "2017-07-29T03:03:25Z",
            "capabilityStatus": "Enabled",
            "service": "MicrosoftCommunicationsOnline",
            "servicePlanId": "4828c8ec-dc2e-4779-b502-87ac9ce28ab7"
        },
        {
            "assignedDateTime": "2017-07-29T03:03:25Z",
            "capabilityStatus": "Enabled",
            "service": "Sway",
            "servicePlanId": "a23b959c-7ce8-4e57-9140-b90eb88a9e97"
        },
        {
            "assignedDateTime": "2017-07-29T03:03:25Z",
            "capabilityStatus": "Enabled",
            "service": "exchange",
            "servicePlanId": "34c0d7a0-a70f-4668-9238-47f9fc208882"
        },
        {
            "assignedDateTime": "2017-07-29T03:03:25Z",
            "capabilityStatus": "Enabled",
            "service": "exchange",
            "servicePlanId": "9f431833-0334-42de-a7dc-70aa40db46db"
        },
        {
            "assignedDateTime": "2017-07-29T03:03:25Z",
            "capabilityStatus": "Enabled",
            "service": "exchange",
            "servicePlanId": "4de31727-a228-4ec3-a5bf-8e45b5ca48cc"
        },
        {
            "assignedDateTime": "2017-07-29T03:03:25Z",
            "capabilityStatus": "Enabled",
            "service": "TeamspaceAPI",
            "servicePlanId": "57ff2da0-773e-42df-b2af-ffb7a2317929"
        },
        {
            "assignedDateTime": "2017-07-29T03:03:25Z",
            "capabilityStatus": "Enabled",
            "service": "PowerAppsService",
            "servicePlanId": "9c0dab89-a30c-4117-86e7-97bda240acd2"
        },
        {
            "assignedDateTime": "2017-07-29T03:03:25Z",
            "capabilityStatus": "Enabled",
            "service": "ProcessSimple",
            "servicePlanId": "07699545-9485-468e-95b6-2fca3738be01"
        },
        {
            "assignedDateTime": "2017-07-29T03:03:25Z",
            "capabilityStatus": "Enabled",
            "service": "Deskless",
            "servicePlanId": "8c7d2df8-86f0-4902-b2ed-a0458298f3b3"
        },
        {
            "assignedDateTime": "2017-07-29T03:03:25Z",
            "capabilityStatus": "Enabled",
            "service": "exchange",
            "servicePlanId": "8e0c0a52-6a6c-4d40-8370-dd62790dcd70"
        },
        {
            "assignedDateTime": "2017-07-29T03:03:25Z",
            "capabilityStatus": "Enabled",
            "service": "MicrosoftStream",
            "servicePlanId": "6c6042f5-6f01-4d67-b8c1-eb99d36eed3e"
        },
        {
            "assignedDateTime": "2017-07-29T03:03:25Z",
            "capabilityStatus": "Enabled",
            "service": "OfficeForms",
            "servicePlanId": "e212cbc7-0961-4c40-9825-01117710dcb1"
        }
    ],
    "deviceKeys": [],
    "onPremisesExtensionAttributes": {
        "extensionAttribute1": null,
        "extensionAttribute2": null,
        "extensionAttribute3": null,
        "extensionAttribute4": null,
        "extensionAttribute5": null,
        "extensionAttribute6": null,
        "extensionAttribute7": null,
        "extensionAttribute8": null,
        "extensionAttribute9": null,
        "extensionAttribute10": null,
        "extensionAttribute11": null,
        "extensionAttribute12": null,
        "extensionAttribute13": null,
        "extensionAttribute14": null,
        "extensionAttribute15": null
    },
    "onPremisesProvisioningErrors": [],
    "provisionedPlans": [
        {
            "capabilityStatus": "Enabled",
            "provisioningStatus": "Success",
            "service": "MicrosoftCommunicationsOnline"
        },
        {
            "capabilityStatus": "Enabled",
            "provisioningStatus": "Success",
            "service": "MicrosoftCommunicationsOnline"
        },
        {
            "capabilityStatus": "Enabled",
            "provisioningStatus": "Success",
            "service": "SharePoint"
        },
        {
            "capabilityStatus": "Enabled",
            "provisioningStatus": "Success",
            "service": "SharePoint"
        },
        {
            "capabilityStatus": "Enabled",
            "provisioningStatus": "Success",
            "service": "MicrosoftCommunicationsOnline"
        },
        {
            "capabilityStatus": "Enabled",
            "provisioningStatus": "Success",
            "service": "exchange"
        },
        {
            "capabilityStatus": "Enabled",
            "provisioningStatus": "Success",
            "service": "exchange"
        },
        {
            "capabilityStatus": "Enabled",
            "provisioningStatus": "Success",
            "service": "exchange"
        },
        {
            "capabilityStatus": "Enabled",
            "provisioningStatus": "Success",
            "service": "exchange"
        },
        {
            "capabilityStatus": "Enabled",
            "provisioningStatus": "Success",
            "service": "exchange"
        }
    ]
}

Note the extension_fe2174665583431c953114ff7268b7b3_Education_ObjectType and extension_fe2174665583431c953114ff7268b7b3_Education_TeacherNumber in the results.

Upvotes: 7

Related Questions