Entra / Microsoft 365 · Licensing
Remove viva engage core service plan
Disable the Viva Engage Core service plan from Microsoft 365 E1, E3, and E5 licenses when the Yammer Enterprise plan is already disabled.
Connect & set up
Run these once per session. All scopes are read-only unless the script makes changes.
Connect-MgGraph -NoWelcome
Run it
The main script. Copy it, or download the .ps1 and run it from your console.
Connect-MgGraph -NoWelcome# Define service plan and license identifiers$YammerServicePlan = "7547a3fe-08ee-4ccb-b430-5077c5041653"$VivaEngageCoreServicePlan = "a82fbf69-b4d7-49f4-83a6-915b2cf354f4"$Office365E5NoConf = "26d45bd9-adf1-46cd-a9e1-51e9a5524128"$Office365E3 = "6fd2c87f-b296-42f0-b197-1e91e994b900"$Office365E5 = "c7df2760-2c81-4ef7-b578-5b5392b571df"$Office365E1 = "18181a46-0d4e-45cd-891e-60aabd171b4e"# Find and process licensed Entra ID usersWrite-Host "Searching for licensed user accounts"[array]$Users = Get-MgUser -Filter "assignedLicenses/`$count ne 0 and userType eq 'Member'" -ConsistencyLevel eventual -CountVariable Records -All `-Property Id, displayName, userPrincipalName, assignedLicenses, department, country| Sort-Object DisplayNameIf (!($Users)) {Write-Host "Oddly, we can't find any licensed accounts ... exiting!" ; break}$UserLicensesUpdated = [System.Collections.Generic.List[Object]]::new() ; $i =0ForEach ($User in $Users) {[array]$DisabledSPs = $Null$i++Write-Host ("Checking licenses assigned to account {0} {1}/{2}" -f $User.Displayname, $i, $Users.count)$License = $Null; $LicenseSkuId = $Null# Find out what SKU the account hasIf ($Office365E3 -in $User.AssignedLicenses.SkuId) {$LicenseSkuId = $Office365E3; $License = "Office 365 E3"}If ($Office365E5NoConf -in $User.AssignedLicenses.SkuId) {$LicenseSkuId = $Office365E5NoConf; $License = "Office 365 E5 (No Conf)"}If ($Office365E5 -in $User.AssignedLicenses.SkuId) {$LicenseSkuId = $Office365E5; $License = "Office 365 E5"}If ($Office365E1 -in $User.AssignedLicenses.SkuId) {$LicenseSkuId = $Office365E1; $License = "Office 365 E1"}If ($Null -eq $LicenseSkuId) {Write-Host ("Can't find the right license SKU for account {0} - continuing" -f $User.UserPrincipalName)continue}# Viva Engage Code only for Office 365 E3 or E1?If ($LicenseSkuId -eq $Office365E5 -or $LicenseSkuId -eq $Office365E5NoConf) {Write-Host ("Can't remove the Viva Engage Core service plan from the license assigned to {0} - continuing" -f $User.UserPrincipalName)continue}# Examine service plans assigned to the account to see if they include Yammer[array]$AllLicenses = Get-MgUserLicenseDetail -UserId $User.Id | Select-Object -ExpandProperty ServicePlans | Sort-Object ServicePlanId -Unique# [array]$Licenses = $AllLicenses | Where-Object {$_.ProvisioningStatus -eq 'Success'}[array]$DisabledLicenses = $AllLicenses | Where-Object {$_.ProvisioningStatus -eq 'Disabled'}# Check if Yammer Enterprise is disabled for the account. If it is, disable Viva Engage Core unless it's already disabledIf ($YammerServicePlan -in $DisabledLicenses.ServicePlanId `-and $VivaEngageCoreServicePlan -notin $DisabledLicenses.ServicePlanId ) {# Add any previously disabled service plans if present and compose the license optionsIf ($DisabledLicenses) {$DisabledSPs = $DisabledLicenses.ServicePlanId}# Add Viva Engage Core service plan$DisabledSPs += $VivaEngageCoreServicePlan$LicenseOptions = @{SkuId = $LicenseSkuId ; DisabledPlans = $DisabledSPs}Write-Host ("Disabling the Viva Engage Core service plan from the {0} license for account {1}" -f $License, $User.DisplayName) -foregroundcolor Red$Status = Set-MgUserLicense -UserId $User.Id -AddLicenses $LicenseOptions -RemoveLicenses @()If ($Status) {Write-Host "License adjustment succeeded"}$ReportLine = [PSCustomObject] @{User = $User.DisplayNameUPN = $User.UserPrincipalNameDepartment = $User.DepartmentCountry = $User.Country"Service Plan Removed" = $VivaEngageCoreServicePlanLicense = $License }$UserLicensesUpdated.Add($ReportLine)} #End if} #End ForEach UsersWrite-Host ""Write-Host ("Viva Core Engage service plans were found and removed from these {0} accounts:" -f $LicenseUsers.count)$UserLicensesUpdated.User$UserLicensesUpdated | Out-GridView
Attribution
Author
Office365itpros