Add ExchangeOnline provider and Mailbox step pack#106
Conversation
Co-authored-by: blindzero <13959569+blindzero@users.noreply.github.com>
Co-authored-by: blindzero <13959569+blindzero@users.noreply.github.com>
…pass Co-authored-by: blindzero <13959569+blindzero@users.noreply.github.com>
…tion rationale Co-authored-by: blindzero <13959569+blindzero@users.noreply.github.com>
…ename DesiredType to MailboxType Co-authored-by: blindzero <13959569+blindzero@users.noreply.github.com>
Co-authored-by: blindzero <13959569+blindzero@users.noreply.github.com>
Co-authored-by: blindzero <13959569+blindzero@users.noreply.github.com>
…tic behavior Co-authored-by: blindzero <13959569+blindzero@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Adds first-party Exchange Online support to IdLE by introducing an ExchangeOnline mailbox provider plus a provider-agnostic mailbox step pack (get mailbox info, ensure mailbox type, ensure Out of Office), along with tests, docs, and example workflows.
Changes:
- Added
IdLE.Provider.ExchangeOnline(provider + cmdlet adapter) implementing mailbox lifecycle operations. - Added
IdLE.Steps.Mailboxstep pack with step handlers and step metadata catalog for required capabilities. - Added Pester tests and updated docs/examples for mailbox lifecycle scenarios.
Reviewed changes
Copilot reviewed 21 out of 21 changed files in this pull request and generated 14 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/Providers/ExchangeOnlineProvider.Tests.ps1 | Unit tests for ExchangeOnline provider behavior (mailbox read/type/OOF). |
| tests/Invoke-IdleStepMailboxTypeEnsure.Tests.ps1 | Tests for mailbox type step validation/idempotency and provider invocation. |
| tests/Invoke-IdleStepMailboxOutOfOfficeEnsure.Tests.ps1 | Tests for OOF step validation/security boundary and provider invocation. |
| tests/Invoke-IdleStepMailboxGetInfo.Tests.ps1 | Tests for mailbox info step result shape and auth session defaulting. |
| src/IdLE.Steps.Mailbox/README.md | Step pack quick-start + documentation link. |
| src/IdLE.Steps.Mailbox/Public/Invoke-IdleStepMailboxTypeEnsure.ps1 | Step handler for mailbox type convergence. |
| src/IdLE.Steps.Mailbox/Public/Invoke-IdleStepMailboxOutOfOfficeEnsure.ps1 | Step handler for mailbox OOF convergence with config validation. |
| src/IdLE.Steps.Mailbox/Public/Invoke-IdleStepMailboxGetInfo.ps1 | Step handler for reading mailbox details into step State. |
| src/IdLE.Steps.Mailbox/Public/Get-IdleStepMetadataCatalog.ps1 | Declares required capabilities for new mailbox step types. |
| src/IdLE.Steps.Mailbox/Private/Test-IdleProviderMethodParameter.ps1 | Local copy of provider method parameter detection helper. |
| src/IdLE.Steps.Mailbox/Private/Invoke-IdleProviderMethod.ps1 | Local copy of provider invocation helper with optional AuthSession. |
| src/IdLE.Steps.Mailbox/IdLE.Steps.Mailbox.psm1 | Module bootstrap/dot-sourcing + explicit exports. |
| src/IdLE.Steps.Mailbox/IdLE.Steps.Mailbox.psd1 | Module manifest for mailbox steps (requires IdLE.Steps.Common). |
| src/IdLE.Provider.ExchangeOnline/README.md | Provider quick-start + documentation link. |
| src/IdLE.Provider.ExchangeOnline/Public/New-IdleExchangeOnlineProvider.ps1 | Provider implementation (capabilities, mailbox read/type/OOF). |
| src/IdLE.Provider.ExchangeOnline/Private/New-IdleExchangeOnlineAdapter.ps1 | Adapter wrapping ExchangeOnlineManagement cmdlets with sanitization. |
| src/IdLE.Provider.ExchangeOnline/IdLE.Provider.ExchangeOnline.psm1 | Module bootstrap/dot-sourcing + explicit exports. |
| src/IdLE.Provider.ExchangeOnline/IdLE.Provider.ExchangeOnline.psd1 | Module manifest for ExchangeOnline provider. |
| examples/workflows/live/exo-leaver-mailbox-offboarding.psd1 | Example workflow for mailbox offboarding (convert + OOF). |
| examples/workflows/live/complete-leaver-entraid-exo.psd1 | Example workflow combining EntraID offboarding + mailbox operations. |
| docs/usage/workflows.md | Adds a section describing {{...}} template substitution in workflows. |
…bstitution docs, fix plan mutation Co-authored-by: blindzero <13959569+blindzero@users.noreply.github.com>
…lpers instead Co-authored-by: blindzero <13959569+blindzero@users.noreply.github.com>
… fix doc link, use ToLowerInvariant Co-authored-by: blindzero <13959569+blindzero@users.noreply.github.com>
blindzero
left a comment
There was a problem hiding this comment.
@copilot check if the authentication and token handling is properly done or if should be more incorporated and moved into the AuthSessionBroker
The authentication and token handling is properly implemented according to IdLE's architecture: Current Implementation (Correct):
AuthSessionBroker Responsibility (by Design):
Why Token Extraction Stays in Provider:
Separation of Concerns:
The current design is correct per |
Implementation Summary: ExchangeOnline Provider + Mailbox Step Pack
This PR successfully implements a production-usable Exchange Online provider and provider-agnostic mailbox step pack for IdLE.
✅ Changes Made
Latest Updates (Final Code Review Fixes)
$script:scopeToLower()toToLowerInvariant()for deterministic behavior across environmentsPrevious Updates
ValueFrompatternExport-ModuleMemberto use explicit function namesMailbox.Report→Mailbox.GetInfoDesiredType→MailboxTypeCore Deliverables
ValueFrompattern📊 Quality Metrics
Ready for final review
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.