azureblog.co.uk
← cd ~/roles
// roles/entra

Extended Directory User AdministratorMicrosoft Entra built-in role

Manage all aspects of external user profiles in the extended directory for Teams.

Role IDdd13091a-6207-4fc0-82ba-3641e056ab95
PrivilegedNo
Permissions7

What it can do

PermissionWhat it allows
microsoft.directory/externalUserProfiles/basic/updateUpdate basic properties of external user profiles in the extended directory for Teams
microsoft.directory/externalUserProfiles/deleteDelete external user profiles in the extended directory for Teams
microsoft.directory/externalUserProfiles/standard/readRead standard properties of external user profiles in the extended directory for Teams
microsoft.directory/pendingExternalUserProfiles/basic/updateUpdate basic properties of external user profiles in the extended directory for Teams
microsoft.directory/pendingExternalUserProfiles/createCreate external user profiles in the extended directory for Teams
microsoft.directory/pendingExternalUserProfiles/deleteDelete external user profiles in the extended directory for Teams
microsoft.directory/pendingExternalUserProfiles/standard/readRead standard properties of external user profiles in the extended directory for Teams

Assign it

The role ID is the same in every tenant, so these work as they are. Make it eligible through PIM:

powershell13 lines
Connect-MgGraph -Scopes "RoleEligibilitySchedule.ReadWrite.Directory"
$user = Get-MgUser -UserId "jane.doe@contoso.com"
New-MgRoleManagementDirectoryRoleEligibilityScheduleRequest -BodyParameter @{
    Action           = "AdminAssign"
    Justification    = "Needs Extended Directory User Administrator for <reason>"
    RoleDefinitionId = "dd13091a-6207-4fc0-82ba-3641e056ab95"
    DirectoryScopeId = "/"
    PrincipalId      = $user.Id
    ScheduleInfo     = @{
        StartDateTime = (Get-Date).ToUniversalTime().ToString("o")
        Expiration    = @{ Type = "afterDuration"; Duration = "P180D" }
    }
}

Who already has it?

powershell3 lines
Connect-MgGraph -Scopes "RoleManagement.Read.Directory"
Get-MgRoleManagementDirectoryRoleAssignment -Filter "roleDefinitionId eq 'dd13091a-6207-4fc0-82ba-3641e056ab95'" -ExpandProperty Principal |
    ForEach-Object { $_.Principal.AdditionalProperties.displayName }

Related roles

Find the smallest role for a task →