HomeNewsletterCommunityMVP FeedToolsArchiveBlogToday's NewsAboutServicesQuick Links★ Pro 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, which deployment runs depends on its association state: an unassociated device runs the classic profile, while an associated device runs APDP. Deregistering is only one of the two ways out. 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 the 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, which one runs depends on the device’s association state. Microsoft states it plainly: if the device isn’t associated with your tenant, Windows Autopilot registration takes precedence and the classic deployment runs instead; if the device is associated, device association takes precedence and the APDP deployment runs. That gives you two routes, not one — associate the device, or deregister it from classic Autopilot. Associating is usually the better choice: it leaves Autopilot registration intact and it unlocks the OOBE settings and the device-name template, which only work on associated devices.

Why it happens: 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)
OOBE progress screenEnrollment Status Page (ESP), with device and user phasesNo ESP. A Setting up for work or school window with a round progress bar
Provisioning speedBaselineMicrosoft describes it as a “faster, more consistent provisioning experience” with near real-time monitoring. No specific target time is published — measure it in your own pilot.
Windows versionWindows 10 and Windows 11Windows 11 24H2 or later; 23H2 or 22H2 with KB5035942 or later
Hybrid Entra JoinSupportedNot supported
Self-deploying modeSupportedNot supported
Pre-provisioning (white glove)SupportedNot supported
Co-management enrollmentSupportedNot supported
Device naming templateSupportedSupported — associated devices only, via Apply device name template
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, version 23H2 with KB5035942 or later, or version 22H2 with KB5035942 or later. Windows 11 installation media dated April 2024 or later already includes KB5035942, so most in-service 22H2 and 23H2 devices already qualify — do not write those fleets off. Windows 10 is not supported at any patch level. 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; 22631/22621 (23H2/22H2) also qualify with KB5035942 or later [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 center›Groups›All groups›New 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, and under By platform select Windows. Under Device onboarding select Enrollment, then under Windows Autopilot device preparation select Device preparation policies.
  3. Select Create, then User Driven.
  4. On the Introduction page, select Next. On the Basics page, enter a Name and optional Description, then 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 settings page, expand Deployment settings and set Deployment mode to User-driven, Deployment type to Single user, and Join type to Microsoft Entra joined. Set User account type to Standard User or Administrator.
  7. Still on Configuration settings, expand the Apps section (maximum 25 applications) and the Scripts section (maximum 10 PowerShell scripts). Both must already be assigned to the device group from Stage 1, and both must run in the System context, since OOBE runs with no user signed in. Note these are sections inside Configuration settings, not a separate wizard page. Then select Next, select Next again on Scope tags.
  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 center›Devices›Enrollment›Windows›Autopilot 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. Microsoft documents this permission as part of building a custom Intune role for Autopilot device preparation administrators, alongside Device configurations (Read, Create, Update, Delete, Assign), Managed apps (Read), Mobile apps (Read) and Organization (Read). If you intend to rely on a built-in role instead, verify the permission is actually present rather than assuming it.

Stage 4 — Deregister candidate devices from classic Autopilot

Note: deregistration is only one of the two supported routes, and it is the more destructive one. If you associate the device with your tenant instead (Devices › Enrollment › Device association › Devices), device association takes precedence and APDP runs even though the classic registration still exists. Association also marks the device corporate-owned automatically and enables the OOBE settings and device-name template. Use the deregistration path below when you specifically want the device off classic Autopilot; otherwise prefer association.

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, let the deletion propagate before attempting a new OOBE enrollment. Microsoft notes that removal can take a few minutes to show up, but publishes no guaranteed propagation window, so treat any specific figure you read (including in this post) as a field observation rather than a documented SLA. Confirm the serial has actually disappeared from Devices › Enrollment › Devices under Windows Autopilot before you re-enroll, rather than waiting a fixed number of minutes.

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 for the Setting up for work or school window with its round progress bar. This doubles as your best diagnostic: APDP does not use the Enrollment Status Page, so if the ESP appears, the device is not running an APDP deployment — it is almost certainly still picking up a classic Autopilot registration or profile. Time the run and use that as your own baseline. Microsoft publishes no target completion time, and yours will depend heavily on how many of your 25 permitted apps you actually deploy and how large they are.

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 for work or school
Microsoft describes this screen as a Setting up for work or school window with a round progress bar. The per-item breakdown below is illustrative.
Apps and policies 4 / 5 complete
✓Microsoft 365 Apps
✓Microsoft Defender configuration
✓Security baseline policies
✓Compliance policy
● Company Portal — installing...
Illustrative only — Microsoft publishes no target completion time for Windows Autopilot device preparation

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…