{"id":151,"date":"2023-03-30T18:43:00","date_gmt":"2023-03-30T17:43:00","guid":{"rendered":"http:\/\/virtualnomad.nl\/?p=151"},"modified":"2023-04-03T15:05:49","modified_gmt":"2023-04-03T14:05:49","slug":"office-365-automate-licensing","status":"publish","type":"post","link":"https:\/\/virtualnomad.nl\/?p=151","title":{"rendered":"Office 365 Automate Licensing"},"content":{"rendered":"\n<p>As an automation enthusiast, I can&#8217;t help but appreciate the beauty of streamlining repetitive tasks, such as license assignment in Microsoft 365. User creation and even Office 365 license assignment can be automated with PowerShell. However, more often than not, we find ourselves manually performing these tasks, which can be error-prone.<\/p>\n\n\n\n<p>This issue is particularly challenging for medium and larger organizations, where users are created in the on-premise Active Directory. These new users need to be synced to Azure AD (which we can nudge along), followed by license assignment.<\/p>\n\n\n\n<p>But wait, there&#8217;s a twist! What if we run out of licenses? We&#8217;ll need to either increase the number of licenses or order extra through our MSP or finance department. And, as you might guess, that takes time.<\/p>\n\n\n\n<p>Once the new licenses are added, we must return to the Admin Center to assign them. This is the part I occasionally forget (nobody&#8217;s perfect, right?).<\/p>\n\n\n\n<p>So, what&#8217;s the answer to this conundrum? Simple: assign licenses to a group in Office 365! It&#8217;s like a small, helpful life hack in the world of Office365.<\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Ready, Set, How-to!<\/strong><\/p>\n\n\n\n<p>To kick off your adventure with Office 365 group-based licensing, we first need to create groups that are worthy of receiving these licenses. Fear not, you can create a (security) group in your local AD or Azure Active Directory. And hey, if you&#8217;re feeling nostalgic, you can even use existing groups, like those trusty department groups you may already have.<\/p>\n\n\n\n<p>To get started with Azure AD, follow these steps (and maybe hum your favorite tune to make it more fun):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Log in to the Azure AD Admin Center.<\/li>\n\n\n\n<li>Look left and select &#8220;Azure Active Directory.&#8221;<\/li>\n\n\n\n<li>Choose &#8220;Groups&#8221;.<\/li>\n\n\n\n<li>Click &#8220;New group&#8221; (so fresh, so clean!).<\/li>\n\n\n\n<li>Set the Group type to &#8220;Security&#8221; (safety first, folks!).<\/li>\n\n\n\n<li>Give the Group a name, for example, O365_BusinessPremium_License.<\/li>\n\n\n\n<li>Click on &#8220;Create&#8221; (and maybe give yourself a little high-five for a job well done).<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"651\" data-attachment-id=\"153\" data-permalink=\"https:\/\/virtualnomad.nl\/?attachment_id=153\" data-orig-file=\"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/msedge_bXR5QgB5Ws.png\" data-orig-size=\"1365,868\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"msedge_bXR5QgB5Ws\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/msedge_bXR5QgB5Ws-300x191.png\" data-large-file=\"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/msedge_bXR5QgB5Ws-1024x651.png\" src=\"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/msedge_bXR5QgB5Ws-1024x651.png\" alt=\"\" class=\"wp-image-153\" srcset=\"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/msedge_bXR5QgB5Ws-1024x651.png 1024w, https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/msedge_bXR5QgB5Ws-300x191.png 300w, https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/msedge_bXR5QgB5Ws-768x488.png 768w, https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/msedge_bXR5QgB5Ws-850x541.png 850w, https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/msedge_bXR5QgB5Ws.png 1365w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Adding users to the Group<\/strong><\/p>\n\n\n\n<p>I had Office 365 Business Premium licenses directly assigned to users, so I decided to whip up a nifty little PowerShell script to gather all users with E3 licenses and add them to the new security group (because, why not?).<\/p>\n\n\n\n<p>To get started, make sure you have the <a href=\"https:\/\/learn.microsoft.com\/en-us\/microsoft-365\/enterprise\/connect-to-microsoft-365-powershell?view=o365-worldwide\" target=\"_blank\" rel=\"noreferrer noopener\">Microsoft Online Service module <\/a>installed for PowerShell. We&#8217;ll first need to retrieve the AccountSkuId for the license we want to assign.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"\" style=\"font-size:.875rem;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:7.6999969482421875px;line-height:1.25rem\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#39404f;color:#c8d0e0\">PowerShell<\/span><span role=\"button\" tabindex=\"0\" data-code=\"# Connect to Microsoft Online Service\nconnect-MsolService\n\n# Get all AccountSkuIds\nGet-MsolAccountSku\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #616E88\"># Connect to Microsoft Online Service<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">connect-MsolService<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Get all AccountSkuIds<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">Get-MsolAccountSku<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>The AccountSkuId is a buildup of your tenant name and a product ID. For Office 365 E3 for example, it&#8217;s SPE E3, and for Microsoft 365 Business Premium, it&#8217;s SPB (fancy, right?).<\/p>\n\n\n\n<p>Next up, let&#8217;s corral all those users with Business Premium licenses and add them to our shiny new group. If you&#8217;re using an on-premise Active Directory, use the script below;<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"\" style=\"font-size:.875rem;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:15.400002002716064px;line-height:1.25rem\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#39404f;color:#c8d0e0\">PowerShell<\/span><span role=\"button\" tabindex=\"0\" data-code=\"$msolUsers = Get-MsolUser -EnabledFilter EnabledOnly | Where-Object {($_.licenses).AccountSkuId -eq 'virtualnomad:SPB'} \n\nForEach ($user in $msolUsers) {\n  try {\n    $ADUser = Get-ADUser -filter {UserPrincipalName -eq $user.UserPrincipalName} -ErrorAction stop\n\n    Add-ADGroupMember -Identity O365_BusinessPremium_License -Members $ADUser -ErrorAction stop\n\n    [PSCustomObject]@{\n      UserPrincipalName = $user.UserPrincipalName\n      Migrate           = $true\n    }\n  }\n  catch {\n      [PSCustomObject]@{\n      UserPrincipalName = $user.UserPrincipalName\n      Migrate           = $false\n    }\n  }\n}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">msolUsers<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">Get-MsolUser<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">EnabledFilter EnabledOnly <\/span><span style=\"color: #81A1C1\">|<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">Where-Object<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{(<\/span><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9FF\">_<\/span><span style=\"color: #D8DEE9\">.licenses<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">.AccountSkuId <\/span><span style=\"color: #81A1C1\">-eq<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">virtualnomad:SPB<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">}<\/span><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">ForEach<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">user<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">msolUsers<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #81A1C1\">try<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">ADUser<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">Get-ADUser<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">filter <\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\">UserPrincipalName <\/span><span style=\"color: #81A1C1\">-eq<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">user.UserPrincipalName<\/span><span style=\"color: #ECEFF4\">}<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">ErrorAction stop<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">Add-ADGroupMember<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">Identity O365_BusinessPremium_License <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">Members <\/span><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">ADUser<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">ErrorAction stop<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #81A1C1\">PSCustomObject<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #81A1C1\">@<\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      <\/span><span style=\"color: #D8DEE9\">UserPrincipalName<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">user.UserPrincipalName<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      <\/span><span style=\"color: #D8DEE9\">Migrate<\/span><span style=\"color: #D8DEE9FF\">           <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">$true<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #81A1C1\">catch<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #81A1C1\">PSCustomObject<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #81A1C1\">@<\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      <\/span><span style=\"color: #D8DEE9\">UserPrincipalName<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">user.UserPrincipalName<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      <\/span><span style=\"color: #D8DEE9\">Migrate<\/span><span style=\"color: #D8DEE9FF\">           <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">$false<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>For those of you basking in the Azure Active Directory glow, here&#8217;s the script you&#8217;ll need:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"\" style=\"font-size:.875rem;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:15.400002002716064px;line-height:1.25rem\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#39404f;color:#c8d0e0\">PowerShell<\/span><span role=\"button\" tabindex=\"0\" data-code=\"# Get all users with the Office 365 E3 license\n$msolUsers = Get-MsolUser -EnabledFilter EnabledOnly | Where-Object {($_.licenses).AccountSkuId -eq 'virtualnomad:SPB'} | Select DisplayName,UserPrincipalName,ObjectId\n\n# Get the Group Id of your new Group. Change searchString to your new group name\n$groupId = Get-MsolGroup -SearchString O365_BusinessPremium_License | select ObjectId\n\nForEach ($user in $msolUsers) {\n  try {\n    # Try to add the user to the new group\n    Add-MsolGroupMember -GroupObjectId $groupId.ObjectId -GroupMemberType User -GroupMemberObjectId $user.ObjectId -ErrorAction stop\n\n    [PSCustomObject]@{\n      UserPrincipalName = $user.UserPrincipalName\n      Migrated          = $true\n    }\n  }\n  catch {\n      [PSCustomObject]@{\n      UserPrincipalName = $user.UserPrincipalName\n      Migrated          = $false\n    }\n  }\n}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\"><code><span class=\"line\"><span style=\"color: #616E88\"># Get all users with the Office 365 E3 license<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">msolUsers<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">Get-MsolUser<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">EnabledFilter EnabledOnly <\/span><span style=\"color: #81A1C1\">|<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">Where-Object<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{(<\/span><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9FF\">_<\/span><span style=\"color: #D8DEE9\">.licenses<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">.AccountSkuId <\/span><span style=\"color: #81A1C1\">-eq<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">virtualnomad:SPB<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">}<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">|<\/span><span style=\"color: #D8DEE9FF\"> Select DisplayName<\/span><span style=\"color: #81A1C1\">,<\/span><span style=\"color: #D8DEE9FF\">UserPrincipalName<\/span><span style=\"color: #81A1C1\">,<\/span><span style=\"color: #D8DEE9FF\">ObjectId<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Get the Group Id of your new Group. Change searchString to your new group name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">groupId<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">Get-MsolGroup<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">SearchString O365_BusinessPremium_License <\/span><span style=\"color: #81A1C1\">|<\/span><span style=\"color: #D8DEE9FF\"> select ObjectId<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">ForEach<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">user<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">msolUsers<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #81A1C1\">try<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #616E88\"># Try to add the user to the new group<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">Add-MsolGroupMember<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">GroupObjectId <\/span><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">groupId.ObjectId<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">GroupMemberType User <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">GroupMemberObjectId <\/span><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">user.ObjectId<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">ErrorAction stop<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #81A1C1\">PSCustomObject<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #81A1C1\">@<\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      <\/span><span style=\"color: #D8DEE9\">UserPrincipalName<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">user.UserPrincipalName<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      <\/span><span style=\"color: #D8DEE9\">Migrated<\/span><span style=\"color: #D8DEE9FF\">          <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">$true<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #81A1C1\">catch<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #81A1C1\">PSCustomObject<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #81A1C1\">@<\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      <\/span><span style=\"color: #D8DEE9\">UserPrincipalName<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9\">user.UserPrincipalName<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      <\/span><span style=\"color: #D8DEE9\">Migrated<\/span><span style=\"color: #D8DEE9FF\">          <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">$false<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Office 365 Group-Based Licensing: The Fun Way<\/strong><\/p>\n\n\n\n<p>With the new group created and users either copied or manually added, we can now begin the exciting task of assigning Office 365 licenses to the group. Here&#8217;s how:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Log in to Azure AD Admin Center at http:\/\/portal.azure.com<\/li>\n\n\n\n<li>Open &#8220;Groups&#8221; (found under Azure Active Directory on the left side).<\/li>\n\n\n\n<li>Open your shiny new group and select &#8220;Licenses.&#8221;<\/li>\n\n\n\n<li>Choose &#8220;Assignments&#8221; to assign a new license (feeling the power yet?).<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full is-resized is-style-default\"><img decoding=\"async\" data-attachment-id=\"155\" data-permalink=\"https:\/\/virtualnomad.nl\/?attachment_id=155\" data-orig-file=\"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/p2lptTYXcc.png\" data-orig-size=\"959,648\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"p2lptTYXcc\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/p2lptTYXcc-300x203.png\" data-large-file=\"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/p2lptTYXcc.png\" src=\"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/p2lptTYXcc.png\" alt=\"\" class=\"wp-image-155\" width=\"719\" height=\"486\" srcset=\"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/p2lptTYXcc.png 959w, https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/p2lptTYXcc-300x203.png 300w, https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/p2lptTYXcc-768x519.png 768w, https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/p2lptTYXcc-850x574.png 850w\" sizes=\"(max-width: 719px) 100vw, 719px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pick the license you want to assign to the group (choose wisely).<\/li>\n\n\n\n<li>Optionally, tweak the license services; for instance, remove Yammer or Sway if they&#8217;re not your cup of tea.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"669\" data-attachment-id=\"156\" data-permalink=\"https:\/\/virtualnomad.nl\/?attachment_id=156\" data-orig-file=\"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/87kcvWSAYM.png\" data-orig-size=\"1160,758\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"87kcvWSAYM\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/87kcvWSAYM-300x196.png\" data-large-file=\"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/87kcvWSAYM-1024x669.png\" src=\"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/87kcvWSAYM-1024x669.png\" alt=\"\" class=\"wp-image-156\" srcset=\"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/87kcvWSAYM-1024x669.png 1024w, https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/87kcvWSAYM-300x196.png 300w, https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/87kcvWSAYM-768x502.png 768w, https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/87kcvWSAYM-350x230.png 350w, https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/87kcvWSAYM-850x555.png 850w, https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/87kcvWSAYM.png 1160w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Click &#8220;Save&#8221; and close the license screen (take a bow, you&#8217;re done!).<\/li>\n<\/ul>\n\n\n\n<p>Allow a few minutes for users to be processed. After a quick refresh, you&#8217;ll see that the license changes have been applied. Voil\u00e0!<\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Next up: Inherited vs. Direct Licenses<\/strong><\/p>\n\n\n\n<p>Users can have directly assigned licenses and inherited ones. Direct licenses are manually assigned, while inherited licenses come from group membership.<\/p>\n\n\n\n<p>If users already have direct licenses, you&#8217;ll want to remove them. This ensures that if you remove users from the group later, they won&#8217;t keep the directly assigned license.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Open Azure Active Directory in Azure AD Admin Center.<\/li>\n\n\n\n<li>Select &#8220;Licenses&#8221; \u2192 &#8220;All Products.&#8221;<\/li>\n\n\n\n<li>Open the license you just assigned to the group.<\/li>\n<\/ul>\n\n\n\n<p>You&#8217;ll now see a list of licensed users and their Assignment Paths, indicating whether their licenses are Direct or Inherited. Select users with both direct and inherited licenses, then click &#8220;Remove License&#8221; to remove the direct one. Users won&#8217;t notice any changes, provided the license and services stay the same. Otherwise, test this with a small group first.<\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>The Grand Finale<\/strong><\/p>\n\n\n\n<p>Users can be assigned to multiple groups, offering more flexibility in Microsoft 365 license assignments. Office 365 Group-Based Licensing is easy to set up and eliminates yet another manual step in user management.<\/p>\n\n\n\n<p>Got questions? Feel free to drop a comment below.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As an automation enthusiast, I can&#8217;t help but appreciate the beauty of streamlining repetitive tasks, such as license assignment in Microsoft 365. User creation and even Office 365 license assignment can be automated with PowerShell. However, more often than not, we find ourselves manually performing these tasks, which can be error-prone. This issue is particularly&#8230;<\/p>\n","protected":false},"author":1,"featured_media":158,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[4],"tags":[8,7],"class_list":["post-151","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-office-365","tag-license","tag-o365"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Office 365 Automate Licensing - Virtual Nomad<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/virtualnomad.nl\/?p=151\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Office 365 Automate Licensing - Virtual Nomad\" \/>\n<meta property=\"og:description\" content=\"As an automation enthusiast, I can&#8217;t help but appreciate the beauty of streamlining repetitive tasks, such as license assignment in Microsoft 365. User creation and even Office 365 license assignment can be automated with PowerShell. However, more often than not, we find ourselves manually performing these tasks, which can be error-prone. This issue is particularly...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/virtualnomad.nl\/?p=151\" \/>\n<meta property=\"og:site_name\" content=\"Virtual Nomad\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-30T17:43:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-04-03T14:05:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/images.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"300\" \/>\n\t<meta property=\"og:image:height\" content=\"168\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Arno Geboers\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Arno Geboers\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/virtualnomad.nl\\\/?p=151#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/virtualnomad.nl\\\/?p=151\"},\"author\":{\"name\":\"Arno Geboers\",\"@id\":\"https:\\\/\\\/virtualnomad.nl\\\/#\\\/schema\\\/person\\\/3c08ee70c43dfd351fe038a7f6038d3b\"},\"headline\":\"Office 365 Automate Licensing\",\"datePublished\":\"2023-03-30T17:43:00+00:00\",\"dateModified\":\"2023-04-03T14:05:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/virtualnomad.nl\\\/?p=151\"},\"wordCount\":815,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/virtualnomad.nl\\\/#\\\/schema\\\/person\\\/3c08ee70c43dfd351fe038a7f6038d3b\"},\"image\":{\"@id\":\"https:\\\/\\\/virtualnomad.nl\\\/?p=151#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/virtualnomad.nl\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/images.jpg\",\"keywords\":[\"license\",\"O365\"],\"articleSection\":[\"Office 365\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/virtualnomad.nl\\\/?p=151#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/virtualnomad.nl\\\/?p=151\",\"url\":\"https:\\\/\\\/virtualnomad.nl\\\/?p=151\",\"name\":\"Office 365 Automate Licensing - Virtual Nomad\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/virtualnomad.nl\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/virtualnomad.nl\\\/?p=151#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/virtualnomad.nl\\\/?p=151#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/virtualnomad.nl\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/images.jpg\",\"datePublished\":\"2023-03-30T17:43:00+00:00\",\"dateModified\":\"2023-04-03T14:05:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/virtualnomad.nl\\\/?p=151#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/virtualnomad.nl\\\/?p=151\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/virtualnomad.nl\\\/?p=151#primaryimage\",\"url\":\"https:\\\/\\\/virtualnomad.nl\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/images.jpg\",\"contentUrl\":\"https:\\\/\\\/virtualnomad.nl\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/images.jpg\",\"width\":300,\"height\":168},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/virtualnomad.nl\\\/?p=151#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/virtualnomad.nl\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Office 365 Automate Licensing\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/virtualnomad.nl\\\/#website\",\"url\":\"https:\\\/\\\/virtualnomad.nl\\\/\",\"name\":\"Virtual Nomad\",\"description\":\"a blog about the knowledge journey in Office 365 and Azure\",\"publisher\":{\"@id\":\"https:\\\/\\\/virtualnomad.nl\\\/#\\\/schema\\\/person\\\/3c08ee70c43dfd351fe038a7f6038d3b\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/virtualnomad.nl\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/virtualnomad.nl\\\/#\\\/schema\\\/person\\\/3c08ee70c43dfd351fe038a7f6038d3b\",\"name\":\"Arno Geboers\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/virtualnomad.nl\\\/wp-content\\\/uploads\\\/2023\\\/03\\\/cropped-cropped-AdobeStock_225103676-min.jpg\",\"url\":\"https:\\\/\\\/virtualnomad.nl\\\/wp-content\\\/uploads\\\/2023\\\/03\\\/cropped-cropped-AdobeStock_225103676-min.jpg\",\"contentUrl\":\"https:\\\/\\\/virtualnomad.nl\\\/wp-content\\\/uploads\\\/2023\\\/03\\\/cropped-cropped-AdobeStock_225103676-min.jpg\",\"width\":239,\"height\":178,\"caption\":\"Arno Geboers\"},\"logo\":{\"@id\":\"https:\\\/\\\/virtualnomad.nl\\\/wp-content\\\/uploads\\\/2023\\\/03\\\/cropped-cropped-AdobeStock_225103676-min.jpg\"},\"sameAs\":[\"http:\\\/\\\/virtualnomad.nl\"],\"url\":\"https:\\\/\\\/virtualnomad.nl\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Office 365 Automate Licensing - Virtual Nomad","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/virtualnomad.nl\/?p=151","og_locale":"en_US","og_type":"article","og_title":"Office 365 Automate Licensing - Virtual Nomad","og_description":"As an automation enthusiast, I can&#8217;t help but appreciate the beauty of streamlining repetitive tasks, such as license assignment in Microsoft 365. User creation and even Office 365 license assignment can be automated with PowerShell. However, more often than not, we find ourselves manually performing these tasks, which can be error-prone. This issue is particularly...","og_url":"https:\/\/virtualnomad.nl\/?p=151","og_site_name":"Virtual Nomad","article_published_time":"2023-03-30T17:43:00+00:00","article_modified_time":"2023-04-03T14:05:49+00:00","og_image":[{"width":300,"height":168,"url":"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/images.jpg","type":"image\/jpeg"}],"author":"Arno Geboers","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Arno Geboers","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/virtualnomad.nl\/?p=151#article","isPartOf":{"@id":"https:\/\/virtualnomad.nl\/?p=151"},"author":{"name":"Arno Geboers","@id":"https:\/\/virtualnomad.nl\/#\/schema\/person\/3c08ee70c43dfd351fe038a7f6038d3b"},"headline":"Office 365 Automate Licensing","datePublished":"2023-03-30T17:43:00+00:00","dateModified":"2023-04-03T14:05:49+00:00","mainEntityOfPage":{"@id":"https:\/\/virtualnomad.nl\/?p=151"},"wordCount":815,"commentCount":0,"publisher":{"@id":"https:\/\/virtualnomad.nl\/#\/schema\/person\/3c08ee70c43dfd351fe038a7f6038d3b"},"image":{"@id":"https:\/\/virtualnomad.nl\/?p=151#primaryimage"},"thumbnailUrl":"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/images.jpg","keywords":["license","O365"],"articleSection":["Office 365"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/virtualnomad.nl\/?p=151#respond"]}]},{"@type":"WebPage","@id":"https:\/\/virtualnomad.nl\/?p=151","url":"https:\/\/virtualnomad.nl\/?p=151","name":"Office 365 Automate Licensing - Virtual Nomad","isPartOf":{"@id":"https:\/\/virtualnomad.nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/virtualnomad.nl\/?p=151#primaryimage"},"image":{"@id":"https:\/\/virtualnomad.nl\/?p=151#primaryimage"},"thumbnailUrl":"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/images.jpg","datePublished":"2023-03-30T17:43:00+00:00","dateModified":"2023-04-03T14:05:49+00:00","breadcrumb":{"@id":"https:\/\/virtualnomad.nl\/?p=151#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/virtualnomad.nl\/?p=151"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/virtualnomad.nl\/?p=151#primaryimage","url":"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/images.jpg","contentUrl":"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/images.jpg","width":300,"height":168},{"@type":"BreadcrumbList","@id":"https:\/\/virtualnomad.nl\/?p=151#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/virtualnomad.nl\/"},{"@type":"ListItem","position":2,"name":"Office 365 Automate Licensing"}]},{"@type":"WebSite","@id":"https:\/\/virtualnomad.nl\/#website","url":"https:\/\/virtualnomad.nl\/","name":"Virtual Nomad","description":"a blog about the knowledge journey in Office 365 and Azure","publisher":{"@id":"https:\/\/virtualnomad.nl\/#\/schema\/person\/3c08ee70c43dfd351fe038a7f6038d3b"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/virtualnomad.nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/virtualnomad.nl\/#\/schema\/person\/3c08ee70c43dfd351fe038a7f6038d3b","name":"Arno Geboers","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/03\/cropped-cropped-AdobeStock_225103676-min.jpg","url":"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/03\/cropped-cropped-AdobeStock_225103676-min.jpg","contentUrl":"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/03\/cropped-cropped-AdobeStock_225103676-min.jpg","width":239,"height":178,"caption":"Arno Geboers"},"logo":{"@id":"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/03\/cropped-cropped-AdobeStock_225103676-min.jpg"},"sameAs":["http:\/\/virtualnomad.nl"],"url":"https:\/\/virtualnomad.nl\/?author=1"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/virtualnomad.nl\/wp-content\/uploads\/2023\/04\/images.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/virtualnomad.nl\/index.php?rest_route=\/wp\/v2\/posts\/151","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/virtualnomad.nl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/virtualnomad.nl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/virtualnomad.nl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/virtualnomad.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=151"}],"version-history":[{"count":0,"href":"https:\/\/virtualnomad.nl\/index.php?rest_route=\/wp\/v2\/posts\/151\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/virtualnomad.nl\/index.php?rest_route=\/wp\/v2\/media\/158"}],"wp:attachment":[{"href":"https:\/\/virtualnomad.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=151"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/virtualnomad.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=151"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/virtualnomad.nl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=151"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}