M365 ● Sealed v1.0

Exchange

Discovers Exchange Online mailboxes, plans, and usage statistics.

What it does

Uses Microsoft Graph to enumerate mailbox-capable users in the tenant. Outputs ExchangeMailboxes.csv with migration-useful columns: stable ids (ObjectId/Id), names (DisplayName/UPN/Mail), relationships (ManagerId), proxy addresses, license/plan signals, timestamps. Root cause fix (prove 20260716-100352): local Get-GraphPage only inspected PSObject property names and returned @() for Graph SDK 2.x Hashtable responses (Keys/Values, not NoteProperty 'value') — silent empty SUCCESS with no CSV. Now uses DiscoveryBase Invoke-GraphAPIWithPaging.

How the app exposes it

The module runs through the ACQI discovery orchestrator and writes its rows into a dedicated results view. From there, conflicts, dependencies, and readiness scores feed the deal-wide consolidation layer.

Route in app:
/discovered/exchange

Outputs

Each module emits a normalised CSV keyed by entity ID with readiness and risk scores, evidence-source counts, and last-seen timestamps. The exact column set varies by module — the app's results view shows the live schema.