HomeNewsletterCommunityToolsArchiveBlogAboutQuick Links Subscribe free
← Back to Blog
Intune IntuneEnrollmentError CodesAutopilotTroubleshooting0x801800260x80070774

Intune Enrollment Error Codes: Complete Troubleshooting Guide

IA
Imran Awan
27 June 2026

Intune Enrollment Error Codes: Complete Troubleshooting Reference for IT Admins

Published 27 June 2026 · 12 min read · Microsoft Intune · Windows Enrollment · Autopilot

Intune enrollment failures are among the most time-consuming issues an endpoint administrator can face. The error codes Windows surfaces during MDM enrollment are often cryptic hexadecimal values with little immediate context. This reference guide consolidates the most common enrollment errors, their root causes, and the exact remediation steps to resolve them — saving you the hours of documentation diving that would otherwise be required.

Microsoft MVP Peter van der Woude has extensively documented many of these Intune enrollment errors on his blog over the years, and his analysis informed several of the resolutions covered here. Where relevant, the guidance below aligns with official Microsoft documentation on troubleshooting Windows enrollment errors.

Quick Reference: Enrollment Error Code Table

The table below provides a fast lookup for the most common Intune and MDM enrollment error codes encountered in Windows environments.

Error Code Short Description Common Root Cause Severity
0x80180026 Device join fails / MDM enrollment via Entra Auto MDM enrollment GPO not configured, device limit reached, or Intune client issue High
0x80070774 Autopilot Hybrid Join timeout "Assign user" feature triggers Entra join before domain join; domain controller unreachable; TLS/PKCS registry misconfiguration High
80180018 Device already enrolled in another MDM Prior MDM enrollment not cleaned up; competing MDM authority Medium
8018000a User MDM license not assigned User account missing Intune / EMS / Microsoft 365 license Medium
801c0003 User not authorized to join devices Entra device join limit reached or user not in allowed group Medium
80070774 Domain controller unreachable Network/VPN issue, DC offline, firewall blocking LDAP/Kerberos Medium
0x80090016 TPM required but not available or ready TPM not provisioned, disabled in BIOS/UEFI, or attestation failing High

Error 0x80180026 — Device Join Fails During MDM Enrollment via Entra

This error surfaces when a device attempts to enroll into Intune via an Entra ID (formerly Azure AD) join and the MDM enrollment step fails. It is one of the most frequently encountered errors in corporate Autopilot and bulk enrollment scenarios.

Root Causes

Tip: When troubleshooting MDM enrollment GPO issues, confirm the GPO is linked to an OU containing the computer objects — not just the user objects — and that it is being applied. Run gpresult /h gpresult.html on the affected device to confirm the policy is in scope.

Resolution Steps

  1. Verify the MDM auto-enrollment GPO is correctly configured and applied using gpresult /r.
  2. Check the device count for the enrolling user in Entra admin center > Users > [User] > Devices. Remove stale device registrations.
  3. Confirm the Intune MDM scope includes the user. In Intune > Devices > Enroll devices > Windows enrollment > Automatic Enrollment, ensure the MDM user scope is set to All or includes the enrolling user's group.
  4. Test network connectivity to Microsoft enrollment endpoints from the device.

Error 0x80070774 — Autopilot Hybrid Join Timeout

This error is particularly insidious because it has three distinct root causes that all produce the same error code. Rudy Ooms (Call4Cloud) has written in depth about this error and the "Assign user" pitfall — his analysis is essential reading for anyone managing Hybrid Azure AD Join Autopilot deployments.

Cause 1: "Assign User" Feature Performing Entra Join Before Domain Join

When an IT admin pre-assigns a user to an Autopilot device profile in the Intune portal, Windows attempts an Entra ID join in the background before completing the on-premises domain join. In Hybrid Join scenarios, this ordering is fatal — the domain join must complete first, and the premature Entra join causes the timeout and subsequent 0x80070774 error.

Warning: Do not use the "Assign user" feature on Autopilot devices configured for Hybrid Azure AD Join. Remove any user assignments from Autopilot device profiles in environments using Hybrid Join. This is a known design limitation documented by Microsoft.

Cause 2: Intune Connector Installed on Wrong Domain

The Intune Connector for Active Directory (the ODJ connector service) must be installed on a domain-joined server in the same domain where the computer objects will be created. If your environment has multiple AD domains or forests and the connector is installed in the wrong domain, the Offline Domain Join (ODJ) blob will target the wrong domain and the join will time out.

Verify the connector health in Intune > Devices > Windows > Windows enrollment > Intune Connector for Active Directory. Each connector shows its domain and last check-in time. Ensure a healthy connector exists for every target domain.

