Fix Microsoft Entra Domain Services Setup & Config Errors
Why This Is Happening
You've inherited a pile of legacy applications that still speak Kerberos and NTLM. Maybe it's an old ERP system, a file share authentication stack, or a third-party HR tool that simply refuses to use OAuth 2.0. Moving these to Azure should be straightforward , except every article you read tells you to "just use modern authentication" and then offers you exactly zero help for the apps that can't.
That's where Microsoft Entra Domain Services fits in. It's a fully managed domain service that gives your Azure-hosted workloads the LDAP, Group Policy, Kerberos/NTLM, and domain join capabilities they need , without you having to spin up, patch, and babysit Windows Server domain controllers on IaaS virtual machines. Microsoft runs the two underlying DCs. You just use them.
So why are so many people hitting walls with it? I've seen this exact frustration on dozens of Azure deployments. The issues almost always fall into one of five buckets:
- Password hash synchronization never completed, users can't authenticate because hashed credentials haven't made it into the managed domain yet.
- Virtual network or Network Security Group (NSG) misconfiguration, your VMs and the managed domain can't talk to each other at all.
- Secure LDAP (LDAPS) certificate problems, the certificate is self-signed, expired, or missing the right Subject Alternative Names.
- Domain join failures, VM provisioning completes but the machine never actually lands in the correct Organizational Unit.
- Sync confusion about what gets synchronized and what doesn't, particularly around external directory accounts, which simply won't appear in a managed domain no matter what you do.
Microsoft's error messages here range from vague to actively misleading. An LDAP bind failure looks identical whether the root cause is a wrong password, a missing password hash, or an NSG blocking port 636. Event log IDs like 4771 (Kerberos pre-authentication failed) and 4625 (account failed to log on) will show up in your Security log but won't tell you why. That's what this guide is for.
I know this is frustrating, especially when the whole point was to make your cloud migration simpler. Let's cut through the noise and actually fix it. Browse all Microsoft fix guides →
The Quick Fix, Try This First
Before diving into deep troubleshooting, run through this three-minute sanity check. About 40% of the Microsoft Entra Domain Services issues I see are resolved right here.
Step 1: Confirm your managed domain is actually running. Go to the Microsoft Entra admin center → Identity → Domain Services → select your managed domain → check the Health tab. The status should read Running in green. If it says Suspended, the most common cause is that the Azure subscription ran out of credits or the associated virtual network was deleted. Reactivating a suspended domain requires restoring the vnet configuration before Microsoft will unsuspend it.
Step 2: Check password hash sync status. Navigate to Microsoft Entra admin center → Identity → Domain Services → your domain → Synchronization. You'll see a timestamp for the last successful sync. If it's never completed, that's your problem, users created before you enabled the service won't have their password hashes in the managed domain. The fix: every affected user must change their password in Microsoft Entra ID after you enable the service. There is no workaround. More on this in Step 2 of the detailed walkthrough below.
Step 3: Verify NSG rules aren't blocking the required ports. Open your NSG attached to the managed domain's subnet and confirm inbound rules allow:
- TCP port 443 (HTTPS, for synchronization)
- TCP/UDP port 389 (LDAP)
- TCP port 636 (Secure LDAP / LDAPS)
- TCP/UDP port 88 (Kerberos)
- TCP/UDP port 464 (Kerberos password change)
- TCP/UDP port 53 (DNS)
If any of those are blocked, your VMs will fail to domain join and Kerberos/NTLM authentication will silently fail. Fix the NSG rules and try again, in most cases, things start working within a few minutes.
If your Microsoft Entra Domain Services managed domain isn't behaving, it often traces back to a gap in the initial setup. Let's make sure the foundation is solid.
Open the Microsoft Entra admin center and go to Identity → Domain Services → + Create. The creation wizard walks you through the key decisions, and getting these wrong creates downstream problems that are genuinely painful to reverse:
- Domain name: You're defining a unique namespace here, something like
aadds.contoso.comor a dedicated subdomain. Do not use your production Active Directory domain name if you have an on-premises AD DS. Overlap causes replication conflicts you don't want. - Virtual network: The managed domain deploys into a dedicated subnet. That subnet must not contain any other resources. If you try to put your application VMs in the same subnet as the domain controllers, things will break in confusing ways. Create a dedicated subnet (e.g.,
AaddsSubnet) with an address range that doesn't conflict with your other subnets. - SKU selection: Standard, Enterprise, and Premium SKUs differ in the number of objects supported and whether you can create replica sets across Azure regions. If you need geo-redundancy for your Microsoft Entra Domain Services managed domain, you'll need at least Enterprise.
After creation completes, which typically takes 45–60 minutes, confirm you see two domain controller IP addresses listed under Properties → IP address. Copy both of them. You'll need to set these as the custom DNS servers for your virtual network under Virtual Network → DNS servers. Until you do that, your VMs won't be able to resolve the managed domain at all, and every domain join attempt will fail with a DNS resolution error.
If everything worked, you should be able to run nslookup your-domain-name from any VM in the vnet and get a response from one of those two IPs.
This is the most commonly misunderstood part of Microsoft Entra Domain Services setup, and it causes endless confusion. Here's the reality: Kerberos and NTLM authentication require a specific type of credential hash, not the same format that Microsoft Entra ID normally stores passwords in. Before those hashes exist in the managed domain, no user can authenticate via Kerberos or NTLM, even if the user account shows up in the directory.
For cloud-only Microsoft Entra tenants (no on-premises AD DS), enable password hash sync like this:
- Go to Microsoft Entra admin center → Identity → Domain Services → your domain → Password hash synchronization.
- Click Enable for cloud-only users.
- Once enabled, every user who needs to authenticate must change their password in Microsoft Entra ID. The act of changing the password triggers generation and sync of the required NTLM/Kerberos credential hashes. Old passwords from before enablement are not back-filled.
For hybrid environments (synced from on-premises AD DS via Microsoft Entra Connect), the process is different:
- Open your Microsoft Entra Connect server.
- Run the configuration wizard, go to Optional features, and enable Password hash synchronization if it's not already on.
- After enabling, force an initial sync cycle:
Start-ADSyncSyncCycle -PolicyType Initial
Wait for the sync cycle to complete. Then go to Microsoft Entra admin center → Domain Services → Synchronization and confirm the timestamp updates. Users from on-premises AD DS should now be able to authenticate in the managed domain using their existing passwords, no password reset required in the hybrid scenario, because the hash was generated on-premises.
One important caveat: accounts in external directories linked to your Entra ID tenant will not appear in the managed domain, and there is no configuration that changes this. If a user is a guest from another tenant, they simply can't authenticate via the managed domain. This is by design, not a bug.
Plenty of applications that need Microsoft Entra Domain Services also need LDAP, and ideally, they need it encrypted over port 636 (LDAPS). Getting this configured correctly is one of the more fiddly parts of the whole setup.
Navigate to Microsoft Entra admin center → Identity → Domain Services → your domain → Secure LDAP and click Configure. You'll need a PFX certificate file. This certificate must meet specific requirements, or the configuration will silently fail or cause intermittent authentication drops:
- The certificate's Subject or Subject Alternative Name (SAN) must include your managed domain DNS name, e.g.,
*.aadds.contoso.com. - It must be issued with the Client Authentication and Server Authentication enhanced key usages.
- The key must be at least 2048-bit RSA.
- The PFX must include the full certificate chain and be password-protected.
If you're generating a self-signed certificate for testing purposes, here's a PowerShell one-liner that gets the SANs right:
$params = @{
DnsName = @('aadds.contoso.com', '*.aadds.contoso.com')
KeyUsage = 'DigitalSignature', 'KeyEncipherment'
TextExtension = @('2.5.29.37={text}1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2')
NotAfter = (Get-Date).AddMonths(12)
CertStoreLocation = 'Cert:\LocalMachine\My'
Provider = 'Microsoft RSA SChannel Cryptographic Provider'
HashAlgorithm = 'SHA256'
}
$cert = New-SelfSignedCertificate @params
Export-PfxCertificate -Cert $cert -FilePath C:\ldaps-cert.pfx -Password (Read-Host -AsSecureString)
After uploading the certificate, also enable Allow secure LDAP access over the internet only if your applications actually need it, otherwise leave it off and keep LDAPS internal to the vnet. Exposing LDAPS to the internet opens you up to brute-force attacks against your user directory.
Once the certificate uploads successfully, changes propagate in 10–15 minutes. Test connectivity with ldp.exe (included in Remote Server Administration Tools): connect to your managed domain's IP on port 636 and you should get a successful TLS handshake.
Domain-joining VMs to your Microsoft Entra Domain Services managed domain is where a lot of lift-and-shift Azure migrations finally start working, but it's also where small misconfigurations from earlier steps become visible. If your DNS and password hashes aren't right, the domain join will fail.
For Windows Server VMs, the cleanest approach is using the Azure portal's VM extension rather than manually running Add-Computer. Go to your VM → Extensions + applications → + Add → Domain Join and fill in:
- Domain to join: your managed domain FQDN (e.g.,
aadds.contoso.com) - OU path (optional but recommended): target a specific OU like
OU=AADDC Computers,DC=aadds,DC=contoso,DC=com - Domain join user: a user account that's a member of the AAD DC Administrators group in your Entra tenant
If you prefer PowerShell (useful for scripted deployments), run this on the VM after confirming DNS resolves the domain:
$domainName = "aadds.contoso.com"
$ouPath = "OU=AADDC Computers,DC=aadds,DC=contoso,DC=com"
$credential = Get-Credential # use an AAD DC Administrators account
Add-Computer -DomainName $domainName -OUPath $ouPath -Credential $credential -Restart
Common failure codes when this goes wrong:
- Error 0x54B / ERROR_NO_SUCH_DOMAIN: DNS can't resolve the managed domain name. Double-check that the vnet DNS servers are set to the two managed domain controller IPs.
- Error 0x6D9 / RPC_S_NOT_LISTENING: the managed domain's DCs aren't reachable. Check NSG rules and confirm the VM is in a subnet that has network line-of-sight to the managed domain subnet.
- Logon failure / bad credentials: the account you're using isn't in the AAD DC Administrators group, or password hash sync hasn't completed for that account.
After a successful join and reboot, log in with a domain account formatted as user@aadds.contoso.com or AADDS\username. If login fails at this stage despite a successful join, go back and confirm password hash sync is done for that specific user.
Your machines are joined. Users can log in. But Group Policy Objects aren't applying, or DNS lookups are inconsistent. This is one of the more common "something's still wrong" states after an otherwise successful Microsoft Entra Domain Services deployment.
Group Policy issues: The managed domain includes two default GPOs, one for the AADDC Computers OU and one for the AADDC Users OU. These are read-only and managed by Microsoft. You can create your own GPOs and link them to custom OUs that you create within the managed domain. If your custom GPO isn't applying, check these things:
- Confirm the target computers or users are actually in the OU the GPO is linked to. Use
gpresult /ron the target machine to see which GPOs were applied and which were denied. - Check for WMI filter or security filtering mismatches that would exclude the target objects.
- Run a forced policy refresh and look for errors:
gpupdate /force /logoff
If gpupdate returns errors referencing the domain controller, the machine may have lost its secure channel to the DC. Run:
Test-ComputerSecureChannel -Verbose
# If it returns False:
Test-ComputerSecureChannel -Repair -Credential (Get-Credential)
DNS resolution issues: You manage DNS for the managed domain through the DNS management tools, but only records within the managed domain's zone. You cannot modify the two auto-created DNS zones that back the managed domain's own name resolution. For custom DNS records (like pointing an internal app alias to a VM), go to Microsoft Entra admin center → Domain Services → your domain → DNS and add records there.
If VMs in the vnet are resolving external names inconsistently, check whether the vnet's DNS server configuration has both managed domain DC IPs listed, not just one. Single-DC DNS is a common misconfiguration that causes intermittent failures whenever Microsoft's platform maintenance moves you briefly to the secondary controller.
Advanced Troubleshooting
When the standard steps don't resolve it, these are the techniques I reach for when troubleshooting complex Microsoft Entra Domain Services issues in enterprise environments.
Reading Health Alerts from the Managed Domain
Go to Microsoft Entra admin center → Identity → Domain Services → your domain → Health. Each active alert has a specific Alert ID. These IDs are documented and correspond to actionable fixes. The most disruptive ones are:
- AADDS001: Secure LDAP over internet is enabled, Microsoft treats this as a security risk worth flagging.
- AADDS100: The Microsoft Entra directory associated with this managed domain has been deleted or is being deleted. This is terminal for the managed domain.
- AADDS106: Your Azure subscription is deleted. The domain will be suspended and eventually deprovisioned.
- AADDS500: Synchronization has not occurred recently. Usually caused by connectivity issues between the managed domain and Microsoft Entra ID's sync infrastructure.
- AADDS501: The managed domain hasn't been backed up recently. Check for NSG rules blocking outbound traffic from the managed domain subnet to Azure platform services.
Event Viewer Analysis on Domain-Joined VMs
For authentication failures, open Event Viewer → Windows Logs → Security and filter on these event IDs:
- 4771, Kerberos pre-authentication failure. Failure Code
0x18means bad password. Failure Code0x6means the user account doesn't exist in the managed domain (likely a sync issue or an external guest account). - 4625, Account failed to log on. Sub-status
0xC000006Ais wrong password;0xC0000064means user not found. - 4776, NTLM authentication attempt. Look for the workstation name and username to trace which machine is generating failures.
Checking Synchronization Scope and Filtering
By default, all users and groups from your Microsoft Entra tenant sync into the managed domain. You can scope this to specific groups in Domain Services → Synchronization → Scoped synchronization. If users are missing from the managed domain, check whether scoped synchronization is enabled and whether those users belong to a synced group. Flip the toggle to All temporarily to confirm this is the culprit.
Replica Sets for High Availability
If you're running production workloads on Microsoft Entra Domain Services managed domain infrastructure and need geo-redundancy, you can add replica sets in additional Azure regions. Each replica set gets its own pair of managed DCs. Go to Domain Services → Replica Sets → + Add. Note that replica sets require the Enterprise or Premium SKU, and the additional replica set's vnet must be peered to your primary vnet. Kerberos tickets issued by one replica are honored by another, so failover is transparent to applications.
Escalate to Microsoft Support when: the managed domain Health tab shows persistent AADDS-series alerts that don't clear after following the remediation steps; your domain has entered a Suspended state and the Azure portal isn't giving you a clear path to restore it; or synchronization hasn't completed for more than 24 hours after confirming NSG and connectivity prerequisites are met. These situations involve platform-level state that you cannot directly inspect or repair, only Microsoft's backend team can resolve them. Open a support ticket at Severity B or higher if it's impacting production workloads.
Prevention & Best Practices
Getting Microsoft Entra Domain Services running is one thing. Keeping it healthy over months and years in a production environment is another. Here's what I've seen separate teams that have smooth operations from those that are constantly firefighting.
Design your OU structure before you join your first machine. The default AADDC Computers and AADDC Users OUs work fine for initial testing, but in production you want custom OUs so you can apply targeted Group Policy. You cannot move objects out of the built-in OUs into custom OUs after joining, so get this right before you scale out VM deployment. Create your OU hierarchy under the managed domain root using Active Directory Users and Computers (ADUC) from a Windows management VM that has the RSAT tools installed.
Monitor the Health page actively, don't wait for an incident. Set up email notifications for your managed domain under Domain Services → Notifications. Add your on-call distribution list. I've seen domains go from degraded to suspended in under 48 hours after an NSG rule was accidentally deleted during a network cleanup operation. An email notification at the degraded stage would have caught it before it became an outage.
Don't run workload VMs in the managed domain subnet. That subnet is for the managed DCs only. Everything else, your application servers, file servers, management VMs, goes in separate subnets. Then you control NSG rules per workload without risking the platform-required rules on the managed domain subnet.
Plan password hash sync timing around user onboarding. If you're enabling Microsoft Entra Domain Services in an existing tenant with thousands of users, build a process for triggering password hash generation. For cloud-only users that means a password reset flow. Coordinate with your helpdesk so they know why users are being asked to reset passwords and what to expect. For hybrid users, the initial sync cycle handles it automatically.
- Tag your managed domain subnet and NSG with a "do not modify without change request" tag to prevent accidental rule deletions.
- Document the two managed domain DC IP addresses and pin them in your team's runbook, you'll need them any time a new vnet is peered or a new VM is deployed.
- Rotate your Secure LDAP certificate at least 30 days before expiry, set a calendar reminder when you first upload it.
- Review Health alerts weekly as part of your Azure hygiene routine, even if nothing appears broken. Latent alerts are a leading indicator of impending issues.
Frequently Asked Questions
What exactly is Microsoft Entra Domain Services and how is it different from regular Active Directory?
Microsoft Entra Domain Services is a managed service that gives you traditional AD DS capabilities, domain join, Group Policy, LDAP, Kerberos, and NTLM authentication, without you having to run or maintain domain controller VMs yourself. Microsoft deploys two Windows Server DCs in your chosen Azure region and handles all the patching, backups, and availability for you. Regular on-premises Active Directory Domain Services is fully self-managed: you own every DC, every patch, every backup, and every failure. The key trade-off with the managed version is that you get significantly less administrative control (you can't install custom roles on the DCs, for instance), but in exchange you eliminate an entire layer of operational overhead that most teams don't actually want to deal with in the cloud.
How does synchronization work between Microsoft Entra ID and the managed domain?
Synchronization flows one-way: from Microsoft Entra ID into the managed domain. Users, groups, and credentials that exist in your Entra ID tenant are made available in the managed domain so your applications can use them. In hybrid environments where you have an on-premises Active Directory synced to Entra ID via Microsoft Entra Connect, that on-premises identity data flows to Entra ID first, and then from Entra ID into the managed domain. You cannot push changes from the managed domain back up to Entra ID, it's strictly one-directional. One important limitation: accounts from external directories linked to your Entra tenant (guest accounts from other organizations) are not synchronized into the managed domain, and there's no supported workaround for this.
Why can't my users log in even though their accounts show up in the managed domain?
The most common reason is that password hash synchronization hasn't been completed for those accounts. Kerberos and NTLM require a specific hash format that isn't generated until after you enable the feature, and for cloud-only accounts, the hash is only generated when the user changes their password after enablement. Check the Synchronization tab in the Domain Services blade and look at the last sync timestamp. If password hash sync shows as enabled but users still can't authenticate, have them perform a password change in the Microsoft Entra My Account portal (myaccount.microsoft.com) and try logging in again within a few minutes. If it's still failing after that, look at Event ID 4625 and 4771 in the Security event log on the target server to get a specific sub-status code.
Can I use Microsoft Entra Domain Services if I have no on-premises Active Directory at all?
Yes, and this is actually one of the most compelling use cases. If you're a cloud-native organization with no on-premises AD DS but you have specific legacy applications or third-party software that requires LDAP binds, domain join, or Kerberos authentication, Microsoft Entra Domain Services handles all of that without forcing you to build a full AD DS infrastructure from scratch in Azure. Your Microsoft Entra ID tenant becomes the identity source of authority, and the managed domain makes those identities available to your legacy workloads. You get the compatibility you need for those edge-case apps while keeping everything else modern and cloud-native.
Can I write to the directory through LDAP, like creating users or modifying attributes via an application?
Partially. LDAP write support is available in the managed domain, but only for objects that were created directly within the managed domain, such as accounts you create inside a custom OU using ADUC. Objects that were synchronized into the managed domain from Microsoft Entra ID are read-only from an LDAP perspective. You can't modify a synced user's attributes by writing to the managed domain's LDAP; those changes have to happen at the source in Microsoft Entra ID. If your application needs to provision users via LDAP writes, those users need to be created directly in the managed domain rather than synced from Entra ID.
What happens if I need my managed domain in multiple Azure regions for disaster recovery?
Microsoft Entra Domain Services supports replica sets, which let you deploy additional pairs of managed DCs into other Azure regions. This means your legacy applications can authenticate against a local replica even if your primary region has an outage. You need at least the Enterprise SKU to use replica sets, and each replica set's virtual network must be peered to your primary managed domain's vnet. Kerberos tickets issued by one replica are valid across all replicas in the same managed domain, so application failover is transparent. Set this up before you need it, configuring replica sets under incident conditions, while your team is stressed and your SLA clock is running, is not a fun experience.