What is Windows Autopilot?

Windows Autopilot is Microsoft's zero-touch provisioning framework that transforms a factory-fresh Windows device into a corporate-managed workstation without any IT imaging. The device ships directly to the end user, who signs in with their corporate credentials — Autopilot handles Azure AD Join, Intune enrollment, and app deployment automatically.

From a deployment architecture perspective, Autopilot sits at the intersection of Azure Active Directory, Intune (Microsoft Endpoint Manager), and the Windows Out-of-Box Experience (OOBE). The provisioning flow is entirely cloud-driven: no local MDT/SCCM server, no golden image, no USB drive.

Autopilot is not an imaging tool — it does not change the factory Windows image. It configures an existing Windows installation. If you need to enforce a specific OS version or language, handle that at the OEM order stage or use pre-provisioning (White Glove) mode.

Prerequisites & Licences

Before you start, confirm the following are in place:

Deployment ModeJoin TypeUser TypeBest For
User-drivenAzure AD JoinCloud-onlyRemote workers, new hires
User-drivenHybrid Azure AD JoinAD + AAD syncedTraditional orgs migrating to cloud
Self-deployingAzure AD JoinShared / kioskMeeting rooms, shared workstations
Pre-provisioning (White Glove)Azure AD / HybridEitherHigh-touch pre-staging by IT

Collecting & Uploading Hardware Hashes

Every Autopilot device must be registered with your tenant via its hardware hash — a cryptographic fingerprint derived from the device's hardware IDs. There are three ways to collect hashes:

Option A — PowerShell on a fresh device (OOBE stage)

Boot the device to the OOBE screen, press Shift+F10 to open a command prompt, then run:

PowerShell
Install-Script -Name Get-WindowsAutopilotInfo -Force
Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned -Force
Get-WindowsAutopilotInfo -Online

The -Online flag registers the device directly to your tenant after you authenticate. For bulk collection, omit -Online and use -OutputFile hashes.csv to generate a CSV for later import.

Option B — OEM/Reseller registration

Microsoft-authorised resellers (Dell, Lenovo, HP, etc.) can register devices to your tenant at time of purchase using the Microsoft Partner Center. This is the recommended path for large orders — no manual hash collection required.

Option C — CSV import in MEM Admin Center

In the Microsoft Endpoint Manager Admin Center, navigate to Devices → Windows → Enrollment → Devices (Windows Autopilot devices).
Click Import and upload the CSV file collected via the PowerShell script. The CSV must contain: Device Serial Number, Windows Product ID, Hardware Hash.
Wait for the import to complete (up to 15 minutes for large batches). Devices appear in the list with status Registered.
Assign the devices to a group (static or dynamic). The Autopilot profile will be applied via this group assignment.

Creating the Deployment Profile

The Autopilot deployment profile controls the OOBE experience and the join type. Go to Devices → Windows → Enrollment → Deployment Profiles → Create Profile → Windows PC.

Key profile settings

SettingRecommended ValueNotes
Deployment modeUser-drivenUse Self-deploying for kiosks
Join to Azure AD asAzure AD joinedOr Hybrid — see next section
Microsoft Software Licence TermsHidePre-accepted by IT
Privacy settingsHideReduces OOBE steps for users
Account change optionsHidePrevents users changing the join type
User account typeStandardAdmin only if explicitly needed
Apply device name templatee.g. WKS-%RAND:4%Unique names help with asset management
Assign the profile to a device group, not a user group. The profile must be resolved before the user signs in — user group assignments are evaluated too late in the flow.

Configuring the Enrollment Status Page

The ESP (Enrollment Status Page) is the progress screen shown during provisioning. It blocks device use until all assigned apps and policies are installed, ensuring the device is fully compliant before the user reaches the desktop.

Navigate to Devices → Windows → Enrollment → Enrollment Status Page → Create.

Recommended ESP settings

Only add apps to the ESP's Selected apps list if they are truly critical for the device to be functional. Every app in this list extends provisioning time. Business-critical apps like VPN clients, EDR agents, and identity tools are good candidates; general productivity apps are not.

Hybrid Azure AD Join Variant

If your environment uses on-premises Active Directory synced to Azure AD via Azure AD Connect, you will need the Hybrid AADJ variant. This joins the device to both your on-prem domain and Azure AD simultaneously.

Additional requirements for Hybrid AADJ

PowerShell — Intune Connector verification
# Run on the connector server to verify service health
Get-Service -Name "ODJConnectorService" | Select Name, Status, StartType

# Check the connector log for errors
Get-Content "C:\ProgramData\Microsoft\ODJConnector\Logs\ODJConnector.log" -Tail 50

Testing the End-to-End Flow

Before rolling out to production users, validate the complete flow on a test device:

Register the test device's hash and assign it to the Autopilot device group.
Perform a full factory reset: Settings → System → Recovery → Reset this PC → Remove everything. This triggers the OOBE flow on next boot.
At the "Set up for an organisation" screen, confirm the Autopilot profile loads (look for your company branding if configured).
Sign in with a test user account. Monitor the ESP screen and note which apps take longest.
After provisioning completes, run dsregcmd /status to confirm join state, and open Settings → Accounts → Access work or school to verify Intune enrollment.
In MEM Admin Center, confirm the device appears under Devices → Windows → All devices with a Compliant status.

Common Error Codes & Fixes

The table below covers the most frequent Autopilot errors encountered in production. For detailed fix steps on specific codes, see the Troubleshooting Hub.

Error CodeMeaningQuick Fix
0x801c03eaAzure AD Join blockedCheck AAD device settings and MDM scope
0x80180014MDM enrollment not authorisedVerify user has Intune licence
0x801c0003User not allowed to join Azure ADCheck "Users may join devices" in AAD settings
0x80070774No Autopilot profile foundConfirm device is registered and group is assigned
ESP timeoutApp install exceeded time limitCheck IME logs; reduce blocking app list
A successful Autopilot deployment results in a device that is Azure AD Joined, Intune enrolled, compliant, and has all business-critical apps installed — before the user ever reaches the desktop. That is the goal.

BA

Badra Ali Diakite

Senior IT Consultant specialising in Microsoft 365, Intune, Zero Trust architecture and network infrastructure. 15+ years across 28+ countries in both military and enterprise environments.