Cause 3: TLS / PKCS Registry Fix Required

On some Windows Server versions hosting the Intune Connector, TLS 1.2 may not be properly enforced for .NET applications, causing the connector's outbound HTTPS communication to fail silently. This produces enrollment timeouts that manifest as 0x80070774 on the client.

Apply the following registry settings on the server running the Intune Connector for Active Directory:

Set-IntuneConnectorTLS.ps1
# Enable TLS 1.2 for .NET Framework on the Intune Connector server
# Run on the server hosting the Intune Connector for Active Directory

$regPaths = @(
    'HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319',
    'HKLM:\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319'
)

foreach ($path in $regPaths) {
    if (-not (Test-Path $path)) {
        New-Item -Path $path -Force | Out-Null
    }
    Set-ItemProperty -Path $path -Name 'SchUseStrongCrypto' -Value 1 -Type DWord
    Set-ItemProperty -Path $path -Name 'SystemDefaultTlsVersions' -Value 1 -Type DWord
    Write-Host "Applied TLS 1.2 settings to: $path" -ForegroundColor Green
}

# Restart the Intune ODJ Connector Service
Restart-Service -Name 'IntuneODJConnectorSvc' -Force
Write-Host "Intune Connector service restarted." -ForegroundColor Cyan

After applying these registry keys, restart the Intune Connector service and re-attempt enrollment.


Error 80180018 — Device Already Enrolled in Another MDM

This error indicates the device has an active MDM enrollment with a different provider — or a stale Intune enrollment record that was not properly cleaned up. It is common when devices are migrated from a third-party MDM (such as VMware Workspace ONE, JAMF, or MobileIron) to Intune, or when a device is re-enrolled without a proper wipe.

Resolution

  1. On the device, navigate to Settings > Accounts > Access work or school and disconnect any existing MDM enrollment.
  2. In the Intune portal, locate the device record and perform a Retire action (not Delete) to ensure the server-side enrollment is cleanly removed before re-enrolling.
  3. Check the registry key HKLM:\SOFTWARE\Microsoft\Enrollments for orphaned enrollment GUIDs from previous MDM vendors and remove them.
  4. For bulk migrations, Microsoft's Troubleshoot device enrollment in Intune documentation outlines the correct sequence for clean re-enrollment.

Error 8018000a — User MDM License Not Assigned

This is one of the most straightforward errors to diagnose but is surprisingly common in large enterprise environments where license assignment is automated or delegated. The enrolling user does not have a valid Intune license — either it was never assigned, was removed due to a group membership change, or the license pool is exhausted.

Resolution

Verify and assign the license using the following PowerShell snippet (requires Microsoft Graph PowerShell SDK):

Check-IntuneLicense.ps1
# Check if a user has an Intune license assigned
# Requires: Connect-MgGraph -Scopes 'User.Read.All','Directory.Read.All'

$userUPN = 'user@contoso.com'

$user = Get-MgUser -UserId $userUPN -Property AssignedLicenses, DisplayName
$licenses = Get-MgSubscribedSku | Where-Object { $_.SkuPartNumber -match 'INTUNE|EMS|SPE_E3|SPE_E5|M365' }

foreach ($lic in $licenses) {
    $assigned = $user.AssignedLicenses | Where-Object { $_.SkuId -eq $lic.SkuId }
    if ($assigned) {
        Write-Host "[ASSIGNED] $($lic.SkuPartNumber)" -ForegroundColor Green
    } else {
        Write-Host "[MISSING]  $($lic.SkuPartNumber)" -ForegroundColor Yellow
    }
}

# Available units remaining
foreach ($lic in $licenses) {
    $available = $lic.PrepaidUnits.Enabled - $lic.ConsumedUnits
    Write-Host "$($lic.SkuPartNumber): $available units available"
}
Tip: In organizations using group-based licensing, check that the user is a member of the licensing group and that there are no license errors on the group itself in Entra admin center > Groups > [Licensing Group] > Licenses.

Error 801c0003 — User Not Authorized to Join Devices

This error occurs when the user attempting to join a device to Entra ID has either reached their per-user device limit or is not in the set of users permitted to perform device joins. Jan Ketil Skanke (Microsoft MVP, CloudWay) has highlighted this as a common oversight in tightly governed Entra environments.

Resolution


Error 0x80090016 — TPM Not Available or Not Ready

This error appears in Autopilot and Entra Join scenarios that require device attestation via the Trusted Platform Module. It typically surfaces on virtual machines, legacy hardware without TPM 2.0, or physical devices where the TPM has not been provisioned.

