We Explain How to Remove Kaizala Licenses from User Accounts Now

On August 26, Microsoft let partners know about their plans to retire the Kaizala app. Tenants learned about the retirement on August 29 when Microsoft posted notification MC420323. Access to the application will terminate on on August 31, 2023, and Microsoft will onboard no new tenants starting August 26, 2022.

I saw the announcement in a Yammer community in the partner network. Microsoft has also updated various web pages with information about the retirement (Figure 1).

Kaizala retirement notice
Figure 1: The retirement notice for Kaizala

In their communication to partners, Microsoft said that they wanted to “clarify where their future investments are in the communication and collaboration space” and “reduce confusion” for partners and customers. In other words, no one could work out why Kaizala existed and how it fit into the sometimes bewildering array of collaboration choices available in Microsoft 365. As such, retiring Kaizala is an entirely predictable step.

Microsoft’s suggested transition plan is that customers should move to Teams. Again, this is entirely predictable because that’s where Microsoft’s development priorities are focused. Microsoft says that they “have put significant resources into making this transition smooth for our customers” and that they offer “a broad range of support services and guidance – including step-by-step tutorials, training, and more.”

Kaizala Never Fit in Microsoft 365

Kaizala originated as a Microsoft Garage project that was initially deployed as a low-cost collaboration tool for the Indian market in November 2017. Microsoft made Kaizala available to Office 365 and Microsoft 365 commercial customers in April 2019 complete with plans to integrate Kaizala with Teams.

At that time, the Teams juggernaut was slowly acquiring customers. In July 2019, Microsoft reported 13 million monthly active users, a far cry from the 270 million claimed in January 2022, a huge growth ignited by the demands of the pandemic and fuelled by Microsoft’s engineering priorities.

Teams also seized Kaizala’s original mission of serving frontline workers through features like Walkie-Talkie, something that apparently attracted Walmart to choose Teams for more than 2 million frontline users. In passing, I can’t recall a single mention of Kaizala user numbers in Microsoft quarterly results over the last two years. Microsoft published occasional interesting posts, like this one discussing scaling Kaizala on Azure, but no numbers. And the Kaizala blog in the Microsoft technical community hasn’t been updated since July 1, 2020. Appropriately, the last post covers an update about Kaizala features in Teams. The lack of communication for over two years speaks volumes about the declining fortunes of Kaizala.

Removing Kaizala from User Licenses

In August 2023, Microsoft is likely to remove the Kaizala service plan from user licenses like Office 365 E3 and E5. You might like to get ahead of the game and remove the Kaizala service plans from user licenses. This code:

  • Defines variables for the identifiers for the Kaizala service plans included in Office 365 E1, E3, and E5 licenses (not shown in code extract). Details of the identifiers for service plans and licenses are available on the Microsoft product names and service plan identifiers page.
  • Runs Get-MgUser to find the set of tenant users with assigned licenses.
  • Checks each account to check what Office 365 license it has and selects the appropriate Kaizala service plan for that license.
  • Extracts the set of enabled service plans for the account and checks if the Kaizala service plan is in the set.
  • If a Kaizala service plan is present, the code updates the list of service plans to disable. The list includes any service plans that were previously disabled for the account.
  • Updates the assigned license for the account to disable the Kaizala service plan.
  • Reports on the actions taken.

The main loop in the script is shown below. You can download the latest version from GitHub.

# Find and process licensed Azure AD users
$LicenseUsers = [System.Collections.Generic.List[Object]]::new() ; $i =0
Write-Host "Searching for licensed Azure AD accounts"
[array]$Users = Get-MgUser -Filter "assignedLicenses/`$count ne 0 and userType eq 'Member'" -ConsistencyLevel eventual -CountVariable Records -All | Sort DisplayName
If (!($Users)) { Write-Host "Oddly, we can't find any licensed Azure AD users... exiting!" ; break }

ForEach ($User in $Users) {
 $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 has
 If ($Office365E3 -in $User.AssignedLicenses.SkuId) { $LicenseSkuId = $Office365E3 }
 If ($Office365E5NoConf -in $User.AssignedLicenses.SkuId)  { $LicenseSkuId = $Office365E5NoConf }
 If ($Office365E5 -in $User.AssignedLicenses.SkuId) { $LicenseSkuId = $Office365E5 }
 If ($Office365E1 -in $User.AssignedLicenses.SkuId) { $LicenseSkuId = $Office365E1 }

 # Examine service plans assigned to the account to see if they include Kaizala
 [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'}
 # Set the appropriate value for the Kaizala service plan appropriate for the license
 If ($KaizalaPlan2 -in $Licenses.ServicePlanId) { $License = "Office 365 E1"; $ServicePlanId = $KaizalaPlan2 }
 If ($KaizalaPlan3 -in $Licenses.ServicePlanId) { $License = "Office 365 E3"; $ServicePlanId = $KaizalaPlan3 }
 If ($KaizalaStandalone -in $Licenses.ServicePlanId) { $License = "Office 365 E5"; $ServicePlanId = $KaizalaStandalone }
   
 If ($License) { # Update the assigned license on the account

 # Add any previously disabled license if they exist to the Kaizala service plan and compose the license options
 [array]$DisabledSPs = $DisabledLicenses.ServicePlanId
 $DisabledSPs += $ServicePlanId

 $LicenseOptions = @{SkuId = $LicenseSkuId ; DisabledPlans = $DisabledSPs} 

 Write-Host ("Removing the Kaizala service plan from the {0} license for account {1}" -f $License, $User.DisplayName) -foregroundcolor Red
 $Status = Set-MgUserLicense -UserId $User.Id -AddLicenses $LicenseOptions -RemoveLicenses @()
 $ReportLine  = [PSCustomObject] @{
       User       = $User.DisplayName 
       UPN        = $User.UserPrincipalName
       Department = $User.Department
       Country    = $User.Country
       License    = $License } 
    $LicenseUsers.Add($ReportLine

The Microsoft product names and service plan identifiers page mentions Kaizala 54 times across all the license variants available to Microsoft 365 customers. It’s easy to adjust the code to accommodate checks against licenses like Office 365 A1, A3, A5, F1, etc.

A previous article covers a menu-driven approach to removing an individual service plan from an Azure AD license. Because Microsoft is deprecating the MSOL and Azure AD PowerShell modules, over the years, I’ve written versions using MSOL, Azure AD, and Microsoft Graph PowerShell SDK cmdlets. Naturally, the latter is the one to use. More information about using the Microsoft Graph PowerShell SDK cmdlets for license management is available here.

No Tears for Kaizala

I doubt that many customers will shed any tears at the demise of Kaizala. It’s an example of an application that seemed like a good idea at the time that lost out due to other dynamics and technological advances within and outside Microsoft. It’s good that Microsoft has taken this opportunity to simplify its collaboration offerings. Refining the role Yammer plays within Microsoft 365 is another example of making their collaboration offerings easier to understand. The sheer number of service plans and licenses available within the suite attests to the need for further simplification. 

The Microsoft 365 Kill Chain and Attack Path Management

An effective cybersecurity strategy requires a clear and comprehensive understanding of how attacks unfold. Read this whitepaper to get the expert insight you need to defend your organization!

About the Author

Tony Redmond

Tony Redmond has written thousands of articles about Microsoft technology since 1996. He is the lead author for the Office 365 for IT Pros eBook, the only book covering Office 365 that is updated monthly to keep pace with change in the cloud. Apart from contributing to Practical365.com, Tony also writes at Office365itpros.com to support the development of the eBook. He has been a Microsoft MVP since 2004.

Leave a Reply