Tenant Healthcheck

The Tenant Healthcheck product scans your Microsoft 365 tenant configuration against industry best practices and operational standards. It runs entirely through your Calibrant Relay using Managed Identity — no credentials leave your environment.

How it works

  1. You click Start Scan and select which categories to check
  2. Calibrant sends PowerShell scripts to your relay as commands
  3. The relay executes each script using its Managed Identity (no user credentials)
  4. Results are returned to Calibrant, scored against 56 health rules
  5. Claude AI generates an executive summary and prioritized recommendations
No M365 OAuth consent required. Unlike Agent Optimizer (which uses your M365 OAuth connection for persona authentication), Healthcheck uses only the relay's Managed Identity. Your Calibrant M365 connection is not needed for this product.

Prerequisites

  1. Relay deployed and online — follow the Relay Setup guide
  2. Managed Identity permissions granted — the relay's Managed Identity needs Graph app roles and M365 admin roles. Follow Step 4 of the Relay Setup guide to run the permission grant script.
  3. Professional or Enterprise plan — Healthcheck is a second product slot. Free and Starter plans include one product slot (Agent Optimizer by default). Upgrade your plan and select Tenant Healthcheck from your product selection.

Check categories

You can select any combination of categories when starting a scan:

CategoryChecksRequires
TenantOrg branding, technical contacts, directory sync health, service health incidents, delegated admin relationshipsGraph app roles
Entra IDGlobal admin count, guest settings, app registrations, password policy, privileged roles, stale guests, consent policiesGraph app roles
Exchange OnlineModern auth, audit logging, DKIM, IMAP/POP, transport rules, TLS connectors, distribution groups, SPF recordsExchange.ManageAsApp + Exchange Administrator role
Microsoft TeamsUpgrade mode, guest access, external federation, consumer access, team ownership, app policies, meeting settingsGraph app roles + Teams Administrator role
SharePoint OnlineExternal sharing level, domain restrictions, resharing, legacy auth, anonymous link expiry, default link type, idle sign-outSharePointTenantSettings.Read.All + SharePoint Administrator role
OneDrive for BusinessStorage quota, sync restrictions, orphaned account retention, sharing alignment with SharePointSharePoint Administrator role
Power PlatformDLP policies, environment inventory, flow failures (last 7 days)M365 CLI via Managed Identity (optional)

Understanding scores

Each category gets an independent score (0–100), and an overall score is calculated from all findings weighted by severity:

SeverityWeightExamples
Critical20 ptsModern auth disabled, no DKIM
High10 ptsGlobal admin count wrong, anonymous sharing open
Medium5 ptsGuest invite restrictions not set, IMAP enabled
Low2 ptsNo branding, empty distribution groups
Info / Good0 ptsInformational observations, passed checks
Score rangeLabel
90–100Excellent
80–89Good
60–79Needs Attention
40–59Poor
0–39Critical

Credit cost

Each scan costs 2 credits regardless of how many categories are selected. Credits are deducted when the scan starts.

Troubleshooting

  • Relay shows offline on the Healthcheck page — go to Connections and check that your relay deployment has a green Online indicator. If it's offline, view the relay logs via Azure Run Command: az vm run-command invoke --name calibrant-relay-vm --resource-group calibrant-relay-rg --command-id RunPowerShellScript --scripts "Get-Content C:\calibrant-relay\relay.log -Tail 30"
  • Scan fails with "Access Denied" — the Managed Identity is missing one or more permissions. Re-run the permission grant script and wait 5–10 minutes for propagation.
  • Exchange or Teams category fails but others pass — the directory roles (Exchange Administrator, Teams Administrator) may not have propagated yet. Wait 10 minutes and retry.
  • Power Platform shows no data — the M365 CLI login with Managed Identity requires additional Power Platform API permissions. This category is optional; skipping it does not affect other category scores.
  • Scan stuck in "Collecting" — relay commands expire after 10 minutes. If the relay goes offline mid-scan, the scan will be marked failed automatically. Check relay logs and restart the service if needed: az vm run-command invoke --name calibrant-relay-vm --resource-group calibrant-relay-rg --command-id RunPowerShellScript --scripts "Restart-Service CalirantRelay"