Skip to content

Est. 2011ยทMicrosoft Partner 7033487ยทDelivery under 3 minยทSupport 7 days a week

Your vault is empty.

Free Fix AttributeValueMustBeUnique

AttributeValueMustBeUnique and InvalidSoftMatch: duplicate objects stop sync

10 min read Updated October 4, 2026 Microsoft 365 & Entra ID

Fix it now

Entra ID rejected an object your sync engine tried to write because one of its values already belongs to something else. Microsoft documents that mail, proxyAddresses, signInName and userPrincipalName cannot be duplicated across objects. Nothing is lost – the object is parked until you decide which side keeps the value.

Run this on the synchronisation server after you have made the change at source

Start-ADSyncSyncCycle -PolicyType Delta
  1. On the synchronisation server, open Synchronization Service Manager, go to Operations and select the most recent export that reported errors.
  2. Open the failing object and note the attribute and the exact value in conflict. That is the whole diagnosis; everything after it is a decision about which object wins.
  3. Find the other holder in the cloud: active users and deleted users in the Microsoft 365 admin center, and a recipient search in Exchange Online for mail addresses.
  4. Decide which object keeps the value, then remove or change it on the other one – at source in Active Directory if the object is synchronised.
  5. Run the delta cycle above, then re-open the export results and confirm the object exports cleanly.

Fix duplicates at source. Editing the cloud copy leaves the collision waiting to recur at the next synchronisation.

If the export clears, you are done. If the match is being refused rather than the value duplicated, the next section separates soft match, hard match and object type mismatch, which are three different refusals.

Why it happens

User principal names, primary mail addresses and proxy addresses have to be unique across a tenant, because they are how mail is routed and how people sign in. Microsoft states the schema does not allow two or more objects to share a value for mail, proxyAddresses, signInName or userPrincipalName, and AttributeValueMustBeUnique is raised when the sync engine tries to add or update an object with a value another object already holds. Writes arriving from synchronisation are validated on arrival like any other write.

Matching is the other half of the story. When an on-premises object arrives with no cloud object linked to it, the engine looks for an existing cloud object with the same soft-match attributes and links the two. Microsoft documents InvalidSoftMatch as the case where hard match found nothing, soft match found a candidate, and that candidate’s immutableId differs from the incoming object’s sourceAnchor – which implies it was already synchronised from a different on-premises object. ObjectTypeMismatch is the same collision across object types: two objects of different types, user, group or contact, holding the same soft-match values, which the directory does not permit.

Hard matching is restricted separately and deliberately. Microsoft documents InvalidHardMatch as error type 103, raised when Entra ID blocks the hard match because the target cloud user is protected from takeover or reassociation – the account is assigned or eligible for a privileged role, or its onPremisesObjectIdentifier is already set, or the tenant has BlockCloudObjectTakeoverThroughHardMatchEnabled turned on. That protection exists to stop an on-premises object taking over a privileged cloud account, so the recovery paths are deliberately explicit rather than a switch you flip.

Two on-premises objects hold the same value

You have this one if The same address appears on more than one account in your own directory, and the export error names both or repeats for a pair.

  1. Query Active Directory for duplicates on the attribute named in the error.
  2. Correct the value on whichever object should not have it, at source.
  3. Run a delta cycle and confirm both objects export.

A cloud-only object already owns the value

You have this one if The conflicting object has no on-premises counterpart and was created directly in the tenant.

  1. Decide whether the cloud object is the live identity or a leftover.
  2. If it is a leftover, remove the conflicting value from it, or delete the object and purge it so the value is released.
  3. If it is the live identity, align the on-premises object so a soft match links the two rather than colliding with them.

The soft match was refused

You have this one if InvalidSoftMatch, with the cloud candidate already carrying an immutableId that does not match the incoming sourceAnchor.

  1. Identify the duplicated proxyAddresses, userPrincipalName or other value and the two objects involved.
  2. Decide which object should keep it, and remove it from the other – in the source directory if that object is synchronised.
  3. Let the next cycle sync the change, then confirm the match succeeds instead of repeating.

The hard match is blocked to protect a privileged account

You have this one if InvalidHardMatch, and the cloud object is assigned or eligible for a privileged role, or already carries onPremisesObjectIdentifier.

  1. For an account with a privileged role assigned, temporarily remove the role, complete the hard match, then reassign it.
  2. For an account eligible for a role, temporarily remove the eligibility, complete the match, then restore it.
  3. If onPremisesObjectIdentifier is already set, clear it to null and rerun synchronisation.
  4. Only where a takeover is genuinely intended, temporarily disable BlockCloudObjectTakeoverThroughHardMatchEnabled and re-enable it afterwards.

For a soft-deleted user, restore it first and then apply the privileged-role recovery; the order matters.

The object types do not match

You have this one if ObjectTypeMismatch, and the cloud holder of the address is a contact, a group or another object type rather than a user.

  1. Confirm what the cloud object actually is before touching it, because mail routing may depend on it.
  2. Move the address to the object that should own it, or change the source object so it no longer claims it.
  3. Accept that no matching option exists across object types; one of the two has to give the value up.

Full reference

Identifying the conflicting pair

