Teams chats without an Exchange Online licence: why they fall outside eDiscovery and retention
Mail stayed on-premises, so the Exchange Online plan got switched off in the licence. Tidy, until legal asks for someone's Teams chats and eDiscovery finds nothing. Nothing was ever kept.
Purview auto-labeling and your migrated file server: why old SharePoint files never get a label
Your auto-labeling policy labels the files people use and skips the file server you migrated in 2020. It didn't fail. It never looked. Here's what it takes.
Are you in control under the Cyberbeveiligingswet? Prove it in Microsoft 365, per BIO2 measure
The CBW makes cybersecurity a personal board responsibility, with fines up to 10 million euro. 'We think we're in control' won't survive an audit. Here's how to prove it, per BIO2 measure, in Microsoft 365.
App registrations outlive the projects that created them. Here's how to audit them
That integration someone wired up in 2022 still has a valid secret and Directory.ReadWrite.All. This read-only script inventories every app registration: how old, still used, and what it can actually do.
Your tenant is full of guest accounts that never signed in. Here's how to find them
That guest you invited in 2023 still has access to your Teams and SharePoint. This script finds every stale guest, including the ones who never accepted, and shows you which to block.
The offboarding step everyone forgets: meeting ownership
Exchange Online finally lets admins transfer meeting ownership with Invoke-ChangeMeetingOrganizer. How it behaves, the gotchas hiding in the docs, a wrapper script that makes it safe to run, and the one rollout catch that makes the cmdlet lie to you.
Your shared mailboxes are login-capable accounts
Convert a mailbox to shared and the Entra account often stays enabled. This script catches every shared mailbox that can still sign in — or is quietly burning a license.
Trust, but Verify Your Microsoft 365 Tenant
From assumptions to evidence: why this blog exists, what you'll find here, and why every post ends with something you can verify yourself.
Auto-generating a Maester config from your custom Pester tests
Generate your maester-config.json automatically from your custom Pester tests, so severities and titles never drift out of sync again.