Entra IDDeep dive

Microsoft Entra provisioning error codes: SCIM apps, HR-driven and cross-tenant sync

Every error code Microsoft documents for the Entra provisioning logs: SCIM app provisioning, Workday and SuccessFactors inbound, cross-tenant sync and quarantine, with cause and fix.

The Microsoft Entra provisioning service runs three kinds of jobs: outbound provisioning to SaaS apps (usually over SCIM), inbound HR-driven provisioning from Workday or SAP SuccessFactors, and cross-tenant synchronization between tenants you own. All three report problems the same way: an error code on each failed event in the provisioning logs, and a quarantine state when a whole job keeps failing. This quick reference lists the codes Microsoft documents, with the meaning, the usual cause and the first check.

Codes in this quick reference

  • EncounteredQuarantineException: job quarantined, invalid credentials or no connection to the targetProvisioning page / Graph synchronizationJob
  • EncounteredEscrowProportionThreshold: job quarantined, more than 40% of provisioning events failedProvisioning page / Graph synchronizationJob
  • QuarantineOnDemand: Microsoft detected an issue and quarantined the jobProvisioning page / Graph synchronizationJob
  • HTTP/404 Not Found instead of HTTP/200 OK: SCIM compliance issue (quarantine)Provisioning page (quarantine reason)
  • Duplicate roles: imported roles must be unique (quarantine)Provisioning page (quarantine reason)
  • Conflict, EntryConflict: conflicting attribute values in Entra ID and the appProvisioning logs
  • TooManyRequests: the target app is receiving too many requestsProvisioning logs
  • InternalServerError: the target app returned an unexpected errorProvisioning logs

+ 35 more codes in the tables below.

How this guide is organized: How to read these codes → Quarantine and job-level errors → App provisioning and SCIM errors → HR-driven provisioning → Cross-tenant synchronization errors → How to verify a fixFlow diagram of the article's sections in reading order: 1. How to read these codes. 2. Quarantine and job-level errors. 3. App provisioning and SCIM errors. 4. HR-driven provisioning. 5. Cross-tenant synchronization errors. 6. How to verify a fix. Toolbox: Set-MailUser, Get-ADUser, adminCount, extensionAttribute1, AzureActiveDirectoryForbidden.1How to read these codes2Quarantine and job-level errors3App provisioning and SCIMerrors4HR-driven provisioning5Cross-tenant synchronizationerrors6How to verify a fixTOOLBOXSet-MailUserGet-ADUseradminCountextensionAttribute1AzureActiveDirectoryForbiddenHow this guide is organized: How to read these codes → Quarantine and job-level errors → App provisioning and SCIM errors → HR-driven provisioning → Cross-tenant synchronization errors → How to verify a fixFlow diagram of the article's sections in reading order: 1. How to read these codes. 2. Quarantine and job-level errors. 3. App provisioning and SCIM errors. 4. HR-driven provisioning. 5. Cross-tenant synchronization errors. 6. How to verify a fix. Toolbox: Set-MailUser, Get-ADUser, adminCount, extensionAttribute1, AzureActiveDirectoryForbidden.1How to read these codes2Quarantine and job-level errors3App provisioning and SCIM errors4HR-driven provisioning5Cross-tenant synchronization errors6How to verify a fixTOOLBOXSet-MailUserGet-ADUseradminCountextensionAttribute1AzureActiveDirectoryForbidden
At a glance: how this guide is organized · 6 sections · 5 key settings and tools

How to read these codes#