What the export shows Which pair to look at
Two on-premises objects with the same address Both source objects need fixing before either exports
An on-premises user and a cloud-only user sharing a name Decide which survives, then remove or match the other
A cloud contact or group holds the address An object type mismatch; they cannot be linked
The user was deleted and recreated on-premises A new source anchor arriving at an existing cloud object
The match is refused despite a correct anchor Hard-match takeover is blocked on this tenant
No visible object holds the value Check deleted users and soft-deleted mail objects

Why some objects appear anyway, with a strange name

Duplicate attribute resiliency is the default behaviour for all Entra tenants and it explains objects that turn up in the cloud with an identity nobody recognises. Microsoft documents it as handling only two attributes, userPrincipalName and SMTP proxyAddress. Without it, an object whose UPN or proxy address violates the uniqueness constraint is simply blocked from being created, and keeps failing until the conflict is resolved.

With it, the conflicting value is quarantined instead. For a required attribute such as UPN, the service assigns a placeholder in the form of the original prefix, a four-digit number, and the initial tenant domain ending in onmicrosoft.com. For an optional attribute such as proxy address, the conflicting value is simply quarantined and the object is created or updated regardless. The quarantined values are stored in a multi-valued attribute named DirSyncProvisioningErrors, and a background task runs hourly to release them once the conflict is resolved.

So an account that exists in the cloud with a placeholder-looking UPN has not been half created. It has been created with the conflicting value held aside, and it will pick up the real value on its own once you clear the duplicate at source.

Working the two event trails

  • The authoritative record is the export result in Synchronization Service Manager: Operations, the failing run, then the object. It names the object, the attribute and the value.
  • Microsoft Entra Connect Health sync reports are the documented route for identifying the duplicated value and the conflicting objects without opening the console on the server.
  • Event ID 6941 and the error number 0x8023134A are commonly quoted alongside these failures, but Microsoft does not publish a meaning for either. Do not build a diagnosis on them; work from the named error and the object.
  • Repeat the cycle after every change rather than batching several fixes, so you can tell which change cleared which object.

Deleting to release a value

Deleting a cloud object to release an address can remove a mailbox and its contents. Confirm what data the object holds, and what your retention arrangements actually cover, before you delete anything permanently.

  1. Establish that the object is genuinely obsolete, not merely inconvenient.
  2. Check whether it is receiving mail at the contested address.
  3. Soft-delete it and confirm the conflict is still present, because a soft-deleted object keeps its addresses.
  4. Purge it only when you are certain, then run a delta cycle.
  5. Confirm the export clears rather than assuming it will.

Every code this article covers

Code What it points at Source
AttributeValueMustBeUnique The Entra schema does not allow two or more objects to share a value for mail, proxyAddresses, signInName or userPrincipalName, and the sync engine tried to write a duplicate Microsoft Learn
InvalidSoftMatch Hard match found no object, soft match found one, but its immutableId differs from the incoming object’s sourceAnchor – so it was synchronised from a different on-premises object Microsoft Learn
ObjectTypeMismatch Two objects of different types – user, group or contact – hold the same values for soft-match attributes, which the directory does not permit Microsoft Learn
InvalidHardMatch Error type 103: Entra ID blocked the hard match because the target cloud user is protected from takeover, for example a privileged role assignment or eligibility, or onPremisesObjectIdentifier already set Microsoft Learn
Event ID 6941 Quoted alongside export failures on the synchronisation server. Microsoft publishes no meaning for this event ID; read the export result in Synchronization Service Manager instead not published by the vendor
0x8023134A A sync engine error number seen alongside these export failures. Microsoft publishes no meaning for it; work from the named error rather than the number not published by the vendor

Confirm the fix worked

  1. The export run completes with no errors for the object you fixed.
  2. The object appears in the tenant with the correct user principal name and addresses, and not a placeholder.
  3. The other holder of the value no longer carries it.
  4. A second delta cycle runs clean, confirming the fix was made at source rather than in the cloud copy.

Questions people ask about this

Does any of this cost money?

No. Directory synchronisation, duplicate detection and every fix described here are free. Nothing about this error is a licensing question.

Will the user lose mail while the object is parked?

An object that has never exported has no mailbox to lose mail from. An existing object that fails a later export keeps working with its current values; only the change is blocked.

Why does the account exist in the cloud with a strange UPN?

That is duplicate attribute resiliency. The conflicting UPN was quarantined and a placeholder assigned, in the form of the original prefix plus a four-digit number at your initial onmicrosoft.com domain. Clear the duplicate at source and an hourly background task releases the real value.

Can I just delete the on-premises object?

You can, but that removes the account, and if it is already linked to a cloud object the deletion flows through. Correct the attribute instead, unless you genuinely intend to delete the person’s account.

Why will the hard match not go through on my new tenant?

Because takeover of cloud objects through hard match is blocked where the target is protected – a privileged role assigned or eligible, or onPremisesObjectIdentifier already set. Microsoft documents recovery paths for each of those, and they are deliberately explicit.

Related error codes

Was this article helpful?

Your feedback helps us improve our documentation.

Related articles

License Error 0x80180022 and 0x800705b4: Windows edition and TPM block Intune enrolment Free Fix AADSTS7000215 and AADSTS700016: bad client secret or missing app registration License Error AADSTS65001 and AADSTS90094: the app needs user or admin consent first License Error Intune 0x8018002b and 0x80180014: MDM scope, UPN suffix and platform settings block enrolment
โ† Back to Knowledge Base