An API that connects multiple Microsoft services, enabling data access and automation across platforms
Hi @Danyil Volovyk
Question 1:
Yes — Not([active]) -> accountDisabled is the correct and recommended mapping.
In SCIM, active=true means the account is enabled. In Active Directory, accountDisabled=true means the account is disabled. The negation is required to align them. This is the standard pattern documented for Entra inbound provisioning to on-premises AD.
Question 2:
This is a known behavior limitation in API-driven inbound provisioning.
The provisioning service derives accountDisabled from the AD userAccountControl bitmask attribute. The pre-write comparison for this derived boolean is not always reliable — the service may not correctly detect that the current AD state already matches the desired state, resulting in a repeated Update export rather than RedundantExport.
This is not expected behavior in an ideal sense, but it is a known limitation of how userAccountControl-derived attributes are handled.
Question 3:
Direct accountDisabled -> accountDisabled mapping is not reliable for this scenario.
The SCIM active attribute is the canonical source for account lifecycle state in Entra provisioning. If your source system sends account state as something other than active, the recommended approach is either:
- Map your source attribute to active in your API payload, or
- Use an expression such as IIF([yourSourceAttr] = "disabled", False, True) mapped to active, then let Not([active]) -> accountDisabled handle the AD write.
Direct accountDisabled -> accountDisabled bypasses the userAccountControl handling logic in the provisioning agent and may not consistently apply or compare correctly.
Question 4:
Yes, there is a known limitation here. Because accountDisabled in AD is a derived value from userAccountControl (bit 2), the provisioning agent's change-detection logic for this attribute is less reliable than for standard string or integer attributes.
Microsoft has documented that userAccountControl-derived attributes can cause repeated exports even when the target state has not changed. This is most commonly observed in API-driven inbound provisioning scenarios.
Question 5: There is no current configuration option that guarantees RedundantExport for accountDisabled on repeated identical payloads in API-driven provisioning. Recommendations:
- Ensure you are on the latest provisioning agent version — comparison logic improvements have been shipped in agent updates.
- Verify your active attribute is correctly set in the payload so the engine works from a clean boolean rather than a derived value.
- If this is causing operational issues such as audit noise or downstream triggers, open a Microsoft support case with your provisioning job ID and a sample request. I hope that helps.