How to clean up a Microsoft Teams sprawl
It’s common to see Microsoft Teams spreading quickly throughout an organization. This is actually great news! A rapid Teams uptake means that people are finding value in Teams.
However, over time we see common user complaints such as:
“It’s hard to find the Team I need to look at – my list is too long.”
“As a manager, I am a member of too many Teams.”
“Teams have similar names, and I don’t know which one to use.”
Ideally, an IT or Teams admin address these issues with governance before they become urgent problems. However, if you’re in a situation where you have hundreds or thousands of Teams, what do you do? In this article, we provide recommended actions and next steps for cleaning up a Microsoft Teams sprawl.
1. Do a Teams Audit
The first step to tackling the problem is to know your data.
A ‘Teams Audit’ is an important first step in addressing Teams sprawl because you need to understand the scale and scope of what you have. You can do this a couple of ways:
Method #1: Export Groups from Microsoft 365 Admin
Microsoft 365 Groups can have a Team attached to them, so a list of Groups is a good starting point to narrow down the list of Teams.
In M365 Administration go to Teams & Groups > Active teams & groups and select the Export function:
This will save a spreadsheet that you can use as the foundation for doing a Teams audit. Use the ‘Has Teams’ column to sort by groups that have Teams:
The problem with this export is it’s missing data that is useful for a thorough Teams audit. It’s missing information such as the Teams owner and which Teams are active. You will have to append that manually by going through each Team, which is realistically doable for only a few dozen Teams.
For larger Teams implementations, our preferred starting point for a Teams audit is to run a PowerShell script to get the missing data.
Method #2: PowerShell script
If you’re comfortable running PowerShell scripts, we recommend using a script like this to get a list of Teams with information that is more useful for auditing.
This script produces an output with an Excel spreadsheet. You can use this as the Teams audit starting point:
This is more helpful than the Microsoft-provided administration reports provided in M365 and Teams Administration**.
The PowerShell script provides information such as:
Number of potentially obsolete Teams
The owner (Managed by) and Teams that have No owners
Timestamps to sort by such as the Last Conversations timestamp
If there was SPO activity in the past 90 days….and more!
Most Microsoft 365 Administrators can run this script relatively easily, but if you need a hand, reach out and we’re happy to help.
** Note: Teams Administration shows Teams that lack owners and up to 90-day usage data. Because of the limited historical data and the listing of Teams that is not exportable to a spreadsheet, we don’t recommend this approach for starting a Teams audit.
2. Confirm Teams owners and policy
After you build the Teams audit spreadsheet, the next thing to do is to make sure Teams have owners. The spreadsheet (whether you used PowerShell or built it manually) tracks which Teams lack owners. We recommend that you go through and look for Teams that have 0 or only 1 owner.
For these Teams, reach out the members of the team to identify a new owner. From Teams Administration, you can promote a member to an owner:
Having active Teams owners is critical because you need an accountable representative to make decisions on what to do with the Team. Once there is an owner identified, they can decide if the Team needs to be deleted, archived, merged with another Team, or simply renamed for clarity.
Going forward, we recommend that new Teams require at least two owners so there is more likely to be a back-up. By default, the person creating a Team becomes an owner, and they can optionally add another owner, but the Teams creation UI doesn’t enforce this. You can enforce this through using a form, Power App for Team creation or a third-party tool.
3. Add Team expiry dates
With the Teams audit spreadsheet output, you have a list of all Teams with timestamps. You can sort by inactivity and start a process to weed out inactive Teams.
Going forward, you need a process to address inactive Teams. A simple method is to review usage analytics for Teams regularly.
To Review analytics for active teams, go Teams Admin > Analytics & Reports > Usage Reports. Selecting Teams Usage will give options for looking at active teams in the last 7, 30 or 90 days:
90 days is usually enough time to decide if a Team is active, but our general guideline is that you give people one year to keep a Team. However, Microsoft currently doesn’t provide usage analytics for one year, so you’re stuck with 90 days for now.
What’s not useful about these reports is that they don’t give you a list of Teams that are inactive. Again, go back to the PowerShell script that outputs a list of all Teams with timestamps to sort by inactivity.
With this report, you can see how many Teams are used in say, a 90-day timeframe compared to the total number of Teams that you have. Do only 20% of Teams stay active in 90 days? This might indicate that you need a process or governance guidance on removing inactive Teams.
Expire teams
Microsoft 365 Groups includes a simple governance process to expire Teams if no activity is detected. Team owners get emails at specific intervals to renew Teams if they are not used. If they are active, no emails are sent.
An administrator enables the Group expiration policy in Azure by going to Azure Active Directory > Groups > Expiration. Here you can set the default group lifetime and specify how far in advance you want the first and second expiration notifications to go to the group owner.
This is a blanket expiry policy that applies to all groups. The downside of this feature is that you can’t set expiry dates for different types of teams, or only for certain types e.g Projects.
If more granular expiry dates are critical, 3rd party tools such as Orchestry can help.
4. Collapse Teams into channels
Some Teams likely don’t need to be Teams at all. They may make more sense as a channel for another Team. Consolidating topics into channels will help with sprawl and having a manageable list of Teams.
There isn’t a way to easily merge Teams or move channels from one Team to another yet. It is a highly requested feature on the Microsoft feedback site, but for now you will need to manually move content between Teams and lose the history in the process.
Going forward, we recommend training users on when to use a channel. For example, think about if you’re creating a new Team that has the same members as another Team. Does this new topic make sense as another Team? Probably not.
If the Team members are the same or a subset of a parent Team, a new topic could be handled by creating a channel in an existing Team that displays like this:
Keep in mind that all channels within a Team share the same member list, except for shared and private channels.
Other common examples for using channels are to create separate channels for different phases of a project, or for each department functional or practice area within a larger department Team. However, if you have specific security requirements for project phases or department functional areas, then continue to break those into separate Teams.
With the right planning when creating a new Team, a Team owner should create a few channels that can group topics of conversations under a main Team.
Summary
Cleaning up a Teams implementation takes some effort and a good audit starting point, but with this data you can start to make a better Teams user experience for all. Going forward, plan for governance and maintenance to ensure that Teams have owners, expiry dates, and people are informed about the best ways to manage growing Teams.
Reach out to discuss your specific needs for Teams governance. Our process includes: reviewing the existing implementation, cleaning up inactive Teams, and planning a governance process to manage Teams.