Skip to content

Windows Autopilot enrollment hangs indefinitely on the Enrollment Status Page #49134

Description

@spalmesano0

Fleet versions

  • Discovered: 4.86.2
  • Reproduced: 4.89.0 (Dogfood)

Web browser and operating system: N/A


💥 Actual behavior

During Windows Autopilot enrollment, the Enrollment Status Page ("Setting up your organization's device") gets stuck indefinitely, with tracking sub-items frozen on "Identifying" / "Waiting." The device's MDM session is working throughout (it syncs successfully with Fleet and profiles can still be delivered to it), but the ESP never advances.

Reported by preston across multiple customer tenants, with 56 affected customers tracked on their side.

🛠️ Expected behavior

The Enrollment Status Page should complete once Fleet finishes provisioning the device, allowing the device to proceed past the ESP screen.

🧑‍💻 Steps to reproduce

These steps:

  • Have been confirmed to consistently lead to reproduction in multiple Fleet instances.
  • Describe the workflow that led to the error, but have not yet been reproduced in multiple Fleet instances.
  1. Enroll a Windows device via Autopilot to Fleet.
  2. Let the device proceed through OOBE to the Enrollment Status Page.
  3. ESP intermittently hangs on "Identifying" / "Waiting" and never completes, even though the device continues to check in with Fleet successfully.

🕯️ More info (optional)

  • Internally, Andrey reproduced it on 4.89.0 with a completely blank fleet (no setup experience software/scripts/profiles configured). One of two identically-configured test devices got stuck while the other enrolled successfully.
  • @AndreyKizimenko provided a workaround. Load this script into setup experience for the fleet:
<#
    Fleet setup-experience workaround: ESP account-setup release delay
    ------------------------------------------------------------------
    Purpose:
      Windows Autopilot ESP hangs on "Account setup" because Fleet fires the
      user-scope DMClient release (.../FirstSyncStatus/ServerHasFinishedProvisioning)
      immediately when a team has no setup-experience work to wait on. The device
      rejects that early user-scope write with SyncML 405 and the phase strands.

      Adding a setup-experience item forces handleESPRelease to hold the release
      across check-ins until the item reaches a terminal state. This script does
      nothing but sleep, giving the user-scope MDM context time to become writable
      before Fleet sends the release -> the write acks 200 and the device proceeds.

    Behavior:
      Sleeps for $DelaySeconds (default 60s / 1 min), then exits 0 (success) so
      the ESP is not failed or blocked.

    Notes:
      - Runs as SYSTEM during the account-setup phase.
      - Keep the delay under Fleet's setup-experience script timeout.
#>

$DelaySeconds = 60

Write-Output "[$(Get-Date -Format o)] Fleet ESP delay: sleeping $DelaySeconds seconds to let the user-scope ESP node initialize..."

Start-Sleep -Seconds $DelaySeconds

Write-Output "[$(Get-Date -Format o)] Fleet ESP delay complete; exiting 0."
exit 0

Metadata

Metadata

Assignees

Labels

#g-power-to-pcPower to the PC working group:productProduct Design department (shows up on 🦢 Drafting board)P1Critical: Broken workflow (critical bug), potential vuln, new feature for immediate Fleet needbugSomething isn't working as documentedcustomer-preston

Type

No type

Fields

No fields configured for issues without a type.

Projects

Status
📨 Inbox
Status
📨 Inbox

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions