Jagdeep Sandhu

Things I've built

Onboard

AD onboarding tool, Revelstoke Mountain Resort

Turns hiring-form responses into Active Directory accounts: a PowerShell engine with a browser front end, and a dry run before anything is created.

Role
Built for my own team at Revelstoke Mountain Resort
Year
2026
Runs on
Runs on a domain-joined Windows workstation. The web app listens on localhost only.

Problem

New staff at the resort come in through a hiring form. Each account used to be built by hand in Active Directory Users and Computers: name, OU, department, manager, groups and start date. Seasonal hiring means many of these land at once.

What I built

  • A PowerShell tool of about 2,500 lines that reads the form's response workbook, shows a dry run of every account it would create, then creates them one at a time with a confirmation for each.
  • OUs, baseline groups and the department mapping live in a config file, not in the code, and a setup check confirms that every OU and group exists before a run.
  • Accounts waiting for their start date are tracked until they're switched on. Every run writes a CSV record of what was created.
  • The same menu handles everyday account work outside the form: find, edit, disable, enable, groups, proxy addresses and password resets.
  • A browser front end that listens on localhost only and asks for a PIN. It calls the same PowerShell library, and adds Microsoft 365 guest invites through Microsoft Graph and Exchange Online tasks.

Stack

PowerShell, Active Directory, Microsoft Graph, Exchange Online, Python, ImportExcel

Outcome

Creating accounts from the form is now a dry run, then one confirmation per person, with a CSV record of every run.

Proof

Runs on a domain-joined Windows workstation. The web app listens on localhost only.