Change All Faculty and Students to Office 365 Edu Plus Licenses


We have seen many changes to Office 365 but Office 365 Education changes even more as Microsoft given more free services to education establishment worldwide.  Back in September 2015, Microsoft gave some of the E3 features to Office 365 and renamed the license from Office 365 E1 for Student (Faculty) to Office 365 Education for Student (Faculty), still free.

During the announcement around making the Office client available through Office 365, better known as Office 365 Pro Plus, Microsoft made it easy for students and teachers to get the software by asking for their email address and check their licensing records to then give them Office 365 Education.

You may have noticed this added over 1.5 million licenses to your tenant allowing you to change all your users to this new license.  This license is now called the Office 365 Education PLUS for Student (Faculty) license.

So you now have the ability to give all your students and staff Office 365 Pro Plus as you have these licenses added to your tenant, but to assign them to each of your users is time consuming and you may already have disabled other plans such as Skype for Business.  Something that can be time consuming.

The below script runs and checks to see what services are assigned to each user, removes the current license and then add the Plus license with the same disabled features as previous.  It will also check to see if their currently have a faculty or student license and ensure the right one is licensed.

You will need the Azure AD PowerShell install to make this run and also connected to your tenant (Connect-MSOLService).

$users = Get-MsolUser -MaxResults 10000 | Select-Object -property UserPrincipalName -ExpandProperty Licenses
foreach ($user in $users){

$UPN = $user.userprincipalname
$useraccount = get-msoluser -UserPrincipalName $UPN
$licensetype = $useraccount.Licenses.accountskuid
$licensesassigned = $useraccount.Licenses.servicestatus

write-host ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
write-host ~~~~ Now Starting on $UPN ~~~~
write-host "The following licenses are disabled on this account"
$disabledPlans= @()
foreach ($line in $licensesassigned) {
if ($line.ServicePlan.ServiceName -eq "SWAY" -and $line.ProvisioningStatus -eq "Disabled") {Write-Host $line.ServicePlan.ServiceName "Disabled" -BackgroundColor DarkRed}
if ($line.ServicePlan.ServiceName -eq "SHAREPOINTWAC_EDU" -and $line.ProvisioningStatus -eq "Disabled") {Write-Host $line.ServicePlan.ServiceName "Disabled" -BackgroundColor DarkRed}
if ($line.ServicePlan.ServiceName -eq "MCOSTANDARD" -and $line.ProvisioningStatus -eq "Disabled") {Write-Host $line.ServicePlan.ServiceName "Disabled" -BackgroundColor DarkRed}
if ($line.ServicePlan.ServiceName -eq "SHAREPOINTSTANDARD_EDU" -and $line.ProvisioningStatus -eq "Disabled") {Write-Host $line.ServicePlan.ServiceName "Disabled" -BackgroundColor DarkRed}
if ($line.ServicePlan.ServiceName -eq "EXCHANGE_S_STANDARD" -and $line.ProvisioningStatus -eq "Disabled") {Write-Host $line.ServicePlan.ServiceName "Disabled" -BackgroundColor DarkRed}
if ($line.ServicePlan.ServiceName -eq "SWAY" -and $line.ProvisioningStatus -eq "Disabled") { $disabledPlans +="SWAY"}
if ($line.ServicePlan.ServiceName -eq "SHAREPOINTWAC_EDU" -and $line.ProvisioningStatus -eq "Disabled") { $disabledPlans +="SHAREPOINTWAC_EDU"}
if ($line.ServicePlan.ServiceName -eq "MCOSTANDARD" -and $line.ProvisioningStatus -eq "Disabled") { $disabledPlans +="MCOSTANDARD"}
if ($line.ServicePlan.ServiceName -eq "SHAREPOINTSTANDARD_EDU" -and $line.ProvisioningStatus -eq "Disabled") { $disabledPlans +="SHAREPOINTSTANDARD_EDU"}
if ($line.ServicePlan.ServiceName -eq "EXCHANGE_S_STANDARD" -and $line.ProvisioningStatus -eq "Disabled") {$disabledPlans +="EXCHANGE_S_STANDARD"}


Set-MsolUserLicense -UserPrincipalName $UPN -RemoveLicenses $licensetype

if ($licensetype -like "*STUDENT*"){
write-host "This user has a student license"
$FullFrictionFreeLicense = Get-MsolAccountSku | Where-Object {$_.AccountSKUID -like "*STANDARDWOFFPACK_IW_STUDENT*"}

if ($licensetype -like "*FACULTY*") {
write-host "This user has a faculty license"
$FullFrictionFreeLicense = Get-MsolAccountSku | Where-Object {$_.AccountSKUID -like "*STANDARDWOFFPACK_IW_FACULTY*"}

$License = New-MsolLicenseOptions -AccountSkuId $FullFrictionFreeLicense.AccountSkuId -DisabledPlans $disabledPlans;
$info = Set-MsolUserLicense -UserPrincipalName $UPN -AddLicenses $FullFrictionFreeLicense.AccountSkuId -LicenseOptions $License


$testuseraccount = get-msoluser -UserPrincipalName $UPN
$testlicensetype = $useraccount.Licenses.accountskuid

if ($testlicensetype -like "*STANDARDWOFFPACK_IW*") { write-host "Success" -BackgroundColor DarkGreen} ELSE {write-host "FAILED" -BackgroundColor Red}
write-host "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
write-host ""


6 thoughts on “Change All Faculty and Students to Office 365 Edu Plus Licenses

  1. Great little article – are Microsoft starting to give the Faculty and Students Office 365 Edu Plus Licenses free to schools. We have noticed one of our Office 365 School Tenancies has now got Office 365 Education Plus for students – previously schools have to purchase a volume License agreement.

    I can not find any other documents to say the license is now free to all Education accounts?

    • Alex Pearce

      Sorry for the late reply but the reason you are seeing the Office 365 Education Plus licenses is because a student or teacher has requested Office 365 Pro Plus through the friction free method. More details below or happy to chat on the phone if you would like.

  2. Zak

    Hello Alex,
    Your blog is very helpful, thanks. I have a question, we had a subdomain ( which we were using for students for google apps. As you mentioned, someone requested Student Education plus using subdomain and a tenant was automatically created but it seems like now I am stuck with keeping up with two tenants? which we use for faculty and staff, and I tried adding subdomain to my but it threw an error.

    Do you have any suggestions as to how we can consolidate two tenants.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.