Root Causes and Fixes

Warning: Clearing the TPM (tpm.msc > Clear TPM) will invalidate BitLocker keys. Ensure BitLocker recovery keys are escrowed in Intune or Active Directory before proceeding.

General Troubleshooting Steps

1. Event Viewer — DeviceManagement-Enterprise-Diagnostics-Provider

The most direct source of MDM enrollment error detail on the device itself is the dedicated ETW log for device management. Navigate to:

Event Viewer > Applications and Services Logs > Microsoft > Windows > DeviceManagement-Enterprise-Diagnostics-Provider > Admin

Filter for Error and Warning events. The Event IDs most relevant to enrollment failures are in the 72xxx and 74xxx ranges. The full error codes and sub-codes are surfaced here before they are summarised into the hexadecimal values shown to the user.

Get-MDMEventLog.ps1
# Export last 50 MDM enrollment events from the diagnostic provider log
$logName = 'Microsoft-Windows-DeviceManagement-Enterprise-Diagnostics-Provider/Admin'
$events = Get-WinEvent -LogName $logName -MaxEvents 50 -ErrorAction SilentlyContinue

if ($events) {
    $events | Select-Object TimeCreated, Id, LevelDisplayName, Message |
        Format-Table -AutoSize -Wrap
} else {
    Write-Warning "No events found or log not accessible. Ensure you are running as Administrator."
}

2. Collect MDM Diagnostic Logs

Windows includes a built-in MDM log export capability accessible without administrative elevation:

Settings > Accounts > Access work or school > [Connected account] > Info > Export your management logs

This exports a ZIP archive to %USERPROFILE%\Documents\MDMDiagnostics containing MDM enrollment logs, policy application results, certificate store snapshots, and WMI bridge query results. The MDMDiagReport.html file inside the archive is particularly useful for reviewing policy assignment status at a glance.

You can also trigger this from an elevated command prompt:

Export-MDMDiagnostics.ps1
# Export MDM diagnostic report to a specified output path
$outputPath = "C:\Temp\MDMDiag_$(Get-Date -Format 'yyyyMMdd_HHmmss')"
New-Item -ItemType Directory -Path $outputPath -Force | Out-Null

$mdmDiag = "$env:SystemRoot\System32\MdmDiagnosticsTool.exe"

if (Test-Path $mdmDiag) {
    # -area is comma-separated; DeviceEnrollment captures enrollment-specific logs
    Start-Process -FilePath $mdmDiag `
        -ArgumentList "-area DeviceEnrollment;Autopilot -zip `"$outputPath\MDMDiag.zip`"" `
        -Wait -NoNewWindow
    Write-Host "Diagnostics exported to: $outputPath\MDMDiag.zip" -ForegroundColor Green
} else {
    Write-Warning "MdmDiagnosticsTool.exe not found. Minimum Windows 10 1903 required."
}

3. Windows Autopilot Diagnostics Page

During OOBE on Windows 11 (build 22H2 and later) and on devices running the Windows Autopilot diagnostics update for Windows 10, you can access an interactive diagnostics overlay by pressing Ctrl+Shift+D during the Autopilot provisioning flow. This page displays real-time status of each provisioning phase — device registration, Entra join, MDM enrollment, and ESP policy application — making it significantly faster to identify exactly which phase is failing without needing to wait for a full failure and then review logs post-mortem.

For more detail on Autopilot-specific troubleshooting, the Windows Autopilot troubleshooting FAQ on Microsoft Learn is the authoritative starting point. Michael Niehaus, the creator of Windows Autopilot, also maintains a wealth of deep-dive content on the deployment sequence at Out of Hours (oofhours.com).

Best practice: For large-scale Autopilot rollouts, configure the Enrollment Status Page (ESP) with a meaningful timeout (at least 60 minutes for complex profiles) and enable the Show log collection and diagnostics page to end users when installation errors occur option. This allows end users and help desk staff to immediately export relevant diagnostics without requiring admin access.

Additional Resources

Share this post
LinkedIn X / Twitter Reddit Bluesky

More from EndpointWeekly

Intune
Microsoft Intune: Win32 vs. Store App Deployment — Complete Guide
Win32 or Store? Complete breakdown of both Intune app deployment methods — packaging, IME…
Intune
Security Copilot for Intune — 4 AI Agents Deep Dive (Policy,…
Microsoft Security Copilot now has four dedicated Intune agents: Policy Configuration,…
Intune
Intune and Apple WWDC 2026 — What IT Admins Need to Know
Apple WWDC 2026 brought major changes to MDM management — new declarative device…