SharePoint frequently reuses terms, which often makes conversations and forum posts a lot of fun. Thereâ€
s at least three “Groups†in Office 365:
Office 365 Groups are a combination of an Exchange email account with the groupâ€
s name that is used to store conversations, and a “OneDrive – like†site collection to store files.
A collection of Office 365 Groups facts:
s OneDrive.
s no limit for number of Groups per tenant.
s owner is deleted.
s not considered to be a personal OneDrive. There is no “user†for the Group OneDrive. The mailbox can store up to 50GB of messages, posts and calendar entries. The SharePoint Site Collection has a max of 1TB.
s not customizable.
t check out/in. (I saw this listed as a feature, but itâ€
s not in my tenants.)
s no Site Permissions page or 2nd tier recycle bin.
t recover files deleted by members.
t find a place to change Public/Private status after the group has been created.
)| Groups | Team Sites | |
| Can add lists/libraries | No | Yes |
| Can add pages | No | Yes |
| Can add columns/metadata | No | Yes |
| Can use Content Types | No | Yes |
| Can hide membership | No | Yes |
| Can brand | No | Yes |
| Can be fully managed with PowerShell | No | Yes |
So since this feature is enabled by default. Users in your organization may have already started creating groups and hidden SharePoint site.
So first we need to disable this option right away.
Now need to check your company-wide configuration settings through the Get-MsolCompanyInfo Windows PowerShell cmdlet. This cmdlet will display your current company-wide configuration settings that affect all users. You specifically need to verify that the UserPermissionToCreateGroupsEnabled parameter is set to False.
To check your Company-level configuration settings
You will first need to connect to your Office 365 service. In the Windows Azure Active Directory Module for Windows PowerShell, type and enter the following:
Connect-MsolService
In the Sign in to your Account screen, enter your credentials to connect you to your service, and click Sign in.

You will be returned to a prompt in the Windows Azure Active Directory Module.
You will need to display your company-wide configuration settings. To do this, type and enter:
Get-MsolCompanyInformation
This will display a listing of the current configuration settings that apply to all users in your company.

As you can see the value for the UsersPermissiontoCreateGroupsEnabled setting is True. We need to change this to False.
To change the UsersPermissionToCreateGroupsEnabled setting value
You will first need to use the Set-MsolCompanySettings cmdlet to change the UsersPermissionToCreateGroupsEnabled parameter to False. In the Windows Azure Active Directory Module for Windows PowerShell, type and enter the following:
Set-MsolCompanySettings - UsersPermissionToCreateGroupsEnabled $False
You will be returned to a prompt in the Windows Azure Active Directory Module.
After changing the setting, you then need to run the Get-MsolCompanyInfo cmdlet to verify that the value has changed to True.
Get-MsolCompanyInfo
After running the cmdlet, check the displayed information to verify that the UsersPermissionToCreateGroupsEnabled setting value has changed to False.
#Connecting to SharePoint #User account with Global Admin Permissions $adminUPN="[email protected]" #Organization Name (myorganizationinc.onmicrosoft.com) $orgName="myorganizationinc" #Prompting and using the password $userCredential = Get-Credential -UserName $adminUPN -Message "Type the password." #Making the Connection Connect-SPOService -Url https://$orgName-admin.sharepoint.com -Credential $userCredential
Get a list of Site Collections
Get-SPOSite -Detailed | Format-Table -AutoSize
More than likely the Group SharePoint Site is restricted to the user that may have created it. You may get this error when trying to remove it:

To remove it you need to take ownership as the CollectionOwner
Set-SPOUser -Site http://myorganizationinc.sharepoint.com/sites/<YourGroupsSite> -LoginName [email protected] -IsSiteCollectionOwner $true
Now if you want to do this for all the site collections:
$Sites = Get-SPOSite
ForEach ($Site in $Sites)
{
Set-SPOUser -Site $site -LoginName [email protected] -IsSiteCollectionOwner $true
}
Once this is applied the admin will be able to remove the hidden Sharepoint collection. Remove the site collections that are no longer needed.
Remove-SPOSite -Identity https://myorganizationinc.sharepoint.com/sites/<YourGroupsSite> -NoWait
Now to delete the groups that the users created. Head over to the Office365 Admin Portal.
Click the “Office 365 group” from the selection to show all groups (These should be all cloud based)

