Teams report Beta
Teams, channels, members, tabs & apps
Every team in your tenant, or the ones you choose, in one workbook: its owners, members and guests, its standard, private and shared channels and who is in each private and shared channel, its SharePoint site, apps and tabs, how active it has been, and the things an administrator would want to look at. Nothing is changed.
What it tells you
- Which teams have no owner, or only one, and so become unmanageable the day that person leaves.
- Which teams have guests in them, and exactly who those guests are.
- Who is in each private and shared channel, including people from other organisations in a shared channel.
- Which teams have been quiet for the whole activity window, so they can be reviewed or archived.
- Where each team's files are: its SharePoint site and storage, and the separate site behind each private and shared channel.
How it runs
- Sign in. One window, asking for every read permission the report uses.
- Choose teams and what to read. Every team, or the ones you tick. Channels, channel members, apps, sites and activity are on by default; tabs are off because they cost one extra read per channel.
- It reads each team. Teams appear on the run screen as soon as everything about them has been read, marked Clear, Flagged or Not all read.
- Save the workbook. Start with Summary and Flags; the other sheets are the full lists behind them.
How it works
It first lists every group in the tenant that has a team. If that list cannot be read the run stops, because there is nothing to report on. The Teams activity report is read once, up front. Teams are then read a few at a time. For each team it reads the team's settings and archived state, its members, its SharePoint site and storage, its channels with the members of each private and shared channel (and the tabs, when you ask for them), the channels shared into it from elsewhere, and its installed apps.
An owner is a member whose role is owner, and a guest is a member whose role is guest. A person is external when their home organisation differs from the team's. Private channel members are checked against the team's own membership, which is how a guest is recognised inside a channel. No owner and One owner are raised only when the owner count was actually read. The other flags are Has guests, Public, Archived, No description, Expires soon (within 30 days), and External channel members when a private or shared channel has members from another organisation.
Inactive is raised only when the activity report was read and has a row for the team, every activity count in the window is zero, and the last activity date is missing or older than the window. The window is 90 days by default. If the activity report comes back but none of its rows match a team, which is what concealed names look like, activity is marked as not read and no team is flagged inactive.
A read that fails is written into the Problems column of the team or channel it affects. A team or channel that cannot be read at all is marked unreadable and the rest continue. Stopping finishes the teams already in progress and starts no more. The workbook goes into History when the run ends.
What you get
An Excel workbook, named like contoso-teams-report-20261008-101500.xlsx, kept in Report History whether or not you save it. Summary and Flags answer the question; Team members and Channel members are the permission extract.
Teams sheet
One row per team.
| Column | Example |
|---|---|
| Team | Finance |
| Visibility | Private |
| Owners | 1 |
| Members | 24 |
| Guests | 2 |
| Private channels | 1 |
| Shared channels | 1 |
| Flags | One owner; Guests |
Channel members sheet
Who is in each private and shared channel.
| Column | Example |
|---|---|
| Team | Finance |
| Channel | Payroll |
| Channel type | Private |
| Person | Ann Lee |
| Role | Owner |
| External | No |
Flags sheet
One row per team and flag, with what it means and what to do.
| Column | Example |
|---|---|
| Team | Finance |
| Flag | One owner |
| What to do | Add a second owner. |
Data sources sheet
What was read, what could not be, and who it was read as.
What you need
- A Microsoft 365 sign-in that can be granted these read permissions: Group.Read.All, Team.ReadBasic.All, Channel.ReadBasic.All, TeamMember.Read.All, ChannelMember.Read.All, TeamsTab.Read.All, TeamsAppInstallation.ReadForTeam, Reports.Read.All and Sites.Read.All. Consent is usually a Global Administrator's to give.
- Signed in as yourself, private and shared channels are listed when you are a member of them. With a certificate, every channel is listed.
- The activity sheet needs the Microsoft 365 admin center setting 'Display concealed user, group, and site names in all reports' turned off. When it is on, the report says so and flags nothing as inactive.
What it will not do
- It reads and never changes anything: no team, channel, member or setting.
- Activity comes from Microsoft's own Teams activity report, which runs a day or two behind. The Data sources sheet gives the date it was current as of.
- A read Teams refuses is named against the team or channel it affects, in its Problems column, and never counted as zero.