SCIM - Azure Sync: Critical Considerations
For customers who utilize SCIM to synchronize Azure Entra ID users with SkillsDB automatically, there are few considerations based on limitations related to SCIM and our auth platform, Stytch.
Provisioning Mapping
On our SCIM Setup guide, its imperative to make sure that you have followed the Mapping and Attributes section to specify the externalId mapping attribute.
It's okay to do that now even if it was not done earlier before any more users are provisioned.
Email Change
If the email is changed for any user on Entra ID, it will be handled in the following way for Internal and External users:
Internal Users
For Internal users which were primarily created in Entra ID as user accounts, the email change is going to be propagated, handled and reflected in SkillsDB.
External Users
For External users who are invited as guests to Entra ID, the account email with which they were added cannot be updated.
They will be removed from Entra ID and a new email will be added in its stead. And this is exactly what will happen on SkillsDB: we will deactivate the user with the old email and add a new one with the new email.
User Groups
You can provision 2 types of users in SkillsDB using SCIM sync:
Admins - Create an Entra ID Group called
SkillsdbGlobalAdminsand add the intended users to it.Full Access - Create an Entra ID Group called
SkillsdbFullAccessand add the intended users to it.Basic - Any users outside of this group will be treated as the
Basicuser category.If a user is a manager of another user (and is not an
AdminorFull Accessuser), then they will be promoted to Manager role automatically.
Manager Provisioning
When provisioning is started for the very first time, it is possible that a direct report is provisioned first and their manager comes into the provisioning flow later.
If this happens, we have no way of knowing if the direct report has the manager assigned due to the way SCIM works.
How to resolve this
The simple way to resolve this is to restart the provisioning on the Azure's Enterprise Application.
Provisioning must be restarted after the first ever provisioning cycle completes after SCIM integration and whenever you think there is a discrepancy in the manager assignment for employees.
There are 2 ways to do this:
Option 1: Manually Restart Provisioning
On the Azure Portal, select Enterprise Applications > All Applications.
Select the intended application
Go to Provisioning > Overview
Click Restart Provisioning
Option 2: Automating the restart provisioning process
If you would like to restart provisioning on a regular basis:
Identify the Enterprise App instance (service principal)
Find the provisioning job ID:
GET /servicePrincipals/{servicePrincipalId}/synchronization/jobsThe response has the
idyou’ll use in the restart call.Make the call:
POST https://graph.microsoft.com/v1.0/servicePrincipals/{servicePrincipalId}/synchronization/jobs/{jobId}/restart Content-Type: application/json { "criteria": { "resetScope": "Full" // or omit for a simple restart } }Run it on a schedule/trigger of your choice:
Azure Logic Apps / Power Automate: Recurrence → HTTP action (POST to Graph).
Azure Automation Runbook / GitHub Actions / DevOps pipeline: Use Graph PowerShell or REST.
Manager unassignment
If an assigned manager is removed from a user without an assignment of another manager, then this will not be reflected because Microsoft does not provision null attributes in such cases. Some quotes from Microsoft documentation:
Entra ID currently can't provision null attributes. If an attribute is null on the user object, it will be skipped. If you for example used to provision the Manager via the integration, but now delete the manager information in Entra ID, the Manager value becomes a null attribute. This will then not be included in the next synchronization
Entra ID SCIM synchronization does note send empty/null values for user attributes. If a user attribute was previously populated with data in Axiad Conductor via SCIM, and then that attribute is set to empty/null in Entra ID, then the change will not be sent to Axiad Conductor.
Reassignments to a different manager is going to work just fine.
User Deactivation
A user will be marked as deactivated — not deleted — in SkillsDB when any of the following actions are performed in the identity provider by the client:
User removed from a SCIM group — The user is removed from a provisioned group (e.g.
SkillsdbGlobalAdminsorSkillsdbFullAccess).User disabled in the IdP — The user's account is disabled (e.g. "Account Enabled" turned off in Entra ID).
User removed from SCIM provisioning — The user is unassigned from the SCIM application in the IdP.