Entra Connect Sync Error Troubleshooting: How to Diagnose and Fix the Synchronization Failures That Break Hybrid Identity

Retool's new app builder is where AI-generated code ships safely
Building apps with AI is easy. Getting them to production safely is another story.
Entra Connect Sync operates in cycles: import from AD, run sync rules, export to Entra ID. Errors can occur at any stage. The most disruptive errors are export failures -- the sync rule ran correctly but the export to Entra ID was rejected because the object violates a uniqueness constraint or attribute validation rule. Identifying which objects are failing and why requires reading the Synchronization Service Manager connector space and the Entra ID sync error report.
Reading the Synchronization Service Manager for Export Errors
Open the Synchronization Service Manager on the Entra Connect server (Start > Synchronization Service):
- Click the Connectors tab
- Select the 'contoso.onmicrosoft.com - AAD' connector (the Entra ID connector)
- Click 'Search Connector Space'
- Set 'Scope' to 'Export Error' and click 'Search'
This shows all objects that failed to export to Entra ID in the last sync cycle. Double-click any object to see the specific error and the attribute values that caused it.
Alternatively, use PowerShell:
# List all objects currently in export error state
Get-ADSyncCSObject -ConnectorName "contoso.onmicrosoft.com - AAD" `
| Where-Object {$_.ErrorName -ne ""} `
| Select-Object DistinguishedName, ErrorName, ErrorDetail `
| Format-Table -AutoSize
# Trigger a delta sync to refresh the error state after a fix
Start-ADSyncSyncCycle -PolicyType Delta
For organizations with Entra Connect Health deployed, sync errors are also visible at: Entra ID admin center > Identity > Hybrid management > Connect Health > Sync errors. This view is accessible to Entra ID admins without needing RDP access to the sync server.
Fixing Duplicate Attribute Conflicts (AttributeValueMustBeUnique)
Duplicate attribute conflicts are the most common sync error. Two on-premises objects have the same value for a unique attribute (UserPrincipalName, ProxyAddresses, or MailNickName). Entra ID rejects the second object.
Identify the conflicting objects:
# Find all objects with AttributeValueMustBeUnique errors
Get-ADSyncCSObject -ConnectorName "contoso.onmicrosoft.com - AAD" `
| Where-Object {$_.ErrorName -eq "AttributeValueMustBeUnique"} `
| ForEach-Object {
[PSCustomObject]@{
DN = $_.DistinguishedName
Error = $_.ErrorName
Detail = $_.ErrorDetail
}
}
For ProxyAddresses conflicts specifically:
# Find all AD users sharing a specific email address
$conflictingEmail = "user@domain.com"
Get-ADObject -Filter {ProxyAddresses -like "*$conflictingEmail*"} -Properties ProxyAddresses |
Select-Object DistinguishedName, ObjectClass, ProxyAddresses
Resolution options:
- Remove the duplicate from one object: Remove the conflicting ProxyAddresses value from the object that should NOT be the primary holder
- Soft match the cloud object: If a cloud-only account already exists with the same UPN, use the ImmutableId to hard-match it to the on-premises object
- Enable Duplicate Attribute Resiliency (should already be on by default in recent Entra Connect versions):
Get-MsolDirSyncFeatures | Where-Object {$_.Feature -eq "EnableSoftMatchOnUpn"}
Set-MsolDirSyncFeature -Feature DuplicateUPNResiliency -Enable $true
Set-MsolDirSyncFeature -Feature DuplicateProxyAddressResiliency -Enable $true
With resiliency enabled, the duplicate object syncs with the conflicting attribute quarantined (replaced with a placeholder value) rather than blocking the entire object from syncing.
Briefings like this, every morning before 9am.
Threat intel, active CVEs, and campaign alerts, distilled for practitioners. 50,000+ subscribers. No noise.
Object Filtering: Why a Specific User Is Not Syncing
If a user exists in AD but not in Entra ID, the object may be excluded by a sync filter:
Check 1: Is the OU included in Entra Connect's OU filter? Entra Connect admin UI: Configure > Customize synchronization options > Filter users and devices > select domain and check OU list. If the user's OU is unchecked, they are excluded.
Check 2: Is an attribute-based filter excluding the object? Check the Synchronization Rules Editor for inbound rules with scoping filters:
# List all active inbound sync rules with scoping filters
Get-ADSyncRule | Where-Object {$_.Direction -eq "Inbound" -and $_.ScopeFilter -ne ""} |
Select-Object Name, ScopeFilter | Format-List
Check 3: Is the user in the connector space at all?
# Search for the specific user in the AD connector space
Get-ADSyncCSObject -ConnectorName "domain.com - ADMA" -DistinguishedName "CN=John Smith,OU=Users,DC=domain,DC=com"
If the user is not found in the connector space, they are filtered out before sync rules run. If they are in the connector space but not in the metaverse, a sync rule is excluding them.
Check 4: Force a preview of what would sync for the object From Synchronization Service Manager: Metaverse Search > find the object > Connectors tab > preview the sync rules applied to see why the object is not exporting to Entra ID.
Password Sync and Writeback Failures
Password hash synchronization (PHS) failures prevent cloud authentication from working with on-premises passwords:
# Check PHS sync status
Get-ADSyncAADPasswordSyncConfiguration -SourceConnector "domain.com - ADMA" |
Select-Object Enabled, PasswordSyncState
# Force a full password hash sync for a specific user
Invoke-ADSyncRunStep -ConnectorName "domain.com - ADMA" -RunProfile "Full Synchronization"
# Check password sync events in the Application event log
Get-WinEvent -LogName Application -ProviderName 'Directory Synchronization' `
| Where-Object {$_.Message -match 'password'} `
| Select-Object TimeCreated, Message `
| Select-Object -First 20
For password writeback failures (SSPR writing back to on-premises AD):
# Check password writeback configuration
Get-ADSyncAADPasswordResetConfiguration -Connector "contoso.onmicrosoft.com - AAD" |
Select-Object Enabled
# Common writeback failure: Entra Connect service account lacks 'Reset Password' permission
# on the user OU -- verify with:
$syncAccount = (Get-ADSyncConnector -Name "domain.com - ADMA").ConnectivityParameters |
Where-Object {$_.Name -eq "forest-login-user"} | Select-Object -ExpandProperty Value
Write-Output "Sync account: $syncAccount"
# Then verify this account has Reset Password delegated on the target OUs
Recovering from a Stuck or Crashed Sync Cycle
If the sync service is not running or a sync cycle is stuck:
# Check sync service status
Get-Service ADSync
# Check if a sync cycle is currently running
Get-ADSyncScheduler | Select-Object SyncCycleInProgress, NextSyncCyclePolicyType, NextSyncCycleStartTimeInUTC
# If stuck in SyncCycleInProgress = True for more than 2 hours, restart the service
Restart-Service ADSync
# After restart, check connector run history for errors
Get-ADSyncConnectorRunStatus | Select-Object ConnectorName, RunProfileName, Result, StartDate, EndDate |
Sort-Object StartDate -Descending | Select-Object -First 20
For the Synchronization Service database (SQL LocalDB or full SQL), if it becomes corrupted:
- Stop the ADSync service
- Check the Application event log for SQL errors from
ADSyncsource - For LocalDB corruption, run:
SqlLocalDB.exe info ADSyncto check instance state - If the database is unrecoverable, reinstall Entra Connect in staging mode first, verify the configuration, then promote to active
Before any Entra Connect upgrade or configuration change:
# Export current configuration (creates a JSON backup)
Get-ADSyncGlobalSettings | ConvertTo-Json -Depth 10 | Out-File entra-connect-config-backup.json
The bottom line
Entra Connect Sync errors surface in the Synchronization Service Manager's export error view and in the Entra ID sync error report (for Connect Health subscribers). Duplicate attribute conflicts (ProxyAddresses, UPN) are the most common export failure -- enable DuplicateUPNResiliency and DuplicateProxyAddressResiliency to quarantine duplicates rather than blocking entire objects. For missing users, work through the filtering checklist: OU filter, attribute-based filter, connector space presence, and metaverse sync rule evaluation.
Frequently asked questions
How do I find out which on-premises AD attribute is mapped to a specific Entra ID attribute?
Open the Synchronization Rules Editor on the Entra Connect server (Start > Synchronization Rules Editor). Select Direction: Outbound, Target Object Type: user. Each rule shows its attribute mappings. For example, the 'Out to AAD - User Identity' rule maps AD attributes like userPrincipalName, mail, and givenName to their Entra ID equivalents. You can also use: `Get-ADSyncRule | Where-Object {$_.Direction -eq 'Outbound' -and $_.TargetObjectType -eq 'user'} | Select-Object Name, AttributeFlowMappings | Format-List`.
What is the difference between a delta sync and a full sync in Entra Connect?
A delta sync (the default every 30 minutes) only processes objects that have changed in AD since the last sync cycle. A full sync re-evaluates all objects regardless of whether they changed. Run a full sync after: changing sync rules, modifying OU filters, or recovering from a sync failure where the delta watermark may be inconsistent. Full syncs on large directories can take 30-90 minutes. Run: `Start-ADSyncSyncCycle -PolicyType Initial` for full sync, or `Start-ADSyncSyncCycle -PolicyType Delta` for delta sync.
Can I sync multiple on-premises AD forests to a single Entra ID tenant?
Yes. Entra Connect supports multi-forest deployments. Each forest gets its own AD connector in Entra Connect. Objects from all forests are merged in the metaverse using join rules (typically matching on mail or employeeID attributes to link the same person's accounts across forests). In multi-forest environments, UPN suffix conflicts between forests are a common sync error source. Configure unique UPN suffixes for each forest before deploying Entra Connect in a multi-forest topology.
How do I safely upgrade Entra Connect without causing an authentication outage?
Use the swing migration approach: deploy a new Entra Connect server in staging mode, let it import the full directory, verify the configuration matches the production server, then promote the new server to active and retire the old one. This involves no downtime. For in-place upgrades, the Entra Connect installer handles upgrades automatically -- download the latest installer, run it on the production server, and it detects the existing installation and upgrades it. The service is unavailable for 5-15 minutes during in-place upgrade; delta sync will catch up immediately after the upgrade completes.
What causes objects to be stuck in the Entra Connect metaverse without syncing to Entra ID?
Objects stuck in the metaverse typically result from export errors on the Entra ID connector. Check Synchronization Service Manager > Operations > Export to the Entra ID connector for error entries on the specific object. Common export errors: AttributeValueMustBeUnique (the UPN or ProxyAddress conflicts with an existing cloud-only object), InvalidSoftMatch (a cloud-only object exists but cannot be matched for takeover), ExportErrorType-InvalidData (an attribute value violates Entra ID constraints such as a displayName exceeding 256 characters). Each error requires a specific resolution -- attribute deduplication, soft match enablement, or attribute value cleanup -- and then a manual Export run to push the fix.
How do I migrate from Entra Connect to Entra Cloud Sync?
Entra Cloud Sync is Microsoft's cloud-based replacement for Entra Connect, using lightweight provisioning agents rather than a server-hosted sync service. It supports most common synchronization scenarios but has limitations compared to full Entra Connect: it does not support group writeback for all group types, Exchange hybrid configurations, or device writeback. Before migrating: verify your environment meets cloud sync requirements (domain functional level, AD schema extensions), document all customized sync rules and attribute mappings in your current Entra Connect, and plan for any unsupported features. The migration process involves deploying the provisioning agent, creating a cloud sync configuration in the Entra ID portal that mirrors your current OU scope and attribute mappings, running the new configuration in parallel (both Entra Connect and Cloud Sync can run simultaneously with proper filtering to avoid conflicts), and then decommissioning Entra Connect once validation is complete.
Sources & references
Free resources
Critical CVE Reference Card 2025–2026
25 actively exploited vulnerabilities with CVSS scores, exploit status, and patch availability. Print it, pin it, share it with your SOC team.
Ransomware Incident Response Playbook
Step-by-step 24-hour IR checklist covering detection, containment, eradication, and recovery. Built for SOC teams, IR leads, and CISOs.
Get threat intel before your inbox does.
50,000+ security professionals read Decryption Digest for early warnings on zero-days, ransomware, and nation-state campaigns. Free, daily, no spam.
Unsubscribe anytime. We never sell your data.

Founder & Cybersecurity Evangelist, Decryption Digest
Cybersecurity professional with expertise in threat intelligence, vulnerability research, and enterprise security. Covers zero-days, ransomware, and nation-state operations for 50,000+ security professionals every morning.
Win a $2,495 Black Hat pass.
Full-access to Black Hat USA 2026 in Las Vegas. Subscribe free to enter.
