HomeNewsletterCommunityMVP FeedToolsArchiveBlogToday's NewsAboutServicesQuick Links Subscribe free
← Back to Blog
Autopilot AutopilotIntuneEntraIDWindows11DevicePreparationMigrationPowerShellOOBE

Moving from Classic Windows Autopilot to APDP — The IT Admin Migration Checklist

IA
Imran Awan
18 September 2026
The short version

Windows Autopilot Device Preparation (APDP) is now Microsoft's recommended path for new Windows 11 user-driven deployments. It drops the hardware hash CSV, replaces dynamic device groups with Enrollment Time Grouping, and delivers profiles post-authentication rather than pre-login. If a device is still registered as a classic Autopilot device, the v1 profile wins every time — you must deregister before APDP will work. Hybrid join, self-deploying mode, pre-provisioning, co-management, and all Windows 10 devices must stay on classic Autopilot for now.

The problem: classic Autopilot is not going away, but APDP is where Microsoft is heading

If you have been running Windows Autopilot for any length of time you know the flow: collect the 4K hardware hash from each device, import it into Intune or have the OEM or reseller register it directly, build a dynamic Microsoft Entra security group keyed on the EnrollmentProfileName or OrderID Autopilot attribute, assign your deployment profile to that group, and watch a 30–60 minute Enrollment Status Page crawl to its end.

That flow still works. Microsoft has not announced an end-of-life date for classic Windows Autopilot. But in 2026 the guidance is clear: new Windows 11 user-driven deployments should be built on Windows Autopilot Device Preparation (APDP), and existing classic Autopilot deployments that match the eligibility criteria should be migrated across.

The challenge is that the two systems are architecturally different enough that you cannot simply reassign a policy. There are prerequisites to meet, objects to create, devices to deregister, and a specific pitfall that will silently keep your devices on the classic path even after you believe you have cut them over.

Critical: If a device is registered as a classic Windows Autopilot device and you have also created an APDP policy, the classic Autopilot profile always wins. APDP is never attempted. You must deregister the device from classic Autopilot before APDP will take effect. This is the most common mistake admins make during migration.

Why it works differently: the architectural shift from hash to identity

Classic Autopilot is device-centric. The 4K hardware hash uniquely identifies the physical machine before any user touches it. When the device connects to the internet during OOBE, Windows contacts the Autopilot service and downloads a deployment profile based on that hash. The user has not authenticated yet. The profile dictates what the OOBE looks like and which policies apply.

APDP is identity-centric. There is no pre-registered hash. There is no profile download before the user signs in. Instead, when the user enters their Entra ID credentials during OOBE, the service looks up which APDP policy covers that user, and at that moment the device is added to a static Microsoft Entra security group via Enrollment Time Grouping (ETG). Apps, scripts, and policies assigned to that group are then delivered to the device in near real-time.

AspectClassic Autopilot (v1)APDP (v2)
Device registrationHardware hash CSV required (4K format)No hardware hash, no CSV, no OEM registration needed
Profile deliveryPre-authentication, before user signs inPost-authentication, after Entra ID sign-in during OOBE
Device groupingDynamic Entra security group (EnrollmentProfileName, OrderID, etc.)Static Entra security group via Enrollment Time Grouping
Policy assigned toDevice group (dynamic)User group (static or dynamic)
ESP equivalentEnrollment Status Page (ESP) with device and user phaseDeployment monitoring screen in OOBE (faster, near real-time)
Typical enrollment time30–60 minutesTarget under 10 minutes
Windows versionWindows 10 and Windows 11Windows 11 24H2 or later only
Hybrid Entra JoinSupportedNot supported
Self-deploying modeSupportedNot supported
Pre-provisioning (white glove)SupportedNot supported
Co-management enrollmentSupportedNot supported
Device naming templateSupportedNot supported
Note: Because APDP uses a static device group rather than a dynamic one, group membership is resolved immediately at enrollment time. Dynamic groups in Entra ID can take anywhere from a few minutes to over an hour to evaluate and sync. Removing that latency is a significant part of why APDP deployments complete faster.

