Microsoft Teams opens the door to a whole new world of collaboration—but only if users can find what they’re looking for. We explain how to identify inactive teams (and Microsoft 365 groups), so you can just keep the resources that are actually being used.
Microsoft’s modern workplace is all about freedom and flexibility, allowing users to create and use the tools they need without having to go through IT.
One potential flip side of that vision? You could find yourself with a lot of teams you don’t actually need. Even with an airtight governance plan in place, you’re bound to eventually wind up with teams that have simply served their purpose.
One of the best ways to keep Teams organized and easy-to-navigate (which in turn helps boost user adoption) is to clean up any resources your users no longer use—we’re talking about getting rid of inactive and unnecessary teams.
So how can you identify which teams to keep and which are obsolete?
To find inactive Microsoft teams (and Microsoft 365 groups), you have three main options:
Missed the live masterclass? Watch Microsoft MVP Jasper Oosterveld’s 3-part masterclass on demand, and get actionable advice on how to manage your Microsoft teams across the entire lifecycle, from creation to sunset.
Create a dream Teams: Mastering Microsoft Teams management across the entire lifecycle
1. Run a Microsoft Teams usage report
The Teams usage report is Microsoft’s out-of-the-box solution for tracking how your users are actually using Microsoft Teams. Quickly see how many users are using the app to collaborate and communicate.
Accessed through the Microsoft Teams admin center, the Teams usage report gives an overview of usage activity, including:
- The number of active users and channels in Teams
- The number of active users, channels, guests, and messages in each team
How to view the Teams usage report
- Navigate to the Microsoft Teams admin center. On the left-hand side, click Analytics & reports, then select Usage reports.
- On the View reports tab, in the Reports drop-down menu, select Teams usage.
3. In the Date range drop-down menu, select either Last 7 days, Last 30 days, or Last 90 days. Then click on Run report.
How to interpret the Teams usage report
The report you generate will show usage activity trends for the time period you specified (although the reports usually reflect a 24 to 48 hour delay from time of activity).
You can filter the info shown on the chart by clicking on one of the items in the legend underneath. In the example below, we can choose from:
- Total active users
- Active channels
- Reply messages
- Post messages
- Channel messages
The information in the table underneath the chart gives you a breakdown of usage by each individual team, and doesn’t change if you filter the info included in the chart.
By scrolling through all the columns to the right, you can see each team’s:
- Name: The display name of the team
- Privacy setting: Whether the team is a private or public team
- Active users: The number of active users in the team
- Guests: The number of guests in the team
- Active channels: The number of channels that have at least one active user
- Post messages: The number of all the post messages in channels
- Reply messages: The number of all the reply messages in channels
- Meetings organized: The number of scheduled and ad hoc meetings a user organized
- Urgent messages: The number of all the urgent messages
- Reactions: The number of all the reactions to messages
- Mentions: The number of all the mentions used in messages
- Channel messages: The number of unique messages that the team’s users posted in a team chat
You can choose to add or remove any of these columns by clicking on Edit columns (the gear icon) in the top right corner of the Teams usage report.
If you want to download the report, click Export to Excel (the Excel icon) in the top right corner of the Teams usage report. Then click Download in the Downloads tab.
Head over to the official Microsoft documentation for more details and information about the Microsoft Teams usage report.
The Teams usage report is useful if you want to get a quick overview of recent usage trends in your organization. But only viewing usage for the past 7, 30, or 90 days is limiting, and doesn’t necessarily paint an accurate picture of which teams are obsolete. It could be that a particular project has been put on hold for a month or two, with plans to pick things back up at some point in the future.
The other blind spot of the Teams usage report is that it only shows data for active users and channels. A truly obsolete team—one that’s been inactive for more than 90 days, for example—won’t be included in the report. That means you need to deduce which teams haven’t been included, ultimately resulting in more work (and guesswork) for IT.
2. Generate an activity report with PowerShell
If you’re comfortable using PowerShell, this script can help you identify inactive Microsoft teams and Microsoft 365 groups.
The basic premise is that a group (and by extension, that group’s team) becomes “inactive” when there’s been no recorded use of the associated mailbox, SharePoint site, or Teams chats in awhile. The script checks audit records to establish:
- Whether any SharePoint file activity has taken place in the group’s document library in the past 90 days
- Whether any conversations have taken place in the group mailbox in the past year
After running the script, an HTML report file is generated, containing statistics like:
- Number of groups scanned
- Number of potentially obsolete groups (based on document library activity)
- Number of potentially obsolete groups (based on conversation activity)
- Number of Teams-enabled groups
- Percentage of Teams-enabled groups
This method also leaves a lot of the onus on IT—from scripting, to interpreting the report, to making a decision about archival—making it harder for Teams to scale as fast as your organization.
It’s hard to know if a team is truly inactive based on user activity from only the past 7-90 days. And both of the above options put all of the responsibility on IT, making it harder to scale fast.
Instead, it’s possible to find unused and obsolete teams based on whether or not they comply with an activity threshold (say, 30 days). Any teams that don’t meet the requirement are automatically flagged as inactive.
To do this, you either need to:
- Set an activity-based expiration policy in Azure AD (Azure AD Premium subscription required)
- Use a third-party automated governance tool
3. Set an expiration policy in Azure AD
Microsoft’s solution for keeping Teams organized and up-to-date? Set an expiration policy for the associated Microsoft 365 Group in Azure AD.
Until recently, that’s meant setting an expiration timeframe (i.e. 90 days)—at which point group owners receive an automatic email notification asking if they’d like to renew or delete their group (and associated team).
Now, IT admins can set an expiration policy that will automatically renew a group if user activity is detected in that time period. Groups which are being actively used will be automatically renewed—so there’s no need for owners to receive e-mail notifications.
Even with this new intelligence, setting an expiration policy has the same drawbacks as before, namely:
- Only available options are renew or delete. Owners still have to choose between renewing or deleting their team. If they decide to delete it, there’s no way to get that content back past Microsoft’s 30-day “soft-delete” period—which means they’re more likely to keep renewing it “just in case”.
- Email notifications are only sent to group owners. You can specify an email address where the renewal and expiration notifications should be sent when a group has no owner. But if the owner simply fails to make a decision by the expiration deadline, the group is automatically deleted. And if IT doesn’t notice in time (within 30 days of deletion), that content could be gone for good.
Admins can view automatically renewed groups by checking the activity audit logs in Azure AD. And those deemed inactive—either by an owner’s decision or lack thereof—can be found by selecting Groups, then Deleted groups in the Azure AD admin center, (but only for 30 days after deletion). But that means regularly checking and verifying deleted groups—not exactly making life easier for IT.
Admins could also choose to make themselves an owner of every Microsoft 365 group and get every email notification to ensure nothing slips through. But again, that just creates more work (and a ton more emails) for IT.
There’s also the fact that you need to possess (but not necessarily assign) Azure AD Premium licenses for the members of all groups to which the expiration policy is applied.
4. Automate Microsoft Teams reporting with ShareGate Apricot
A third-party tool like ShareGate Apricot can help identify inactive teams, AND archive their files and folders indefinitely. So there’s no need for owners to keep renewing a team because they’re afraid of letting something go.
ShareGate Apricot crawls through your teams (including their associated Outlook inboxes and SharePoint site collections) looking for user-generated activity—then surfaces up any teams that don’t meet the inactivity threshold you’ve set. We’ll show you all of the inactive teams that were detected in one convenient place (without having to make yourself an owner).
When a team is flagged as inactive, the owner receives an automatic email notification asking them to confirm whether the team should be archived or kept. And with ShareGate Apricot, you can always make the call yourself, or overwrite previously made decisions if you need to.
When a team gets archived, we copy its content and store it securely—on our Azure server or yours—so you can delete the team from your tenant and only keep resources that are actually being used. So it’s easy to keep your Teams organized and up-to-date on an ongoing basis.
Unlike other third-party governance tools, ShareGate Apricot finds obsolete teams AND lets you archive old content indefinitely—so you can rest easy knowing files can be restored anytime. And, ShareGate Apricot is easy to setup and even easier to manage—no clunky interface, no coding, and no Azure AD premium subscription required.