One of the impressive things about Office 365 Groups is how quickly Microsoft development groups turned to Groups to use their simple membership model instead of creating their own application-specific implementation. The premier list of Office 365 applications that use Groups include Stream, SharePoint Online, Power BI, Planner, Yammer, and Teams.
All of which is great, but administrators sometimes want to know what resources a group is connected to, such as whether a group is connected to a team or Planner. The sad fact is that there’s no good way to make a simple PowerShell query to return this information.
Some people advocate looking at the ProvisioningOption property returned by the Get-UnifiedGroup cmdlet. This will tell you if Yammer created a group because the value of the property is then set to “YammerProvisioning.”
[Update – January 9, 2019: Microsoft has updated the Get-UnifiedGroup cmdlet to remove the ProvisioningOption property.]
The Many Values Created by Exchange
However, when an Exchange client (including the New-UnifiedGroup PowerShell cmdlet) creates a new Office 365 Group, you end up with some explainable values in the property. Here’s a selection of what I find in my own tenant:
ExchangeProvisioningFlags:2028
ExchangeProvisioningFlags:2020
ExchangeProvisioningFlags:2529
ExchangeProvisioningFlags:3552
ExchangeProvisioningFlags:227
ExchangeProvisioningFlags:481
Worse, you might find that the property doesn’t have a value. I accept that this might be the case for older groups (those created in 2016 or before), but even newly-created groups sometimes have a blank value for ProvisioningOption.
The profusion of different values or the lack of a value makes it hard to depend on the ProvisioningOption for anything, including listing Office 365 Groups that are team-enabled, which is probably the most frequent request when it comes to figuring out what resources belong to a group.
Microsoft’s Warning
The Office 365 Groups marketing manager, Christophe Fiessinger, said in 2017 that “Using ExchangeProvisioningOption is NOT recommended since not all apps leverage it.” Not much has changed since and there’s no word from the engineering group that they might have done anything to improve the situation.
Use Get-Team to See Team-Enabled Groups
Since the original post was written, Microsoft has updated the PowerShell module for Teams. Running the latest version of the Get-Team cmdlet without any parameters returns the set of team-enabled groups in a tenant. This eliminates any need to jump through hoops to figure out a list of teams by checking the properties of groups, looking for team compliance records in the group mailbox, and so on.
Use the Graph Too
If you don’t want to limit yourself to PowerShell, the Microsoft Graph is the fastest method to fetch a set of Teams-enabled groups in a tenant. Here’s an example of using the Graph to fetch Teams. Remember that if you have more than 100 Teams in a tenant, you must use pagination to fetch the team information from the Graph. This post tells you how.
Lots has changed since the original post for this topic appeared in September 2018. Do yourself a favor and keep up to date with the latest in Office 365 by subscribing to the Office 365 for IT Pros eBook. All the information about using the Get-Team cmdlet is in Chapter 14.
9 Replies to “Office 365 Groups and the ProvisioningOption property”
Hi Tony, can you elaborate more on the removal of the ProvisioningOption property? Where did Microsoft officially state this and what alternatives are recommended? Thanks
I have a client with multiple Office 365 groups that are not appearing in the Teams & Skype Admin Panel nor do they appear the MicrosoftTeams powershell module “Get-Team” and neither in Outlook as groups. In order to have them appear again under Teams & Skype Admin panel and Powershell I had to use Graph Explorer to set the property “resourceProvisioningOptions” to “Team” for these groups.
After that, the teams appeared in Teams & Skype Admin Panel and in powershell. I also did Set-UniversalGroup -HiddenFromExchangeClients:$False to have them appear in Outlook.
Sounds good that they’ve acknowledged and are fixing it.
In the meantime I made a little script that checks the O365 Groups against the Teams and finds out which are missing, in a neat colored output. I checked our customer/clients groups yesterday, still not patched on their end.
$groups=Get-UnifiedGroup
$teams=Get-Team
write-host (“{0,-70}{1,-70}{2,-30}” -f “Group”,”Result”,”HiddenFromExchangeClientsEnabled”) -ForegroundColor White -BackgroundColor Blue
foreach ($group in $groups) {
if ($group.DisplayName -notin $teams.DisplayName) {
Write-host (“{0,-70}” -f $($Group.DisplayName) ) -ForegroundColor Cyan -NoNewline;Write-host (“{0,-70}” -f “Not appearing in Teams PS-Module or Teams & Skype Admin Panel”) -ForegroundColor Red -NoNewline; Write-Host (“{0,-30}” -f $($Group.HiddenFromExchangeClientsEnabled) ) -ForegroundColor Yellow
}
if ($group.DisplayName -in $teams.DisplayName) {
Write-host (“{0,-70}” -f $($Group.DisplayName) ) -ForegroundColor Cyan -NoNewline;Write-host (“{0,-70}” -f “Appears in Teams PS-Module and Teams & Skype Admin Panel”) -ForegroundColor Green -NoNewline;Write-Host (“{0,-30}” -f $($Group.HiddenFromExchangeClientsEnabled) ) -ForegroundColor Yellow
}
}
And yes of course, indeed I meant Set-UnifiedGroup. Haha!
Loading...
Nice work… But I do want to make the point that it is perfectly normal for an Office 365 group used by a team to be hidden from Exchange clients. In fact, this is the default condition since April 2018 (approx.).
Loading...
Sounds good that they’ve acknowledged and are fixing it.
In the meantime I made a little script that checks the O365 Groups against the Teams and finds out which are missing, in a neat colored output. I checked our customer/clients groups yesterday, still not patched on their end.
$groups=Get-UnifiedGroup
$teams=Get-Team
write-host (“{0,-70}{1,-70}{2,-30}” -f “Group”,”Result”,”HiddenFromExchangeClientsEnabled”) -ForegroundColor White -BackgroundColor Blue
foreach ($group in $groups) {
if ($group.DisplayName -notin $teams.DisplayName) {
Write-host (“{0,-70}” -f $($Group.DisplayName) ) -ForegroundColor Cyan -NoNewline;Write-host (“{0,-70}” -f “Not appearing in Teams PS-Module or Teams & Skype Admin Panel”) -ForegroundColor Red -NoNewline; Write-Host (“{0,-30}” -f $($Group.HiddenFromExchangeClientsEnabled) ) -ForegroundColor Yellow
}
if ($group.DisplayName -in $teams.DisplayName) {
Write-host (“{0,-70}” -f $($Group.DisplayName) ) -ForegroundColor Cyan -NoNewline;Write-host (“{0,-70}” -f “Appears in Teams PS-Module and Teams & Skype Admin Panel”) -ForegroundColor Green -NoNewline;Write-Host (“{0,-30}” -f $($Group.HiddenFromExchangeClientsEnabled) ) -ForegroundColor Yellow
}
}
And yes of course, indeed I meant Set-UnifiedGroup. Haha!
{"id":null,"mode":"button","open_style":"in_modal","currency_code":"EUR","currency_symbol":"\u20ac","currency_type":"decimal","blank_flag_url":"https:\/\/office365itpros.com\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/blank.gif","flag_sprite_url":"https:\/\/office365itpros.com\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/flags.png","default_amount":100,"top_media_type":"featured_image","featured_image_url":"https:\/\/office365itpros.com\/wp-content\/uploads\/2022\/11\/cover-141x200.jpg","featured_embed":"","header_media":null,"file_download_attachment_data":null,"recurring_options_enabled":true,"recurring_options":{"never":{"selected":true,"after_output":"One time only"},"weekly":{"selected":false,"after_output":"Every week"},"monthly":{"selected":false,"after_output":"Every month"},"yearly":{"selected":false,"after_output":"Every year"}},"strings":{"current_user_email":"","current_user_name":"","link_text":"Virtual Tip Jar","complete_payment_button_error_text":"Check info and try again","payment_verb":"Pay","payment_request_label":"Office 365 for IT Pros","form_has_an_error":"Please check and fix the errors above","general_server_error":"Something isn't working right at the moment. Please try again.","form_title":"Office 365 for IT Pros","form_subtitle":null,"currency_search_text":"Country or Currency here","other_payment_option":"Other payment option","manage_payments_button_text":"Manage your payments","thank_you_message":"Thank you for supporting the work of Office 365 for IT Pros!","payment_confirmation_title":"Office 365 for IT Pros","receipt_title":"Your Receipt","print_receipt":"Print Receipt","email_receipt":"Email Receipt","email_receipt_sending":"Sending receipt...","email_receipt_success":"Email receipt successfully sent","email_receipt_failed":"Email receipt failed to send. Please try again.","receipt_payee":"Paid to","receipt_statement_descriptor":"This will show up on your statement as","receipt_date":"Date","receipt_transaction_id":"Transaction ID","receipt_transaction_amount":"Amount","refund_payer":"Refund from","login":"Log in to manage your payments","manage_payments":"Manage Payments","transactions_title":"Your Transactions","transaction_title":"Transaction Receipt","transaction_period":"Plan Period","arrangements_title":"Your Plans","arrangement_title":"Manage Plan","arrangement_details":"Plan Details","arrangement_id_title":"Plan ID","arrangement_payment_method_title":"Payment Method","arrangement_amount_title":"Plan Amount","arrangement_renewal_title":"Next renewal date","arrangement_action_cancel":"Cancel Plan","arrangement_action_cant_cancel":"Cancelling is currently not available.","arrangement_action_cancel_double":"Are you sure you'd like to cancel?","arrangement_cancelling":"Cancelling Plan...","arrangement_cancelled":"Plan Cancelled","arrangement_failed_to_cancel":"Failed to cancel plan","back_to_plans":"\u2190 Back to Plans","update_payment_method_verb":"Update","sca_auth_description":"Your have a pending renewal payment which requires authorization.","sca_auth_verb":"Authorize renewal payment","sca_authing_verb":"Authorizing payment","sca_authed_verb":"Payment successfully authorized!","sca_auth_failed":"Unable to authorize! Please try again.","login_button_text":"Log in","login_form_has_an_error":"Please check and fix the errors above","uppercase_search":"Search","lowercase_search":"search","uppercase_page":"Page","lowercase_page":"page","uppercase_items":"Items","lowercase_items":"items","uppercase_per":"Per","lowercase_per":"per","uppercase_of":"Of","lowercase_of":"of","back":"Back to plans","zip_code_placeholder":"Zip\/Postal Code","download_file_button_text":"Download File","input_field_instructions":{"tip_amount":{"placeholder_text":"How much would you like to tip?","initial":{"instruction_type":"normal","instruction_message":"How much would you like to tip? Choose any currency."},"empty":{"instruction_type":"error","instruction_message":"How much would you like to tip? Choose any currency."},"invalid_curency":{"instruction_type":"error","instruction_message":"Please choose a valid currency."}},"recurring":{"placeholder_text":"Recurring","initial":{"instruction_type":"normal","instruction_message":"How often would you like to give this?"},"success":{"instruction_type":"success","instruction_message":"How often would you like to give this?"},"empty":{"instruction_type":"error","instruction_message":"How often would you like to give this?"}},"name":{"placeholder_text":"Name on Credit Card","initial":{"instruction_type":"normal","instruction_message":"Enter the name on your card."},"success":{"instruction_type":"success","instruction_message":"Enter the name on your card."},"empty":{"instruction_type":"error","instruction_message":"Please enter the name on your card."}},"privacy_policy":{"terms_title":"Terms and conditions","terms_body":null,"terms_show_text":"View Terms","terms_hide_text":"Hide Terms","initial":{"instruction_type":"normal","instruction_message":"I agree to the terms."},"unchecked":{"instruction_type":"error","instruction_message":"Please agree to the terms."},"checked":{"instruction_type":"success","instruction_message":"I agree to the terms."}},"email":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email address"},"success":{"instruction_type":"success","instruction_message":"Enter your email address"},"blank":{"instruction_type":"error","instruction_message":"Enter your email address"},"not_an_email_address":{"instruction_type":"error","instruction_message":"Make sure you have entered a valid email address"}},"note_with_tip":{"placeholder_text":"Your note here...","initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"empty":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"not_empty_initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"saving":{"instruction_type":"normal","instruction_message":"Saving note..."},"success":{"instruction_type":"success","instruction_message":"Note successfully saved!"},"error":{"instruction_type":"error","instruction_message":"Unable to save note note at this time. Please try again."}},"email_for_login_code":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email to log in."},"success":{"instruction_type":"success","instruction_message":"Enter your email to log in."},"blank":{"instruction_type":"error","instruction_message":"Enter your email to log in."},"empty":{"instruction_type":"error","instruction_message":"Enter your email to log in."}},"login_code":{"initial":{"instruction_type":"normal","instruction_message":"Check your email and enter the login code."},"success":{"instruction_type":"success","instruction_message":"Check your email and enter the login code."},"blank":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."},"empty":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."}},"stripe_all_in_one":{"initial":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"empty":{"instruction_type":"error","instruction_message":"Enter your credit card details here."},"success":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"invalid_number":{"instruction_type":"error","instruction_message":"The card number is not a valid credit card number."},"invalid_expiry_month":{"instruction_type":"error","instruction_message":"The card's expiration month is invalid."},"invalid_expiry_year":{"instruction_type":"error","instruction_message":"The card's expiration year is invalid."},"invalid_cvc":{"instruction_type":"error","instruction_message":"The card's security code is invalid."},"incorrect_number":{"instruction_type":"error","instruction_message":"The card number is incorrect."},"incomplete_number":{"instruction_type":"error","instruction_message":"The card number is incomplete."},"incomplete_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incomplete."},"incomplete_expiry":{"instruction_type":"error","instruction_message":"The card's expiration date is incomplete."},"incomplete_zip":{"instruction_type":"error","instruction_message":"The card's zip code is incomplete."},"expired_card":{"instruction_type":"error","instruction_message":"The card has expired."},"incorrect_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incorrect."},"incorrect_zip":{"instruction_type":"error","instruction_message":"The card's zip code failed validation."},"invalid_expiry_year_past":{"instruction_type":"error","instruction_message":"The card's expiration year is in the past"},"card_declined":{"instruction_type":"error","instruction_message":"The card was declined."},"missing":{"instruction_type":"error","instruction_message":"There is no card on a customer that is being charged."},"processing_error":{"instruction_type":"error","instruction_message":"An error occurred while processing the card."},"invalid_request_error":{"instruction_type":"error","instruction_message":"Unable to process this payment, please try again or use alternative method."},"invalid_sofort_country":{"instruction_type":"error","instruction_message":"The billing country is not accepted by SOFORT. Please try another country."}}}},"fetched_oembed_html":false}
Hi Tony, can you elaborate more on the removal of the ProvisioningOption property? Where did Microsoft officially state this and what alternatives are recommended? Thanks
Microsoft gave an indication that they would remove the property at Ignite. What were you trying to use it for?
Thanks for clarifying the origin of the source.
I have a client with multiple Office 365 groups that are not appearing in the Teams & Skype Admin Panel nor do they appear the MicrosoftTeams powershell module “Get-Team” and neither in Outlook as groups. In order to have them appear again under Teams & Skype Admin panel and Powershell I had to use Graph Explorer to set the property “resourceProvisioningOptions” to “Team” for these groups.
E.g
Request Type: PATCH
https://graph.microsoft.com/v1.0/groups/{group-id}/
Request Body:
{
“resourceProvisioningOptions”: [
“Team”
]
}
After that, the teams appeared in Teams & Skype Admin Panel and in powershell. I also did Set-UniversalGroup -HiddenFromExchangeClients:$False to have them appear in Outlook.
There’s an acknowledged problem with some Teams that Microsoft is backfilling at the moment to update their properties so that they appear in the Teams and Skype for Business Online Admin Center. I mentioned this in https://office365itpros.com/2019/01/18/office365-bits-pieces-january-2019/
I think you used Set-UnifiedGroup rather than Set-UniversalGroup? BTW, having Teams hidden from Exchange clients is quite deliberate. See https://www.petri.com/hiding-office-365-groups-exchange-clients
Sounds good that they’ve acknowledged and are fixing it.
In the meantime I made a little script that checks the O365 Groups against the Teams and finds out which are missing, in a neat colored output. I checked our customer/clients groups yesterday, still not patched on their end.
$groups=Get-UnifiedGroup
$teams=Get-Team
write-host (“{0,-70}{1,-70}{2,-30}” -f “Group”,”Result”,”HiddenFromExchangeClientsEnabled”) -ForegroundColor White -BackgroundColor Blue
foreach ($group in $groups) {
if ($group.DisplayName -notin $teams.DisplayName) {
Write-host (“{0,-70}” -f $($Group.DisplayName) ) -ForegroundColor Cyan -NoNewline;Write-host (“{0,-70}” -f “Not appearing in Teams PS-Module or Teams & Skype Admin Panel”) -ForegroundColor Red -NoNewline; Write-Host (“{0,-30}” -f $($Group.HiddenFromExchangeClientsEnabled) ) -ForegroundColor Yellow
}
if ($group.DisplayName -in $teams.DisplayName) {
Write-host (“{0,-70}” -f $($Group.DisplayName) ) -ForegroundColor Cyan -NoNewline;Write-host (“{0,-70}” -f “Appears in Teams PS-Module and Teams & Skype Admin Panel”) -ForegroundColor Green -NoNewline;Write-Host (“{0,-30}” -f $($Group.HiddenFromExchangeClientsEnabled) ) -ForegroundColor Yellow
}
}
And yes of course, indeed I meant Set-UnifiedGroup. Haha!
Nice work… But I do want to make the point that it is perfectly normal for an Office 365 group used by a team to be hidden from Exchange clients. In fact, this is the default condition since April 2018 (approx.).
Sounds good that they’ve acknowledged and are fixing it.
In the meantime I made a little script that checks the O365 Groups against the Teams and finds out which are missing, in a neat colored output. I checked our customer/clients groups yesterday, still not patched on their end.
$groups=Get-UnifiedGroup
$teams=Get-Team
write-host (“{0,-70}{1,-70}{2,-30}” -f “Group”,”Result”,”HiddenFromExchangeClientsEnabled”) -ForegroundColor White -BackgroundColor Blue
foreach ($group in $groups) {
if ($group.DisplayName -notin $teams.DisplayName) {
Write-host (“{0,-70}” -f $($Group.DisplayName) ) -ForegroundColor Cyan -NoNewline;Write-host (“{0,-70}” -f “Not appearing in Teams PS-Module or Teams & Skype Admin Panel”) -ForegroundColor Red -NoNewline; Write-Host (“{0,-30}” -f $($Group.HiddenFromExchangeClientsEnabled) ) -ForegroundColor Yellow
}
if ($group.DisplayName -in $teams.DisplayName) {
Write-host (“{0,-70}” -f $($Group.DisplayName) ) -ForegroundColor Cyan -NoNewline;Write-host (“{0,-70}” -f “Appears in Teams PS-Module and Teams & Skype Admin Panel”) -ForegroundColor Green -NoNewline;Write-Host (“{0,-30}” -f $($Group.HiddenFromExchangeClientsEnabled) ) -ForegroundColor Yellow
}
}
And yes of course, indeed I meant Set-UnifiedGroup. Haha!