How to verify: is your environment APDP-ready?

Before touching any devices or policies, run through this eligibility check. A single "no" in the wrong column means that population must stay on classic Autopilot.

Step 1 — Check device operating system

APDP requires Windows 11 version 24H2 or later. Devices shipped with Windows 10, or Windows 11 versions earlier than 24H2, cannot use APDP. Run this on any candidate device during OOBE (Shift+F10 to open a command prompt) or on an enrolled machine:

PowerShell — Check Windows version
# Check the OS build number — must be 26100.xxxx (24H2) or higher for APDP [System.Environment]::OSVersion.Version Get-ComputerInfo | Select-Object OsName, OsBuildNumber, OsVersion # 24H2 = build 26100, 25H2 = build 26200. Both are APDP-eligible.

Step 2 — Identify which scenarios you are running

Map each of your current Autopilot deployment profiles to the scenarios below. Any population using an unsupported scenario must remain on classic Autopilot.

ScenarioAPDP-eligible?Action
User-driven Entra join, Windows 11 24H2+YesCandidate for migration
User-driven Entra join, Windows 10 or < 24H2NoStay on classic Autopilot
Hybrid Entra joinNoStay on classic Autopilot
Self-deploying mode (kiosk, shared device)NoStay on classic Autopilot
Pre-provisioning / white gloveNoStay on classic Autopilot
Co-management with Configuration ManagerNoStay on classic Autopilot

Step 3 — Check whether devices are currently registered in classic Autopilot

Use this PowerShell script to export a list of all devices registered in your classic Autopilot service. You will need this list during the deregistration step.

PowerShell — Export Autopilot-registered devices
# Requires Microsoft.Graph.DeviceManagement module Connect-MgGraph -Scopes "DeviceManagementServiceConfig.Read.All" Get-MgDeviceManagementWindowsAutopilotDeviceIdentity -All | Select-Object SerialNumber, Model, Manufacturer, @{N='GroupTag';E={$_.GroupTag}}, @{N='ManagedDeviceId';E={$_.ManagedDeviceId}}, @{N='EnrollmentState';E={$_.EnrollmentState}} | Export-Csv "C:\Temp\AutopilotDevices-$(Get-Date -f yyyyMMdd).csv" -NoTypeInformation Write-Host "Exported. Open the CSV to review which devices are registered."
Gotcha: A device can appear enrolled in Intune but not registered in classic Autopilot (for example, devices enrolled via a provisioning package or manual MDM enrollment). Only devices with a row in the Autopilot service export will conflict with APDP. Devices that have never been registered in Autopilot at all can go straight to APDP without any deregistration step.

The fix: migrating from classic Autopilot to APDP step by step

Migration is a five-stage process. Do not skip stage 2 (Intune Provisioning Client as group owner) — APDP silently fails to add devices to the group if this is missing, and there is no warning in the Intune admin center.

Stage 1 — Create the static Entra security group for devices

APDP uses Enrollment Time Grouping to add each device to a static Entra security group the moment the user authenticates. You need to create this group before you create the policy.

  1. Sign in to the Microsoft Entra admin center (entra.microsoft.com).
  2. Go to Groups › All groups › New group.
  3. Set Group type to Security.
  4. Set Membership type to Assigned (not dynamic — ETG adds devices at enrollment, not via a membership rule).
  5. Enter a group name, e.g. APDP-Devices-HQ-Laptops.
  6. Confirm Microsoft Entra roles can be assigned to the group is set to No. If this is set to Yes, ETG cannot add devices to the group.
  7. Select Create.
Microsoft Entra admin center — New group
Group type Security
Membership type Assigned ← must NOT be Dynamic
Group name APDP-Devices-HQ-Laptops
Microsoft Entra roles can be assigned to the group No ← required for ETG
Entra admin centerGroupsAll groupsNew group

Stage 2 — Add the Intune Provisioning Client as owner of the group

