Concurrent Exchange Online licenses.

In a recent blog post on January 20. the Exchange Team blog announced support for stacking exchange online licenses. Introducing Support for Concurrent Exchange Online License Assignments – Microsoft Community Hub

There is several benefits to this new possiblity, mostly its great when you need to change the licensing plan for a user.

For example.

User has a Exchange plan1 – could be as part of one of the Business plans – but user needs access to P2 features.

  • Additional Storage
  • DLP
  • Voicemail
  • Archive

Before this you would need to actually remove the existing Exchange Online license from the user, before adding P2 plan. This would leave the user without any license interim, with possible service impact. (Mailbox switching to inactive)

If done manually you would see this in the admin portal, when trying to assign P2 plan to the user that needs retention as an example.

With the new feature, you would add the new SKU first, and then afterwards remove the inferior license.

This task can and should be automated.

Automating license assigment

On the subject of automation – IF you run automated license assigment based on the old MSOL cmd-lets its time to upgrade – either to Graph or Group based licensing

So if your scripts look something like this:

Set-MsolUserLicense -UserPrincipalName $user.UserPrincipalName -AddLicenses "YOUR_TENANT_NAME:$licensePlan"

Its time to change – because these cmd-lets will be discontinued in March of 2023

More info on that announcement found here:

Migrate your apps to access the license managements APIs from Microsoft Graph – Microsoft Community Hub

So either switch to Group based licensing – which by far is the easiest to manage and administer – or update your scripts to use graph.

Graph assigning via script

Please note there are API permissions to set before setting up graph scripts.

Assigning and removing licenses for a user requires the User.ReadWrite.All permission scope or one of the other permissions listed in theĀ ‘Assign license’ Microsoft Graph API reference page.

For more info on the cmd-lets please refer to :

Assign Microsoft 365 licenses to user accounts with PowerShell – Microsoft 365 Enterprise | Microsoft Learn

I can also very much recommend to take a look the AWESOME work done by O365reports – they have build an entire graph based license management suite.

Manage Microsoft 365 Licenses using MS Graph PowerShell (

The reporting features alone are worth a visit.

Group based licensing

My preferred method is group bases licensing, you can use your existing synced onprem groups for this, or even better create dedicated attribute based dynamic cloud-native licensing groups

By far the most effective is to use dynamic groups, that via attributes on either device or user object assigns membership

There are a couple of benefits to this method:

  1. Automation: Dynamic groups allow you to automatically assign licenses to users based on specific criteria, such as department or job role. This eliminates the need for manual assignment and ensures that users have the appropriate licenses based on their role in the organization.
  2. Scalability: As your organization grows or changes, dynamic groups automatically update to include new users or exclude ones that no longer meet the criteria, ensuring that licenses are always assigned to the right users.
  3. Flexibility: Dynamic groups allow you to specify multiple criteria to determine group membership, giving you more flexibility in how you assign licenses. For example, you can create a group of all users in the sales department who have a specific job title, and assign them a specific license.
  4. Consistency: Dynamic groups and group-based licensing ensure that licenses are assigned consistently across the organization, reducing the risk of compliance issues and ensuring that users have the licenses they need to perform their job tasks.

But aware of the risk to assign the same license through multiple groups, as this will consume 2 licenses, so in any case its good idea to monitor your license usage, and keep track of whats assigned directly, and whats assigned inherited.

I hope this article can provide som inspiration towards moving to a more moderne way of managing licensens.

Have a great day.

Leave a Reply

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