How to Assign a Microsoft 365 License to a User
TL;DR: In the Microsoft 365 admin center, go to Users > Active users, pick the user, open Licenses and Apps, check the licenses you want to assign, and Save changes. For more than a handful of users at a time, use group-based licensing instead.
License assignment is the bridge between a user account existing and that user actually being able to use Microsoft 365 services. There are three places you can do it from — the user’s profile, the Licenses page, and a Microsoft Entra security group with group-based licensing — and each is right for a different scale.
What this does
Assigning a license attaches a service plan to a user from one of your tenant’s purchased subscriptions. That service plan is what entitles the user to the underlying services — Exchange Online mailbox, OneDrive, Microsoft Teams, Microsoft Intune, and so on. Without a license, an account exists but can’t access any productivity services beyond a sign-in.
License assignment also requires the user to have a usage location set (a country code). Microsoft uses that to determine which services and features are legally available to the user. The Add a user wizard sets it automatically; for accounts created via API, you may need to set it explicitly.
When you’d want this
- Onboarding a new user who needs Microsoft 365 services
- Upgrading or downgrading a user (e.g., E3 → E5, or vice versa)
- Reassigning a license freed up by a departed employee
- Switching service plans within a license (turning Sway off, for example)
Steps
Option A: Assign to a single user from Active users
This is the fastest path for one user.
- Sign in to the Microsoft 365 admin center at https://admin.microsoft.com as a License Administrator or User Administrator.
- Go to Users > Active users.
- Select the user’s row.
- In the right pane, select Licenses and Apps.
- Confirm the usage location is set (required for licensing).
- Expand Licenses and check the boxes for the licenses you want to assign.
- (Optional) Expand Apps to disable specific service plans within the license — for example, turning off Yammer while leaving the rest of the license intact.
- Select Save changes.
Option B: Assign to multiple users from Active users
For up to a few dozen users at once.
- From Users > Active users, select the circles next to multiple user names.
- At the top of the page, select Manage product licenses.
- Choose Assign more: Keep the existing licenses and assign more > Next.
- Check the licenses you want each selected user to receive.
- Select Save changes.
Option C: Assign from the Licenses page
License-centric view — useful when you’re working on one product and want to add multiple users to it.
- Go to Billing > Licenses.
- Select the product you want to assign.
- Select Assign licenses.
- Begin typing user or group names; pick from suggestions (up to 20 per batch).
- Optionally, Turn apps and services on or off to scope which service plans get assigned.
- Select Assign, then close the panel.
Option D (recommended at scale): Group-based licensing
For more than a handful of users — and especially if you want the assignment to follow group membership automatically — use group-based licensing in Microsoft Entra ID.
- From Billing > Licenses, select the product.
- On the License details page, choose the Groups tab.
- Select + Assign licenses.
- Search for and select the security group (or Microsoft 365 group) you want to assign the license to.
- Select Assign.
Microsoft Entra ID then processes every member of the group and assigns the license. New members get the license automatically when they’re added; removed members lose it when they leave. Be sure your group has enough licenses available — assignment stalls quietly if you run out.
PowerShell equivalent
Microsoft Graph PowerShell is the supported path. The legacy MSOnline and AzureAD modules are retired.
Connect-MgGraph -Scopes "User.ReadWrite.All", "Organization.Read.All"
# Find the SKU you want to assign
$sku = Get-MgSubscribedSku -All |
Where-Object SkuPartNumber -eq "ENTERPRISEPACK" # E3
# Assign the license — UsageLocation must be set first
Update-MgUser -UserId "jakob@contoso.com" -UsageLocation "US"
Set-MgUserLicense `
-UserId "jakob@contoso.com" `
-AddLicenses @(@{ SkuId = $sku.SkuId }) `
-RemoveLicenses @()
To swap one license for another in a single call, populate both AddLicenses and RemoveLicenses. To disable specific service plans within an assigned license, add a DisabledPlans array to the AddLicenses hashtable.
To bulk-assign by reading a CSV:
Import-Csv .\users.csv | ForEach-Object {
Set-MgUserLicense `
-UserId $_.UserPrincipalName `
-AddLicenses @(@{ SkuId = $sku.SkuId }) `
-RemoveLicenses @()
}
Notes and gotchas
- Usage location is required. License assignment fails silently if the user doesn’t have one. The admin center’s
Licenses and Appsflyout reminds you; the API doesn’t. - Group-based licensing has dependencies. If a service plan within a license depends on another (say, Microsoft Teams depends on Exchange Online), they must be assigned together in the same group, or the dependent plan is disabled.
- Watch the available count. Both UI and API will create the user without licensing if the pool is empty — so always confirm assignment after a buy/onboard cycle. The admin center’s Errors & Issues tab on the Licenses page lists every user that didn’t receive what was intended.
- Direct assignments override group assignments only additively. If a user is in a group that grants License A and you assign License B directly, they get both. To remove a group-based license, remove the user from the group.
- Cloud Solution Provider (CSP) caveat: if you bought the product through a CSP partner, some products can only be assigned via the Licenses page, not from the user’s profile.
- Permissions: minimum role is License Administrator. Use that — not Global Administrator — for license work.