This is the step most documentation buries or omits. APDP uses the Intune Provisioning Client service principal (a first-party Microsoft application in your tenant) to add devices to the target group at enrollment time. If this service principal is not an owner of the group, the group membership step silently fails and devices never land in the group.

  1. Open the group you just created.
  2. Go to Owners › Add owners.
  3. Search for Intune Provisioning Client.
  4. Select it and choose Select.
Entra admin center — APDP-Devices-HQ-Laptops › Manage › Owners
I
Intune Provisioning Client
Service Principal
Owner ✓
This service principal is what adds the device to the group at enrollment time via Enrollment Time Grouping (ETG).
Warning: If you skip adding the Intune Provisioning Client as owner, devices will enroll successfully via APDP but will not be added to the device group. Apps, scripts, and policies assigned to that group will not deploy during OOBE. There is no enrollment error — the deployment just completes without the expected payloads.

You can verify the owner was added correctly with PowerShell:

PowerShell — Verify Intune Provisioning Client is group owner
Connect-MgGraph -Scopes "Group.Read.All" $groupId = "<paste-your-group-object-id>" Get-MgGroupOwner -GroupId $groupId | Select-Object Id, DisplayName # Expected output: Intune Provisioning Client should appear in the list. # If it does not, go back to the group in Entra admin center and add it.

Stage 3 — Create the APDP policy in Intune

  1. Sign in to the Intune admin center (intune.microsoft.com).
  2. Go to Devices › Enrollment › Windows › Autopilot device preparation.
  3. Select Create policy.
  4. On the Basics page: give the policy a name and select Next.
  5. On the Device group page: select the static group you created in Stage 1. This is the ETG target group. Select Next.
  6. On the Configuration page: choose your deployment mode settings.
  7. On the Apps and scripts page: add the apps and scripts to deploy during OOBE. These must be assigned to the device group from Stage 1 in Intune already — APDP tracks items assigned to that group.
  8. On the Assignments page: assign the policy to the user group whose members will use APDP when they sign into a new device during OOBE.
  9. Select Next › Create.
Intune admin centerDevicesEnrollmentWindowsAutopilot device preparation
Intune admin center — Devices › Enrollment › Windows › Autopilot device preparation
APDP - HQ Laptops - Windows 11
Device group: APDP-Devices-HQ-Laptops  |  Assigned to: IT Staff - London
Active
Policies, apps and scripts assigned to the device group are tracked and deployed during OOBE in near real-time.
Note: The admin account creating the APDP policy must have the Enrollment time device membership assignment RBAC permission in Intune. Without it, the Device group page in the policy wizard will appear but you will not be able to save. The permission is included in the built-in Intune Administrator role. If you use a custom RBAC role, add it explicitly.

Stage 4 — Deregister candidate devices from classic Autopilot

Any device you want to migrate must first be removed from the classic Autopilot service. The deregistration does not wipe the device. It removes the entry from the Autopilot database so that on next enrollment the device will not receive a classic Autopilot profile.

In the Intune admin center:

  1. Go to Devices › Windows › Windows enrollment › Devices (under Autopilot).
  2. Filter by the group tag or serial number range for your pilot cohort.
  3. Select the devices and choose Delete (this removes them from the Autopilot service, not from Intune or Entra ID).

For bulk deregistration using the serial numbers from the CSV you exported in Stage 0 (verify step):

PowerShell — Bulk deregister devices from classic Autopilot
# Read the serial numbers you want to deregister from a text file (one per line) Connect-MgGraph -Scopes "DeviceManagementServiceConfig.ReadWrite.All" $serials = Get-Content "C:\Temp\pilot-serials.txt" foreach ($serial in $serials) { $device = Get-MgDeviceManagementWindowsAutopilotDeviceIdentity -All | Where-Object { $_.SerialNumber -eq $serial } if ($device) { Remove-MgDeviceManagementWindowsAutopilotDeviceIdentity -WindowsAutopilotDeviceIdentityId $device.Id Write-Host "Deregistered: $serial" } else { Write-Host "Not found in Autopilot: $serial" -ForegroundColor Yellow } } # After this script: verify in Intune admin center Autopilot Devices # that none of the serials appear. This may take a few minutes to propagate.
Gotcha: After deregistering a device, allow at least 5–10 minutes before attempting a new OOBE enrollment. The Autopilot service database takes time to propagate the deletion. If you factory-reset and enroll immediately after deregistration, the device may still download the old classic Autopilot profile from the cache.

