Changing licenses in Office 365 is usually something you do upon provisioning new users, and when migrating between different SKUs. Most of the other time you dont even think about it. But what if you have taken a different approach in onboarding your users, by activating only subset of the Office 365 features at a time? For example, if you have moved Lync to the cloud, but are waiting for all sites/libraries to be migrated before you start using SharePoint Online? Or simply don’t want users to play with RMS, etc?
In such case, you have probably already granted the users the E3 SKU license, but disabled some of the services. How you can do this via PowerShell is explained in numerous blog posts, such as this one. So how about enabling those services back? What I first though of is to remove the whole SKU and assign it back without any disabled services. That will work, but surely there is a better way? Indeed there is! All we need to do is simply ‘refresh’ the license options for the user. That is, create a new licensing option with all the services enabled and rerun the Set-MsolUserLicense cmdlet. Here are the steps:
Get the SKU in question using the Get-MsolAccountSku cmdlet
Prepare the options variable:
$options = New-MsolLicenseOptions -AccountSkuId 'tenant:ENTERPRISEPACK'
Here’s what the license options looked like before running the cmdlet in my case:
ServicePlan ProvisioningStatus ----------- ------------------ YAMMER_ENTERPRISE PendingInput RMS_S_ENTERPRISE PendingInput OFFICESUBSCRIPTION Success MCOSTANDARD Disabled SHAREPOINTWAC Success SHAREPOINTENTERPRISE Success EXCHANGE_S_ENTERPRISE Disabled
Here’s the cmdlet I run in order to ‘refresh’ the license options:
Set-MsolUserLicense -UserPrincipalName email@example.com -LicenseOptions $options
And here is the end result:
ServicePlan ProvisioningStatus ----------- ------------------ YAMMER_ENTERPRISE PendingInput RMS_S_ENTERPRISE PendingInput OFFICESUBSCRIPTION Success MCOSTANDARD Success SHAREPOINTWAC Success SHAREPOINTENTERPRISE Success EXCHANGE_S_ENTERPRISE Success
Note that I run the Set-MsolUserLicense without specifying any SKU. The license options will be matched against the currently assigned SKU. If you specify it using the -AddLicenses parameter, the cmdlet will throw an error. As a next step, you can of course run this agains all users or a subset of them and complete the task in a matter of minutes.
While we are still on the subject of licenses, in case you want to switch between different SKUs while preserving the license options check out this blog.