The problem: stuck in OOBE or ESP with no error on screen
A device powers on, hits the Windows out-of-box experience or the Enrollment Status Page, and stops. No helpful error message. No progress. The admin is staring at a blue screen with a spinner, or at an ESP page that has been counting down for 45 minutes. The fix is almost always in the logs — but those logs are not in an obvious place, and in OOBE they disappear the moment the device reboots.
This post is the single reference for every log collection method across every Autopilot scenario. It covers the commands, what’s inside the collected files, every registry key the MDM stack writes, every Autopilot event ID, every error code, and the system binaries involved. An IT engineer who has never opened an MDM diagnostic cab before should be able to follow this from start to finish and know exactly what went wrong.
How the MDM log pipeline works
Two tools are involved and they are often confused with each other. They do different things:
MdmDiagnosticsTool.exe is a collection tool. It snapshots the current MDM state — registry values, event logs, ETL traces, policy summaries — and packages everything into a cab or zip file. You run it on the broken device to get the data out.
Get-AutopilotDiagnostics is an analysis tool. It reads an existing cab file and produces a human-readable summary of what it finds. You run it on your admin workstation after you have the cab.
The workflow is always: collect with MdmDiagnosticsTool.exe → transfer the cab → analyse with Get-AutopilotDiagnostics or open the files directly.
-area flag in MdmDiagnosticsTool.exe accepts semicolon-separated values. Combining all four areas — Autopilot;TPM;DeviceProvisioning;DeviceEnrollment — in one command creates a single cab file with everything Microsoft Support needs. Always use the combined command unless you are running in a constrained OOBE environment.Quick reference: which command to run
Jump to the row that matches your situation. Every command below is expanded in detail in the sections that follow.
| Scenario | Command / Method |
|---|---|
| Device stuck in OOBE — blue screen, Shift+F10 | MdmDiagnosticsTool.exe -area Autopilot;TPM;DeviceProvisioning;DeviceEnrollment -cab C:\Users\Public\Documents\MDMDiagnostics\MDMDiagReport.cab |
| Enrolled device — collect all areas from admin CMD | Same command as above, elevated CMD |
| Enrolled device — Settings UI (no command line) | Settings › Accounts › Access work or school › Export your management log files |
| Self-deploying / White Glove / physical device | MdmDiagnosticsTool.exe -area Autopilot;TPM -cab output.cab |
| Runtime provisioning failure | MdmDiagnosticsTool.exe -area DeviceProvisioning -cab output.cab |
| Analyse a collected cab (read and decode) | Get-AutopilotDiagnostics -AllSessions -CABFile .\mdmlogs.cab |
| Register a new device / collect hardware hash | Get-WindowsAutoPilotInfo -OutputFile AutoPilotHWID.csv |
| Windows 10 earlier than 1809 (legacy) | licensingdiag.exe |
| Remote collection via Intune Admin Center | Devices › [Device] › Collect diagnostics |
Method 1: MdmDiagnosticsTool.exe — all variants
MdmDiagnosticsTool.exe is built into Windows 10 version 1809 and later at %windir%\System32\MdmDiagnosticsTool.exe. It must be run as Administrator. During OOBE, the Shift+F10 command prompt is already elevated.
Combined command (recommended — use this in all cases)
C:\> MdmDiagnosticsTool.exe -area Autopilot;TPM;DeviceProvisioning;DeviceEnrollment -cab C:\Users\Public\Documents\MDMDiagnostics\MDMDiagReport.cab Collection started... Area: Autopilot … complete Area: TPM … complete Area: DeviceProvisioning … complete Area: DeviceEnrollment … complete Cab file created: C:\Users\Public\Documents\MDMDiagnostics\MDMDiagReport.cab
Per-area variants (if you only need one area)
# Autopilot profile and enrollment logs only MdmDiagnosticsTool.exe -area Autopilot -cab C:\MDM\Autopilot.cab # TPM attestation logs (required for self-deploying / White Glove) MdmDiagnosticsTool.exe -area TPM -cab C:\MDM\TPM.cab # Runtime provisioning (provisioning packages, multivariant conditions) MdmDiagnosticsTool.exe -area DeviceProvisioning -cab C:\MDM\DeviceProvisioning.cab # MDM enrollment logs MdmDiagnosticsTool.exe -area DeviceEnrollment -cab C:\MDM\DeviceEnrollment.cab # ZIP output (equivalent to the Settings UI export) MdmDiagnosticsTool.exe -area "DeviceEnrollment;DeviceProvisioning;Autopilot" -zip "C:\Users\Public\Documents\MDMDiagReport.zip"
What is inside the CAB file
Extract the cab with any archive tool (right-click › Extract All in Windows Explorer, or expand -F:* MDMDiagReport.cab .\output\). Start with the files in priority order — the registry dump resolves most ESP problems without needing to open the ETL traces.
| File | What it contains | Start here? |
|---|---|---|
MdmDiagReport_RegistryDump.reg | Dump of all MDM-relevant registry keys. Search for InstallationState = 4 to find the Win32 app blocking ESP. Also contains the full Autopilot profile settings (AadTenantId, TenantMatched, IsAutopilotDisabled) and ESP tracking keys. | Yes — open first |
MDMDiagHtmlReport.html | Summary report: management server URL, MDM device ID, enrolled certificates, applied policies. Open in a browser for a quick health check. | Yes — open second |
MDMDiagReport.xml | Detailed enrollment variables, provisioning packages, multivariant conditions. Required for complex provisioning package failures. | If provisioning package used |
*.evtx | Event log exports. Primary: microsoft-windows-devicemanagement-enterprise-diagnostics-provider-admin.evtx. Open with Event Viewer (eventvwr.msc). | For event ID analysis |
DiagnosticLogCSP_Collector_Autopilot_* | ETL trace from the Autopilot ETW provider. View with Windows Performance Analyzer. | For deep Autopilot trace |
DiagnosticLogCSP_Collector_DeviceProvisioning_* | ETL trace from Microsoft-Windows-Provisioning-Diagnostics-Provider. | For provisioning trace |
MdmDiagLogMetadata.json | Records the command-line arguments used when MdmDiagnosticsTool.exe was run. | Reference only |
MdmLogCollectorFootPrint.txt | The tool’s own run log. Check here if the cab appears empty or incomplete. | If cab looks wrong |
.evtx and ETL files are binary — they are not readable in a text editor. Open EVTX files with Event Viewer (eventvwr.msc › Action › Open Saved Log). Open ETL files with Windows Performance Analyzer (WPA) or tracerpt. The HTML and registry dump are plain text and can be opened immediately.Method 2: Get-AutopilotDiagnostics — decode the cab
Get-AutopilotDiagnostics reads a cab file collected by MdmDiagnosticsTool.exe and produces a human-readable summary of every Autopilot session, policy, app, and error code. It is the fastest way to get from raw cab to “here is what went wrong”.
Run this on your admin workstation after transferring the cab from the target device.
# Step 1 — set execution policy for this session if not already set Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass # Step 2 — install the script from PSGallery (one-time) Install-Script -Name Get-AutopilotDiagnostics -Force # Step 3 — go to root so relative paths work cd\ # Step 4 — Shift+right-click the cab → "Copy as path", paste after -CABFile Get-AutopilotDiagnostics -AllSessions -CABFile .\mdmlogs1.cab # Example with a full path (paste the copied path here) Get-AutopilotDiagnostics -AllSessions -CABFile "C:\Users\ionutmarin\OneDrive\Intune\Cases\DiagLogs\mdmlogs1.cab" --- Sample output --- Autopilot profile settings: TenantMatched : True AadTenantId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx IsAutopilotDisabled : 0 Win32 app installation: CompanyPortal : Installed (state 3) SalesForce CRM : Error (state 4) <— ESP blocker
-Scope Process. If you open a new window, you need to set it again. If Get-AutopilotDiagnostics still refuses to run, the machine-level policy is overriding it — check Get-ExecutionPolicy -List and look for a MachinePolicy entry set to Restricted.Method 3: Settings UI export (enrolled device)
The easiest method on a device that has successfully enrolled. No command line needed — any user with access to the work or school account settings can trigger the export.
Output path: C:\Users\Public\Documents\MDMDiagnostics\
The exported file is a zip containing the same files as MdmDiagnosticsTool.exe — registry dump, HTML report, EVTX event logs, and ETL traces. The zip is equivalent to running mdmdiagnosticstool.exe -area DeviceEnrollment;DeviceProvisioning;Autopilot -zip.
Method 4: Intune Admin Center remote collection
For enrolled devices that are online, you can trigger log collection remotely from the Intune portal without touching the device or logging on locally.
After clicking Collect diagnostics, Intune sends a remote command to the device. The device runs the MDM diagnostics collection automatically and uploads the result to Intune. Depending on the device’s check-in cycle this may take 15–30 minutes. Once complete, the cab appears in the device’s Diagnostics section and can be downloaded from the portal.
lgmsapeweu.blob.core.windows.net is reachable from the device. Corporate web proxies and firewalls that inspect HTTPS traffic sometimes block the upload endpoint. Add this URL to your proxy bypass list if collection fails silently.Method 5: ESP “Collect logs” button and the Windows 11 diagnostics page
During the Enrollment Status Page, a Collect logs button appears if the ESP profile has “Turn on log collection and diagnostics page for end users” set to Yes. The button is visible to the end user (or technician) at the point of failure — no admin intervention required at the machine.
Clicking it lets the user copy the logs to a USB drive. The files are the same as a MdmDiagnosticsTool.exe collection.
On Windows 11 only, if the Autopilot diagnostics page is enabled, pressing CTRL+SHIFT+D at any point during ESP or OOBE opens a detailed diagnostics page showing every app, policy, and certificate deployment in real time — the most readable view available without any additional tools.
Method 6: Hardware hash collection for device registration
Before a device can participate in Autopilot it must be registered — its hardware hash uploaded to the Intune admin center. The hardware hash is a unique fingerprint of the device’s hardware that cannot be spoofed. The Get-WindowsAutoPilotInfo script collects it from WMI and exports it to a CSV for import.
# Create a staging directory New-Item -Type Directory -Path "C:\HWID" Set-Location -Path "C:\HWID" # Add the PowerShell scripts folder to the session PATH $env:Path += ";C:\Program Files\WindowsPowerShell\Scripts" # Allow script installation for this process Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned # Install the hash collection script from PSGallery (one-time) Install-Script -Name Get-WindowsAutoPilotInfo # Collect the hardware hash and export to CSV Get-WindowsAutoPilotInfo -OutputFile AutoPilotHWID.csv Hardware hash saved to: C:\HWID\AutoPilotHWID.csv Import this file in: Intune › Devices › Windows › Enrollment › Autopilot › Devices › Import
After collecting the CSV, import it in Intune Admin Center › Devices › Windows › Enrollment › Windows Autopilot › Devices › Import. Allow up to 15 minutes for the device to appear and for Autopilot to sync the profile assignment.
If the CSV import fails with a Base64 error
Autopilot expects padded Base64. Devices occasionally export unpadded hashes. Validate the hash first:
# Paste the hash value from the CSV between the quotes below [System.Text.Encoding]::ascii.getstring( [System.Convert]::FromBase64String("PASTE_HASH_HERE") ) # If this throws "Invalid length for a Base-64 char array" — # add one or two = characters at the end of the hash and retry the import # Error in Intune: "Cannot convert the literal '[HASH]' to the expected type 'Edm.Binary'"
Registry keys: what the MDM stack writes and what to look for
The registry dump from the cab (MdmDiagReport_RegistryDump.reg) is the fastest path to diagnosing most Autopilot and ESP failures. Open it in Notepad and use Ctrl+F to search for the values below.
Autopilot profile settings
HKLM\SOFTWARE\Microsoft\Provisioning\Diagnostics\Autopilot
| Value name | What to look for |
|---|---|
IsAutopilotDisabled | 1 = device is not registered in Autopilot, OR the profile failed to download (network or firewall blocking the Autopilot service endpoint). 0 = profile downloaded successfully. |
TenantMatched | 1 = the user’s Entra tenant matches the device’s registered tenant. 0 = mismatch — the user signed in with a different tenant than the device was registered to. The device forces a restart. |
AadTenantId | The Entra tenant GUID the user authenticated to. Compare with CloudAssignedTenantId. If they differ, TenantMatched will be 0. |
CloudAssignedTenantId | The Entra tenant GUID the device was registered to in Autopilot. Should match AadTenantId. |
CloudAssignedTenantDomain | The onmicrosoft.com domain, e.g. contoso.onmicrosoft.com. Blank if the device is not registered. |
CloudAssignedOobeConfig | Bitmap of OOBE settings from the Autopilot profile. Values: 1=SkipCortana, 2=NotLocalAdmin, 4=SkipExpressSettings, 8=SkipOemRegistration, 16=SkipEula. Add the values for your expected settings and compare. |
ESP FirstSync settings
HKLM\SOFTWARE\Microsoft\Enrollments\{EnrollmentGUID}\FirstSync
| Value name | Meaning |
|---|---|
SkipUserStatusPage | 0xffffffff = the account setup phase (Phase 3) has been skipped via the DMClient CSP SkipUserStatusPage OMA-URI. Expected if your ESP profile skips the user phase. |
SkipDeviceStatusPage | 0xffffffff = the device setup phase (Phase 2) has been skipped. Rarely intentional — verify your ESP profile settings if this is unexpected. |
ESP Win32 app tracking — finding the blocker
HKLM\SOFTWARE\Microsoft\Windows\Autopilot\EnrollmentStatusTracking\Device\Setup\Apps\Tracking\Sidecar\
InstallationState values are universal across all ESP tracking subkeys:
| Value | Meaning |
|---|---|
1 | Not installed — waiting to start |
2 | In progress — installation underway |
3 | Completed — installed successfully |
4 | Error — ESP halts at this app. Copy the Win32App_{GUID} from the key name and look it up in Intune › Apps › Windows to identify which application is failing. |
InstallationState then keep pressing F3 until you see the value dword:00000004. The parent key name (Win32App_{GUID}) is the app blocking ESP. Cross-reference the GUID with the Intune console under Apps › Windows apps to identify the failing deployment.AutoAdminLogon conflict check
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
Value: AutoAdminLogon
If this value is set to 0, Autopilot breaks completely — the device cannot complete the autologon steps required during provisioning. This is sometimes set by imaging tools or security hardening scripts. If Autopilot fails at the very first OOBE screen, check this value before investigating anything else.
Event IDs: Autopilot channel reference
Event logs are in the Applications and Services Logs › Microsoft › Windows › ModernDeployment-Diagnostics-Provider › Autopilot channel in Event Viewer, or inside the EVTX file extracted from the diagnostic cab.
| Event ID | Level | Meaning |
|---|---|---|
| 100 | Warning | Profile not found — temporary. The device is waiting for the profile to download. If this persists and never transitions to Event 161, the device is not registered or cannot reach the Autopilot service endpoint. |
| 101 | Info | Numeric OOBE policy retrieved successfully from the profile. |
| 103 | Info | String OOBE policy retrieved (e.g. tenant domain name). |
| 109 | Info | State-based OOBE setting retrieved from the profile. |
| 111 | Info | All Autopilot profile settings retrieved successfully. Normal operation — good sign. |
| 153 | Info | State changed: ProfileState_Unknown → ProfileState_Available. The device is ready for Autopilot deployment. |
| 160 | Info | Profile download started. |
| 161 | Info | Profile downloaded successfully. OOBE will proceed with the Autopilot experience. |
| 163 | Info | Profile already present on device — no download needed. This appears after imaging. Run sysprep /generalize to reset this state if needed. |
| 164 | Info | Internet connection confirmed. Autopilot will now attempt profile download. |
| 171 | Error | TPM identity confirmation failed. Required for self-deploying and pre-provisioning (White Glove) modes. HRESULT code in the event details. Not required for user-driven mode. |
| 172 | Error | Profile could not be set as available. Usually a consequence of Event 171 (TPM failure). Resolve 171 first. |
| 807 | Error | ZtdDeviceIsNotRegistered — the hardware hash is not in Intune, or no Autopilot profile has been assigned to this device. Register the device or assign a profile. |
| 809 | Error | ZtdDeviceHasNoAssignedProfile — Assigned profile does not exist. The profile was deleted after the device was assigned to it. Re-assign a valid profile. |
| 815 | Error | No Autopilot profile found in the tenant at all. Validate that the profile exists in Intune › Devices › Windows › Enrollment › Autopilot › Deployment profiles and is assigned to a group containing this device. |
| 908 | Error | Serial number or product key mismatch. The hardware in the Autopilot record does not match the physical device. Occurs after a motherboard replacement or if the wrong hash was uploaded. Delete and re-register the device. |
Error codes and common error messages
| Error code | Context | Fix |
|---|---|---|
0x80180014 | Re-enrollment failure. Prior enrollment record still exists in Autopilot for this device. ETW message: Enrollment blocked for AP device by SDM One Time Limit Check | Intune Admin Center › Devices › Windows › Enrollment › Windows Autopilot › Devices › select device › Unblock device |
0x80180014 (alt) | Windows MDM enrollment is disabled in the tenant. | Intune › Devices › Enroll devices › Enrollment device platform restrictions › Windows restrictions › Allow MDM enrollment |
0x80070774 | Hybrid Entra Join Autopilot — ESP failure. Domain mismatch between the Intune Connector for AD server and the target OU. | Reinstall the ODJ Connector on a server that is in the same domain as the target OU. |
80180018 | MDM enrollment failure. Missing Intune, EMS, or Microsoft 365 license. Or the user has reached the device enrollment limit. | Verify license assignment in Entra admin center. Check user’s enrolled device count against the limit in Enrollment restrictions. |
| HTTP 400 on CSV import | Hardware hash has malformed or unpadded Base64. Error body: Cannot convert the literal ‘[DEVICEHASH]’ to the expected type ‘Edm.Binary’ | Validate hash with [System.Convert]::FromBase64String(‘HASH’) in PowerShell. Add = padding characters at the end until the decode succeeds. |
Common verbatim error messages and what they mean
| Message on screen | Root cause |
|---|---|
| “Something went wrong. Can’t connect to the URL of your organization’s MDM terms of use.” | Missing or incorrect Intune/EMS/Microsoft 365 license on the user account. Assign the correct license in Entra. |
| “Another installation is in progress, please try again later.” | TrustedInstaller (Windows Modules Installer) conflict — two MSI-based apps are trying to install simultaneously during ESP. See the TrustedInstaller section below. |
| “The MSA account couldn’t be granted permission to create computer objects in the following OUs.” | Intune Connector for AD account does not have Create Computer Objects permission in the target OU. Grant the permission in Active Directory Users and Computers. |
| “Cannot start service ODJConnectorSvc on computer ‘.’.” | Replication latency between DCs, or a Group Policy is preventing the service from starting. Wait 15 minutes and retry, or force AD replication with repadmin /syncall. |
| “Invalid length for a Base-64 char array or string.” | Hardware hash padding error during CSV import or PowerShell validation. Add = padding to the hash. |
System binaries and DLL files involved in Autopilot
Understanding which binary is responsible for each step helps when a failure message is cryptic or when a log references a component by name.
| Binary / service | Location | Role in Autopilot |
|---|---|---|
MdmDiagnosticsTool.exe | %windir%\System32\ | Primary MDM diagnostic log collection tool. Windows 10 1809 and later. Creates cab or zip output. |
licensingdiag.exe | %windir%\System32\ | Legacy MDM log collection. Windows 10 earlier than 1809 only. Replaced by MdmDiagnosticsTool.exe. |
eventvwr.msc | %windir%\System32\ | Event Viewer console. Opens EVTX files extracted from the diagnostic cab. Use File › Open Saved Log to load a specific EVTX. |
shutdown.exe | %windir%\System32\ | Used during OOBE via the Shift+F10 command prompt. shutdown /r /t 0 restarts immediately; shutdown /s /t 0 shuts down. |
wlidsvc (Microsoft Sign-in Assistant) | Windows Service | Critical: Autopilot uses this service to download the Autopilot profile during OOBE. If disabled by a Security Baseline, hardening script, or Intune policy, the profile download silently fails and IsAutopilotDisabled = 1 appears in the registry. Check status in services.msc. |
| TrustedInstaller (Windows Modules Installer) | Windows Service / %windir%\servicing\TrustedInstaller.exe | Both LOB MSI and Win32 MSI-wrapped app installers use TrustedInstaller. It does not allow simultaneous installations. If two MSI-based apps try to install at the same time during ESP, one fails with “Another installation is in progress.” |
ODJConnectorBoostrapper.exe | C:\Program Files\Microsoft Intune\ODJConnector\ | Installer and uninstaller for the Intune Connector for Active Directory (required for Hybrid Entra Join). Must use this binary — not just the Settings app — for a complete uninstall. |
ODJConnectorEnrollmentWiazard.exe.config | C:\Program Files\Microsoft Intune\ODJConnector\ODJConnectorEnrollmentWizard\ | XML configuration file for the Intune Connector UI. Note: “Wiazard” is Microsoft’s actual filename spelling. |
IsAutopilotDisabled = 1 in the registry and you have confirmed network connectivity to the internet, check services.msc for the Microsoft Account Sign-in Assistant (wlidsvc) service. Security Baselines and CIS hardening scripts commonly set it to Disabled. Set it to Manual and start it, then retry OOBE.ODJ Connector logs (Hybrid Entra Join only)
For Hybrid Entra Join scenarios, the Intune Connector for Active Directory (ODJ Connector) is responsible for creating the computer object in on-premises AD during Autopilot. When it fails, the logs are in a different location than most engineers expect.
| Log location | Status | How to access |
|---|---|---|
Applications and Services Logs › Microsoft › Intune › ODJConnectorService | ✓ Current — use this | Event Viewer (eventvwr.msc) on the connector server |
Applications and Services Logs › ODJ Connector Service | ✗ Legacy — always empty now | Do not use — switch to the Microsoft › Intune path above |
C:\Program Files\Microsoft Intune\ODJConnector\ODJConnectorEnrollmentWizard\ODJConnectorUI.log | ✓ Current | Open in Notepad on the connector server. Contains detailed installation and AD join errors. |
Applications and Services Logs › ODJ Connector Service channel in Event Viewer is always empty in current versions. If you are looking there and finding nothing, switch to Applications and Services Logs › Microsoft › Intune › ODJConnectorService. This is the most common reason engineers report “no logs found” for ODJ Connector failures.Minimum required connector version: 6.2501.2000.5. Check the installed version in Programs and Features before troubleshooting connector issues — older versions have known failures with current Autopilot profiles.
Policies and settings that break Autopilot
Autopilot is sensitive to policies that interfere with autologon, service state, and MSI installation. The following are the most commonly encountered conflicts, confirmed by Microsoft.
| Policy / setting | Why it breaks Autopilot | Where configured |
|---|---|---|
| AppLocker CSP | Triggers a reboot when applied or deleted. Incompatible with ESP — the reboot interrupts the provisioning sequence. | Intune › AppLocker CSP |
| DeviceLock / Password policy | Causes autologon to fail during ESP device phase reboots, especially in kiosk scenarios. | Intune › DeviceLock CSP or GPO |
| Security Baseline — UAC / VBS / Admin Approval Mode | Requires additional reboots and causes unexpected privilege prompts during OOBE. | Intune Security Baselines |
| “Microsoft Account sign-in assistant” = Disabled | Disables the wlidsvc service. Autopilot cannot download the profile. Device shows IsAutopilotDisabled = 1. | Intune › Configuration profiles or GPO |
AutoAdminLogon = 0 in registry | Breaks Autopilot entirely. The registry key at HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon must not have AutoAdminLogon set to 0. | Set by some imaging tools or hardening scripts |
| PreferredAadTenantDomainName policy | Adds a preferred domain suffix to the DefaultUser0 account, breaking Autopilot autologon. | Intune › Policy CSP › Authentication |
| GPO: Interactive logon message title / text | Any configured logon message breaks Autopilot pre-provisioning (White Glove) by interrupting the autologon sequence. | Computer Configuration › Windows Settings › Security Settings › Local Policies › Security Options |
| GPO: Require WHfB or smart card for interactive logon | Breaks pre-provisioning — the technician phase requires autologon which this policy blocks. | Same GPO path as above |
| GPO: UAC – Prompt for credentials on secure desktop | Breaks pre-provisioning by requiring admin approval for operations that need to run silently. | Same GPO path as above |
TrustedInstaller conflict: LOB MSI and Win32 apps installing simultaneously
Both LOB (MSI) app deployments and Win32 app installers use the Windows Modules Installer (TrustedInstaller). TrustedInstaller does not allow two installations to run at the same time. If both types attempt to install concurrently during ESP, one will fail with “Another installation is in progress, please try again later.”
The Microsoft Teams Machine-Wide Installer, which is bundled inside the Microsoft 365 Click-to-Run package, is an MSI component that ESP does not track. It can start at the same time as other Win32 MSI installs, causing random and hard-to-reproduce failures.
Mitigations:
- Deploy Microsoft Teams as a separate Win32 app after Autopilot completes (remove from the Click-to-Run bundle).
- Deploy Microsoft 365 Click-to-Run after ESP completes, not as a tracked ESP app.
- Enable “Continue on error” in the ESP profile for apps that are not critical to block on — Teams will not install but ESP will not fail.
- Use Windows Autopilot Device Preparation, which does not use ESP and supports mixed LOB and Win32 deployments.
Proof it worked: what clean output looks like
After resolving the issue and re-running the provisioning flow, collect a new diagnostic cab and run Get-AutopilotDiagnostics. A clean, successful session produces output similar to this:
Autopilot profile: TenantMatched : True IsAutopilotDisabled : 0 AadTenantId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx CloudAssignedTenantId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (match ✓) ESP — Device Setup phase: CompanyPortal : Completed (InstallationState 3) CorporateVPN : Completed (InstallationState 3) SalesApp : Completed (InstallationState 3) ESP — Account Setup phase: UserCerts : Completed WiFiProfile : Completed Registry check: InstallationState = 4 found : 0 occurrences ✓ AutoAdminLogon : 1 ✓ wlidsvc status : Running ✓
In the Intune Admin Center, a fully provisioned device shows as Compliant and the last check-in time is recent (within the last 15 minutes post-OOBE):
References
- Understand and troubleshoot the Enrollment Status Page — Microsoft Learn
- Collect MDM logs (MdmDiagnosticsTool.exe reference) — Microsoft Learn
- Windows Autopilot troubleshooting FAQ — Microsoft Learn
- Add devices to Windows Autopilot (hardware hash) — Microsoft Learn
- Get-AutopilotDiagnostics v5.6 — PowerShell Gallery
- Format-IntuneDiagData (FIDD) — GitHub
This guide walks through two established third-party tools, not custom EndpointWeekly scripts. Install directly from their official sources below.