Stage 5 — Test with a pilot device

Factory-reset or use a new device that has never been enrolled. Boot to OOBE, connect to the internet, enter the credentials of a user who is in the assigned user group for the APDP policy. Watch the deployment monitoring screen (the APDP equivalent of the ESP). A successful APDP enrollment completes in under 10 minutes for a typical app set.

Tip: Use a fresh device that has never had a hardware hash registered anywhere — or a virtual machine — for your initial APDP test. This eliminates any risk of the classic Autopilot profile precedence behaviour interfering with your pilot results.

Proof it worked: what success looks like in Intune

After a successful APDP enrollment you should see all of the following:

In the Intune admin center — Device list

The device appears in Devices › All devices with the enrollment profile name identifying it as an APDP enrollment (not a classic Autopilot enrollment). The Device enrollment type shows Windows Autopilot device preparation rather than Windows Autopilot.

Intune admin center — Device properties
Enrollment type Windows Autopilot device preparation
Compliance state Compliant
Device group membership APDP-Devices-HQ-Laptops
Setting up your device
Please wait while we configure your device for work
Apps and policies 4 / 5 complete
Microsoft 365 Apps
Microsoft Defender configuration
Security baseline policies
Compliance policy
Company Portal — installing...
Windows Autopilot device preparation — typically completes in under 10 minutes

In the Entra admin center — Group membership

Check the static device group from Stage 1. The new device should appear as a member within seconds of completing enrollment. If it does not appear within a few minutes, the Intune Provisioning Client owner permission is missing (Stage 2).

PowerShell — Confirm device was added to the static group
Connect-MgGraph -Scopes "Group.Read.All","Device.Read.All" $groupId = "<your-device-group-object-id>" Get-MgGroupMember -GroupId $groupId | Select-Object Id, DisplayName # The newly enrolled device should appear in this list. # If it's missing: check Intune Provisioning Client is an owner of the group. # If apps/scripts didn't deploy: verify they are assigned to this same group in Intune.

Confirming no classic Autopilot registration remains

PowerShell — Verify device is not registered in classic Autopilot
$serial = (Get-CimInstance Win32_BIOS).SerialNumber Connect-MgGraph -Scopes "DeviceManagementServiceConfig.Read.All" $apReg = Get-MgDeviceManagementWindowsAutopilotDeviceIdentity -All | Where-Object { $_.SerialNumber -eq $serial } if ($apReg) { Write-Host "PROBLEM: Device is still registered in classic Autopilot. APDP will not be used." -ForegroundColor Red } else { Write-Host "Clean: no classic Autopilot registration found. APDP is in control." -ForegroundColor Green }

References

Microsoft MVP community deep-dives

AuthorPostWhat it adds
Peter van der Woude (MVP)Understanding enrollment time groupingDeep dive into the ETG mechanism, how the Intune Provisioning Client adds devices to groups, and the exact RBAC permission needed

Last updated: 18 September 2026. This post reflects APDP capabilities as of Windows 11 24H2 and Intune September 2026 release. APDP feature parity with classic Autopilot is evolving — check the Microsoft Learn comparison page for the latest supported scenarios.

Was this post helpful?
React below — no account needed
Share this post
LinkedIn X / Twitter Reddit Bluesky

More from EndpointWeekly

Autopilot
The Autopilot Conditional Access deadlock: requiring a compliant…
A brand-new Autopilot device cannot be compliant before it is enrolled, so a Conditional…
Autopilot
Windows Autopilot MDM Log Collection: Complete Troubleshooting…
Every command, registry key, event ID, and error code for diagnosing Windows Autopilot…
Autopilot
Windows Autopilot: Complete Device Lifecycle Management Guide
Zero-touch provisioning from factory to fully managed desktop. Complete guide to…