Job-level or event-level: which provisioning error you haveDoes the app's Provisioning page show a quarantine message? if Yes: Fix the job-level error, then restart (The job status gives the reason, such as expired or wrong admin credentials); if No: Which kind of job logged the failed event? if App (SCIM): App provisioning or SCIM error (Some retry on their own, such as Timeout; others need a mapping or app fix); if HR-driven: HR-driven provisioning error (Often the agent's rights in AD, or the schema it cached at startup); if Cross-tenant: Cross-tenant synchronization error (Codes containing AzureActiveDirectory refer to Microsoft Entra ID)Does the app's Provisioningpage show a quarantinemessage?FIXFix the job-level error,then restartThe job status gives thereason, such as expired orwrong admin credentialsYesWhich kind of job logged thefailed event?NOTEApp provisioning orSCIM errorSome retry on their own,such as Timeout; othersneed a mapping or app fixApp (SCIM)NOTEHR-driven provisioningerrorOften the agent's rights inAD, or the schema it cachedat startupHR-drivenNOTECross-tenantsynchronization errorCodes containingAzureActiveDirectory referto Microsoft Entra IDCross-tenantNoJob-level or event-level: which provisioning error you haveDoes the app's Provisioning page show a quarantine message? if Yes: Fix the job-level error, then restart (The job status gives the reason, such as expired or wrong admin credentials); if No: Which kind of job logged the failed event? if App (SCIM): App provisioning or SCIM error (Some retry on their own, such as Timeout; others need a mapping or app fix); if HR-driven: HR-driven provisioning error (Often the agent's rights in AD, or the schema it cached at startup); if Cross-tenant: Cross-tenant synchronization error (Codes containing AzureActiveDirectory refer to Microsoft Entra ID)Does the app's Provisioning page show aquarantine message?YesFIXFix the job-level error, then restartThe job status gives the reason, such as expired orwrong admin credentialsNoWhich kind of job logged the failed event?App (SCIM)NOTEApp provisioning or SCIM errorSome retry on their own, such as Timeout; othersneed a mapping or app fixHR-drivenNOTEHR-driven provisioning errorOften the agent's rights in AD, or the schema itcached at startupCross-tenantNOTECross-tenant synchronization errorCodes containing AzureActiveDirectory refer toMicrosoft Entra ID
Figure 1 · Decision tree Job-level or event-level: which provisioning error you have. Open the failed event first: Steps shows where it stopped and Troubleshooting & Recommendations gives the code. Then follow the branches.
  • Where: Entra ID › Monitoring & health › Provisioning logs (Reports Reader is enough), or the provisioning logs of one enterprise app. Data is kept 30 days with Microsoft Entra ID P1 or P2 and 7 days on the free edition; stream it to Azure Monitor to keep it longer.
  • Each event has a status (Success, Failure, Skipped, Warning) and an action (Create, Update, Delete, Disable, StagedDelete, Other). Open it: Steps shows where it stopped (import, match, scope, evaluate, provision) and Troubleshooting & Recommendations shows the code and reason. Keep the change ID for support.
  • Codes containing AzureActiveDirectory refer to Microsoft Entra ID; Microsoft couldn't rename them.
  • Job health: the app's Provisioning page shows a quarantine message in the progress bar, the audit logs (filter Activity: Quarantine) keep the history, and a one-time email goes to the notification address.
Text
GET https://graph.microsoft.com/v1.0/auditLogs/provisioning?$filter=provisioningStatusInfo/status eq 'failure'&$orderby=activityDateTime desc&$top=5
GET https://graph.microsoft.com/beta/servicePrincipals/{id}/synchronization/jobs/{jobId}/
POST /servicePrincipals/{id}/synchronization/jobs/{jobId}/restart

The first request lists recent failures, the second returns the job status (including the quarantine reason) and the third restarts the job, optionally clearing escrows, quarantine or watermarks. Cloud Sync uses the same engine; its agent and quarantine errors are in the Entra Connect sync reference.

Quarantine and job-level errors#

CodeMeaningUsual causeFirst check
EncounteredQuarantineExceptionInvalid credentials; no connection between source and targetExpired or wrong secret token or admin credentialsRe-authorize under Admin Credentials, test the connection, recheck the app's tutorial
EncounteredEscrowProportionThresholdMore than 40% of provisioning events failedOne systematic mapping or data problemFix the most frequent error in the logs, then restart
QuarantineOnDemandMicrosoft detected an issue and quarantined the job manuallyService-side detectionRead the quarantine email and logs; open a support request if unclear
HTTP/404 Not Found instead of HTTP/200 OKSCIM compliance issueWrong tenant URL, or an endpoint that isn't SCIM-compliantCheck the tenant URL; ask the app developer about compliance
Duplicate rolesImported roles must be uniqueDuplicate role from apps such as Salesforce or ZendeskRemove it in the application manifest

