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

License AdministratorMicrosoft Entra built-in role

Can manage product licenses on users and groups.

Role ID4d6ac14f-3453-41d0-bef9-a3e0c569773a
PrivilegedNo
Permissions9

What it can do

PermissionWhat it allows
microsoft.azure.serviceHealth/allEntities/allTasksRead and configure Azure Service Health
microsoft.directory/authorizationPolicy/standard/readRead standard properties of authorization policy
microsoft.directory/groups/assignLicenseAssign product licenses to groups for group-based licensing
microsoft.directory/groups/reprocessLicenseAssignmentReprocess license assignments for group-based licensing
microsoft.directory/users/assignLicenseManage user licenses
microsoft.directory/users/reprocessLicenseAssignmentReprocess license assignments for users
microsoft.directory/users/usageLocation/updateUpdate usage location of users
microsoft.office365.serviceHealth/allEntities/allTasksRead and configure Service Health in the Microsoft 365 admin center
microsoft.office365.webPortal/allEntities/standard/readRead basic properties on all resources in the Microsoft 365 admin center

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 License Administrator for <reason>"
    RoleDefinitionId = "4d6ac14f-3453-41d0-bef9-a3e0c569773a"
    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 '4d6ac14f-3453-41d0-bef9-a3e0c569773a'" -ExpandProperty Principal |
    ForEach-Object { $_.Principal.AdditionalProperties.displayName }

Related roles

Find the smallest role for a task →