A portfolio lab for the operational design behind Microsoft 365, Entra ID and Intune administration. It demonstrates identity lifecycle planning, least-privilege access, Conditional Access troubleshooting, endpoint compliance and reviewable PowerShell automation.
This repository is a reproducible design and automation lab. It does not claim deployment to a live Microsoft tenant. The sample domain, users and identities are synthetic. Genuine screenshots and exports remain pending until produced in an authorised tenant.
- Joiner–Mover–Leaver identity controls
- Role-, group- and licence-based access planning
- MFA and Conditional Access interpretation
- Intune enrolment and compliance troubleshooting
- Safe pilot, exception and rollback procedures
- Behaviour-tested PowerShell change planning
- Security-conscious ticket and administrative documentation
- Read the replacement-device sign-in case study.
- Review the Joiner–Mover–Leaver controls.
- Inspect the Conditional Access baseline and Intune baseline.
- Review the change-plan script and Pester tests.
- See the synthetic example output and authorised evidence guide.
├── data/lab-users.csv
├── scripts/New-IdentityChangePlan.ps1
├── tests/New-IdentityChangePlan.Tests.ps1
├── sample-output/identity-plan.example.json
├── docs/joiner-mover-leaver.md
├── docs/intune-baseline.md
├── docs/case-study-device-compliance-signin.md
├── docs/evidence-capture.md
├── policies/conditional-access-baseline.md
└── .github/workflows/powershell-syntax.yml
.\scripts\New-IdentityChangePlan.ps1 `
-InputPath .\data\lab-users.csv `
-OutputPath .\output\identity-plan.jsonThe script validates each record and produces reviewable joiner, mover, leaver or access-review actions. It intentionally makes no Microsoft Graph calls and performs no tenant changes.
GitHub Actions parses every PowerShell file, runs Pester tests and validates the synthetic JSON and CSV evidence. The checks verify:
- valid joiners produce reviewable plans with MFA registration;
- invalid status, UPN and manager data are rejected;
- leaver actions preserve approval and retention controls;
- missing input columns fail safely;
- generated reports explicitly state that no tenant changes occurred;
- published evidence files use the synthetic environment and reserved
.exampleidentities.
Current evidence status: public source, behavioural tests, synthetic inputs and outputs, and automated validation are available for review. Tenant screenshots and live execution evidence are intentionally not claimed.
- Receive an approved request.
- Validate the identity record.
- Generate and review the change plan.
- Confirm least privilege and approval ownership.
- Pilot in an authorised tenant.
- Validate the sign-in, access and device outcome.
- Record evidence and rollback results.
- Connect a dedicated test tenant
- Replace the example domain with the verified tenant domain
- Implement Microsoft Graph authentication using least-privilege permissions
- Run Conditional Access policies in report-only mode
- Test with dedicated pilot identities and emergency-access controls
- Export sanitised policy, sign-in and compliance evidence
- Document rollback tests and results
No passwords, tokens, MFA codes or private tenant data are stored here. Destructive account and device actions require explicit approval, ownership verification and an organisation-specific retention process.
Isaac Lovelace Yanney — IT Support & Technical Operations
GitHub · LinkedIn · Portfolio