Microsoft says the thresholds can change, but roughly: escrow quarantine is evaluated from about 5,000 failures; more than 40% failed events or more than 40,000 failures triggers it (manager and group-member reference failures don't count), and 60,000 failures of any kind is an absolute limit. In quarantine, incremental cycles slow to once a day, and retries follow at 6, 12 and 24 hours, then daily. After 28 days the escrow entry is removed and the job is disabled. Restart provisioning runs a full initial cycle that clears escrows, quarantine and watermarks.

App provisioning and SCIM errors#

CodeMeaningUsual causeFirst check
Conflict, EntryConflictAttribute values conflict between Entra ID and the appAn app account already holds the valueFix one side, or adjust matching so that account is matched and taken over
TooManyRequestsThe app throttled the updateApp overloadedNothing: retried automatically
InternalServerErrorUnexpected error from the appApp-side service issueRetried in 40 minutes
InsufficientRights, MethodNotAllowed, NotPermitted, UnauthorizedAuthenticated but not authorizedProvisioning account or token lacks rights in the appFollow the app's provisioning tutorial
UnprocessableEntityUnexpected responseApp configuration or service issueCheck the app's configuration
WebExceptionProtocolErrorHTTP protocol errorTransientRetried in 40 minutes
InvalidAnchorA user created or matched earlier no longer existsDeleted in the appConfirm the user exists; a Graph restart forces re-matching (full cycle, cache cleared)
NotImplementedUnexpected responseApp configuration or service issueCheck the app's tutorial
MandatoryFieldsMissing, MissingValuesRequired values missing; user not createdEmpty source attributeFill the source value or fix the mappings
SchemaAttributeNotFoundAttribute doesn't exist in the appMapping to an unsupported attributeCorrect or remove the mapping
InternalErrorProvisioning service errorService sideRetried in 40 minutes
InvalidDomainA value contains an invalid domain nameDomain not permitted in the appChange the domain or allow it in the app
TimeoutThe app took too long to respondApp performanceRetried in 40 minutes
LicenseLimitExceededNo license left in the appSeat limitAdd seats or tighten assignments
DuplicateTargetEntriesSeveral app users matchDuplicate accounts in the appRemove the duplicate or change matching
DuplicateSourceEntriesSeveral source users matchDuplicate source valuesRemove the duplicate or change matching
ImportSkippedSource user lacks the matching attributeEmpty matching valuePopulate it; scope wasn't evaluated yet
EntrySynchronizationSkippedNo action takenOut of scope, or nothing to changeUsually fine; check scope if unexpected
SystemForCrossDomainIdentityManagementMultipleEntriesInResponseA GET returned several users or groupsSCIM endpoint ignores the filter, such as returning membersFix the SCIM endpoint
SystemForCrossDomainIdentityManagementServiceIncompatibleResponse can't be parsedSCIM server not compatible with the Entra SCIM clientWork with the developer
SchemaPropertyCanOnlyAcceptValueSingle-valued target, multi-valued sourceMapping mismatchMap a single-valued attribute or remove it

Assigned users that show as skipped are usually excluded by a scoping filter or missing a required attribute. If the user is "not effectively entitled", the assignment record is broken: unassign and reassign the user or group.

HR-driven provisioning (Workday, SuccessFactors)#

CodeMeaningUsual causeFirst check
HybridSynchronizationActiveDirectoryInsufficientAccessRights (InsufficientAccessRights-SecErr: The user has insufficient access rights.. Access is denied. … Problem 4003 - INSUFF_ACCESS_RIGHTS)The agent's account provAgentgMSA$ can't write this userOU that doesn't inherit domain permissions, or a protected group (AdminSDHolder, adminCount = 1)Re-enable inheritance and clear adminCount on orphaned accounts; otherwise, with approval, adjust AdminSDHolder
InvalidAttributeSyntax-LdapErr: The syntax is invalid. The parameter is incorrect. Error in attribute conversion operation, data 0, v3839.AD rejected an empty stringNull or empty HR value; value clearing is off by defaultEnable null flow on the source attribute and the mapping, or use Switch or IgnoreFlowIfNullOrEmpty
HybridSynchronizationActiveDirectoryCannotFindAttributeAttribute not found in the AD schemaAttribute missing from the schema, or added after the agent startedRestart the provisioning agent: it caches the schema at startup
Invalid value (provision on demand)Manager not updatedManager out of scope, not processed first, or default mapping changedRestore the default mapping; provision the manager first

Documented behaviors that look like errors:

  • Matching on extensionAttribute1–15 fails for Entra ID targets; use employeeID.
  • Mail updates to Entra ID don't apply because Exchange Online owns mail; change it there.
  • Some Workday changes (such as LocalReference) aren't in the transaction log that incremental sync reads; schedule a periodic full sync.
  • Workday terminations in Asia Pacific and Australia/New Zealand can lag 12–18 hours; use the termination lookahead query. For late SuccessFactors disables, Microsoft points to Lifecycle Workflows driven by the leave date.
  • Repeated updates for multi-valued, custom security and account status attributes are a known limitation.

Cross-tenant synchronization errors#

CodeMeaningUsual causeFirst check
AzureActiveDirectoryForbiddendirSyncEnabled is true, so immutableId and extensionProperty1-15 can't be updatedThose attributes in the mappingsRemove them from the attribute mappings
AzureActiveDirectoryForbiddenExternal collaboration settings blocked invitationsRestrictive guest invitation settingsAllow invitations in the target's external collaboration settings
AzureActiveDirectoryCannotUpdateObjectsOriginatedInExternalServiceExchange Online is the source of authority for Exchange attributes (extensionAttribute1–15)Users that existed when dirSyncEnabled changed from True to FalseUpdate in the target's Exchange Online, for example Set-MailUser -CustomAttribute2
AzureActiveDirectoryCannotUpdateObjectsOriginatedInExternalServiceSource of authority enforcement blocked Mail or showInAddressListGraph SOA enforcementThe engine may retry without the property; otherwise update it in the target
AzureDirectoryB2BManagementPolicyCheckFailureAutomatic redemption check failedAutomatic redemption missing on the target's inbound or the source's outbound settingsEnable it on both sides. Guide
AzureActiveDirectoryQuotaLimitExceededTenant object limit reachedDirectory quotaCheck whether the quota can be raised
InvitationCreationFailureInviting the user in the target failedVariesUsually needs support
InvitationCreationFailureUserAccountDisabledUser exists but is disabled; invitation pendingDisabled target accountEnable it and provision again
InvitationCreationFailureInvalidPropertyValueInvalid primary SMTP address, userType not Guest or Member, or the mail matches a groupSource data or mappingsFix the source mail, map userType correctly or change the group address
InvitationCreationFailureAmbiguousUserProxy address matches an internal user in the targetDuplicate proxy addressDelete the internal user or remove this user from scope
AzureActiveDirectoryCannotUpdateObjectsMasteredOnPremisesTarget user synced from AD and converted to externalSource of authority still on-premisesCross-tenant sync can't update it
EntityTypeNotSupportedGroups scope users but aren't synchronized (skipped)Group selected for provision on demandNothing; pick a user instead
AzureActiveDirectoryConflictEncounteredConflicting object in the targetA contact with the same mailMove the contact's group memberships, then delete it

Once a synchronized user exists, sign-in problems in the target tenant are B2B errors; see guest sign-in errors.

How to verify a fix#

  1. Run Provision on demand for one affected user from the app's Provisioning page: every step should succeed.
  2. After the next cycle, filter the provisioning logs to that user and to Failure: no new events with the old code.
  3. For quarantine, the progress bar loses its quarantine message and the audit logs show no new quarantine entry. Remember that a restart runs a full initial cycle, which takes longer.
  4. For HR inbound to AD, read the object back, for example Get-ADUser jdoe -Properties manager, title, and compare it with the HR record.

References#

Written and checked against current Microsoft Learn documentation. Test changes with a pilot group before rolling them out to everyone, and if an admin center path has moved since, search for the setting name instead.

Spotted a mistake, or did this fix work differently for you? Email me or message me on LinkedIn — corrections are credited in the article.

Written by

Omer Eltayeb

Intune Subject Matter Expert in Cairo, Egypt, former Microsoft Cloud Solutions Architect, Microsoft Certified Trainer and Microsoft Innovative Educator Expert (2024–26) and Microsoft Elevate Educator Expert (2026–27). I share practical, step-by-step guides, study plans, scripts and toolkits for Microsoft Intune, Configuration Manager, Microsoft Entra ID, Microsoft Defender, Exchange and Microsoft 365 with the community.

Microsoft Certified Trainer (MCT) 2026Microsoft Innovative Educator Expert 2025–2026Microsoft Elevate Educator Expert 2026–2027ISC2 Certified Information Systems Security Professional (CISSP)Microsoft 365 Certified: Enterprise Administrator Expert (MS-102)