Offboarding: -HideFromGal to hide mailbox from Global Address List (Set-Mailbox -HiddenFromAddressListsEnabled).
Offboarding: -SkipDirectLicenseFallback to suppress Graph REST fallback for direct license removal.
Offboarding: SkipGroups now accepts DisplayName, SMTP address, or ObjectId (AAD Id).
Onboarding/Offboarding: GroupDisambiguation config in config/appsettings.json to map ambiguous display names to a unique SMTP or ObjectId.
Docs: Troubleshooting section with concrete commands to resolve distribution group ambiguity; consolidated SiteCode usage across onboarding/offboarding.
Installer: ensure Microsoft.Graph.Users.Actions is installed so Update-MgUserLicense is available.
Changed
Onboarding: hardened DL/mail-enabled group adds with robust EXO resolution (SMTP/ObjectId/DisplayName/ANR) and retries; parity with offboarding.
Offboarding: DL removal now performs membership-based disambiguation and removes from each candidate that actually contains the user.
Offboarding: -NoConfirm is fully honored for direct license removal; ShouldProcess prompt bypassed unless -WhatIf.
README: renamed onboarding CSV to example-onboard.csv throughout; parameter matrix updated; added guidance for SiteCode and ambiguity remediation.
Fixed
Offboarding: eliminated interactive confirmation prompts under -NoConfirm for direct license removal.
Offboarding: improved error messages and candidate logging when EXO returns “matches multiple entries”.
Reduced 405 errors by preferring Update-MgUserLicense; REST fallback is now optional and skippable.
Added
-HideFromGalto hide mailbox from Global Address List (Set-Mailbox -HiddenFromAddressListsEnabled).-SkipDirectLicenseFallbackto suppress Graph REST fallback for direct license removal.SkipGroupsnow accepts DisplayName, SMTP address, or ObjectId (AAD Id).GroupDisambiguationconfig inconfig/appsettings.jsonto map ambiguous display names to a unique SMTP or ObjectId.SiteCodeusage across onboarding/offboarding.Microsoft.Graph.Users.Actionsis installed soUpdate-MgUserLicenseis available.Changed
-NoConfirmis fully honored for direct license removal;ShouldProcessprompt bypassed unless-WhatIf.example-onboard.csvthroughout; parameter matrix updated; added guidance for SiteCode and ambiguity remediation.Fixed
-NoConfirmfor direct license removal.Update-MgUserLicense; REST fallback is now optional and skippable.