All words
№ 01·Mar 24, 2026·3 min read

Zero-touch deployment, end to end

How we shipped fleet provisioning that boots itself, signs in, and shows up ready.

AutomationProvisioningIntune

The old process took forty minutes of someone's attention per machine. Unbox, image, join the domain, install the agent stack, name it, log in once to confirm, ship it. Multiply that by a hiring plan and you have a full-time job nobody wanted.

Zero-touch means the box goes from the vendor to the user and the only human step is opening it. Everything else — enrollment, policy, apps, security baseline — happens between first boot and first login.

What actually has to be true

Three things, and they are less about tooling than about discipline.

The enrollment path

The device boots, hits the network, and identifies itself against the registration record. From there the profile drives everything: the join type, the naming convention, the account setup, and whether the user sees a status page while it works.

We show the status page. It costs nothing and it converts "my laptop is broken" tickets into "my laptop is still setting up" patience.

Device boot
  -> Network
  -> Autopilot profile match
  -> Entra join
  -> Enrollment Status Page (blocking)
       -> Security baseline
       -> Certificates + Wi-Fi
       -> Required app set
  -> User desktop

The blocking step matters. If you let the user onto the desktop before the required set lands, they will start working, and the first policy-driven restart will interrupt them.

Sequencing the app set

This is where most of the pain lives. Apps have dependencies, some need reboots, and a few will fight each other if they install in parallel.

We split the catalog into two tiers. Required is the smallest set a person cannot start their day without: the browser, the identity agent, the VPN, the endpoint agent. Everything else is available — published to the portal, installed on demand.

The instinct is to preload everything. Resist it. Every app in the required tier is another thing that can fail during provisioning, and a failure there blocks the whole device.

Cutting the required tier from nineteen apps to six took our average provisioning time from just over an hour to nineteen minutes, and dropped the failure rate more than the time saving alone would suggest.

Naming and the small stuff

Device naming looks trivial and turns into an archaeology problem two years later. We settled on a prefix for the fleet, a location code, and the serial. It sorts correctly, it is greppable, and it survives a reimage because the serial is the anchor.

Certificates and Wi-Fi profiles deploy before the app set. A device that finishes provisioning and then cannot reach the corporate network is a device that comes back to you.

What broke

Honest list.

  1. Vendor hash uploads lagged. Two orders shipped before the records landed, and those machines fell through to the standard out-of-box path. Now we verify registration before the order is marked fulfilled.
  2. A driver update inside the blocking phase forced a restart mid-enrollment. Moved it to the available tier.
  3. Regional Wi-Fi profiles were scoped too broadly, so devices pulled a config for a site they would never see. Scoping is now driven by the same location code as the device name.

Where it stands

New hires get a machine that arrives sealed and is ready before their first standup. Reimaging a broken device is a wipe command, not a bench appointment. The provisioning runbook is four sentences long, and three of them are about what to do when it fails.

The work that used to be forty minutes of someone's afternoon is now a record in a portal and a status page the user watches for nineteen minutes. That is the whole win.