Roster Auditor — Tutorial

Committee rosters rot quietly. People retire, change agencies, or simply stop coming, and nobody updates the list — so you keep mailing thirty addresses to reach eighteen people. This finds the ghosts using signals you already possess.

Tutorial — auditing a roster

1. Click Roster Auditor on the ribbon, then Load my groups.
You should see the Microsoft 365 groups and distribution lists you belong to. If it comes back empty, your account isn't a member of any group Graph can see.
2. Pick a group, set Months back, and click Audit roster.
You should see each member with a last-seen date and the evidence behind it — and bouncing addresses at the top.

The four signals, and how much each is worth

SignalStrength
Bounced sends (NDRs) Definitive. The address is dead, not merely quiet. This is the only signal that proves something rather than suggesting it, so bounces sort first.
In-person attendance you record Strong. You marked them present. Stored in your own mailbox settings.
Teams meeting attendance Strong, but partial. Attendance reports exist only for meetings you organised — a platform rule, not a design choice. The add-in can never observe anyone else's meetings.
Replies to your group sends Weak — display only. Never used to recommend removal. Someone who reads everything and replies to nothing is not a ghost; they're a lurker, and plenty of committee members are supposed to be exactly that.
A member with no signal at all shows as "engagement unknown" — never "inactive." Absence of evidence in your mailbox is not evidence of absence from the committee. They may participate entirely through a colleague, by phone, or in meetings you don't organise. The wording is deliberate, because "inactive" invites someone to act on a silence the tool never actually observed.

Recording in-person attendance

After a sign-in-sheet meeting, open Record in-person attendance, set the Meeting date, and tick everyone present.

This is the signal that rescues people the digital ones miss — the member who never emails and never misses a meeting. Two or three sessions recorded makes the audit dramatically fairer.

Acting on it

Re-engage — the default, and usually the right one

Select the members you're unsure about and click ✉️ Re-engage. A polite "are you still an active member?" email is drafted for you to review and send.

This is first for a reason. It converts a guess into an answer, and it gives someone the chance to say "yes, and I'd like to stay" before anyone removes them from anything.

Remove — only where you own the group

Select, click 🗑 Remove, then click Confirm remove. Two clicks, deliberately.
Only available on Microsoft 365 groups you own. Classic distribution lists and mail-enabled security groups are read-only through Microsoft Graph — they're mastered in Exchange. That's a Microsoft limitation, not something a permission can unlock.

CSV — the path for distribution lists

Use CSV for the selected members or Full CSV for everyone.

You get member, status, evidence, and a ready-made Remove-DistributionGroupMember PowerShell line per row — hand it to your Exchange admin and they can act without re-deriving your reasoning.

Copy the CSV out of the box on screen. Outlook blocks file downloads from add-in panes, so it's presented as text to select and copy rather than as a download that would silently fail.

One setting worth understanding

Large send = # of members. This is how the add-in recognises that a message was sent to the group rather than to a few individuals — a send is treated as a group send when it reaches at least this many recipients. Set it too low and ordinary team emails get counted as group sends, which makes the reply signal noisy.

What it never does

It never removes anyone without you selecting them and confirming twice. It has no backend, no analytics, and no AI. All Graph access is delegated — it sees only what you can already see — and nothing leaves the Microsoft 365 boundary.