Once the groups are displayed remove them as necessary.
Groups are no longer in your environment.
If you are in Hybrid mode you cannot user Groups in a clean fashion. It will get messy. Sooner or later you will need to plan for migration of your distribution groups to Groups. Know your current limitations and hold.
Migrate distribution lists to Office 365 Groups – Admin help
The following table lists which distribution lists are eligible or not eligible for migration
| Property | Eligibility |
| On-premise managed distribution list. | Not eligible |
| Nested distribution lists. Distribution list either has child groups or is a member of another group. | Not eligible |
| Moderated distribution list | Not eligible |
| Distribution lists with send on behalf settings | Not eligible |
| Distribution lists hidden from address lists | Not eligible |
| Distribution lists with member RecipientTypeDetails other than UserMailbox, SharedMailbox, TeamMailbox, MailUser | Not eligible |
| Distribution lists with member join or depart restriction as Closed | Eligible. Converted to a private Office 365 Group. |
| Distribution lists with custom delivery status notifications. ReportToManager = true, ReportToOriginator = false ReportToManager = false, ReportToOriginator = false | Eligible. Office 365 groups don’t understand these properties, and delivery status notifications are always sent to the person that sent the email. |
s at the time of creation and ONLY via powershell. I have compiled a Powershell script that will do this. I have also listed the commands next to each comment to get the value to put there. Copy the code below into a PS1 and launch it from a PowerShell window.
############## Change Values Below Here #############
# Set Subscription that will be used. Get-AzureSubscription
$subscr="Free Trial"
# Cloud Service Name. Get-AzureService
$svcname="Cloud Service"
#Set Storage Account VM will be created in. Get-AzureStorageAccount
$staccount="Storage01"
# Name of the VM Provisioned
$vmname="VM01"
# Instance Size of the VM required
$vmsize="Standard_DS2_v2"
# Virtual Network Name. Get-AzureVNetConfig
$vnetname="Virtual Network"
# OS you want to Deploy
# 2012 = "Windows Server 2012 R2 Datacenter"
# 2008 = "Windows Server 2008 R2 SP1"
$OSversion = "Windows Server 2008 R2 SP1"
# vNic1 IP Address
$vNic1IP = "10.0.2.11"
$vNic1Subnet = "Live"
# vNic2 IP Address
$vNic2Name = "Replication"
$vNic2IP = "10.0.1.11"
$vNic2Subnet = "Replication"
############# DO NOT CHANGE VALUES BELOW HERE ############
# Select Subscription and Storage
Set-AzureSubscription -SubscriptionName $subscr -CurrentStorageAccountName $staccount
# Get image for VM
$image = Get-AzureVMImage `
| where{$_.ImageFamily -eq $OSversion} `
| sort PublishedDate -Descending `
| select -ExpandProperty ImageName -First 1
# Creates a new VM config with the VM name, its Size and the Image Used
$vm1 = New-AzureVMConfig -Name $vmname -InstanceSize $vmsize `
-Image $image
# Asks you for the admin username and password for the machine
$cred=Get-Credential -Message "Type the name and password of the local administrator account."
$vm1 | Add-AzureProvisioningConfig -Windows -AdminUsername $cred.Username -Password $cred.GetNetworkCredential().Password
###### 2nd Network Card - Remove comments on next 2 lines if you need a 2nd NIC #
#Add-AzureNetworkInterfaceConfig -Name $vNic2Name `
# -SubnetName $vNic2Subnet -StaticVNetIPAddress $vNic2IP -VM $vm1
# Create vNic1 - Will be the Default Gateway so assign to Correct Subnet
Set-AzureSubnet -SubnetNames $vNic1Subnet -VM $vm1
Set-AzureStaticVNetIP -IPAddress $vNic1IP -VM $vm1
New-AzureVM -ServiceName $svcname –VNetName $vnetname –VMs $vm1
]]>