Resolve identity provider (IdP) reporting errors, missing users, incorrect permissions, or failed deactivations. First, check your IdP's provisioning log to inspect the request payload and Celigo's HTTP response status. Next, check the Celigo audit log (filtered by source SSO) to verify what Celigo recorded.
Your identity provider's provisioning log shows the status Celigo returned and, for most failures, the detail text.
| Status | scimType |
Detail | What it means |
|---|---|---|---|
200 |
— | — | Celigo adopted an existing user or group and applied the push. Not an error. |
201 |
— | — | Celigo created the user or group. |
400 |
— | userName is required |
The userName mapping sent nothing. |
400 |
— | userName must be a valid email address |
The userName mapping isn't sending an email address. |
400 |
mutability |
userName and email are immutable |
The push tried to change an existing user's email. |
400 |
— | Email domain is not allowed for this IdP configuration |
End users only. The person's email domain isn't one this identity provider routes. |
400 |
— | Content-Type is required for this request |
The request carried no Content-Type header. Celigo accepts application/scim+json and application/json. |
400 |
invalidFilter |
— | The filter used an unsupported attribute or operator. |
401 |
— | Unauthorized |
The token was revoked, belongs to the other configuration, was sent without the Bearer scheme, or SCIM provisioning is turned off. |
403 |
— | insufficientLicense |
The subscription no longer includes SCIM provisioning or single sign-on (SSO). |
409 |
— | User already exists under a different IdP configuration |
End users only. Another identity provider's SCIM configuration already manages this person. |
429 |
— | — | The per-IP rate limit was reached. No Retry-After header is returned. |
501 |
notImplemented |
— | The identity provider sent DELETE. Celigo changed nothing. |
A SCIM problem shows up in three places: the identity provider's provisioning log, which carries the request and Celigo's response; the Celigo Users lists, where a person is missing, disabled, or holds the wrong access; and the Celigo audit log filtered by source SSO, which records what Celigo actually changed.
The IdP reports 401 Unauthorized
A 401 means Celigo rejected the token or the configuration, not the person being provisioned. Check these causes in order.
- The token was revoked. Someone selected Revoke on the slot the IdP was using, and the slot now reads No token generated. Generate a token and update the IdP.
- SCIM provisioning is turned off or unsaved. Open the configuration and confirm that SCIM provisioning is selected and saved. Turning it off revokes both tokens, so after turning it back on you need new ones.
- The base URL points at the wrong configuration. Each configuration has its own base URL and tokens, and a token pasted against another configuration's URL fails. Copy the URL and token from the same section.
- For end users, the identity provider was deleted. Deleting an identity provider deletes its SCIM configuration and tokens. Set SCIM up on its replacement. Disabling an identity provider doesn't stop its SCIM pushes.
- For workspace users, SSO is turned off. The workspace configuration depends on the account's SSO configuration. Turn SSO back on.
-
The token was entered without the
Bearerscheme. Celigo accepts the token only asAuthorization: Bearer <token>. Okta's SCIM 2.0 Test App (Header Auth) sends its API Token field as the header value exactly as typed, so enterBearer, a space, and then the token there. Okta reports this asError authenticating: Unauthorized. Errors reported by remote server: Unauthorized.
The IdP reports 403 Forbidden
Your subscription no longer includes SCIM provisioning or single sign-on (SSO). Until the subscription includes both again, Celigo rejects every SCIM request with the detail insufficientLicense, even when the token is valid. Users the IdP already provisioned aren't affected. Contact your Celigo account manager.
The IdP reports 429 Too Many Requests
Celigo limits SCIM requests per source IP address, and a large initial synchronization that sends hundreds of requests at once can reach the limit. IdPs retry throttled requests on their own schedule, so wait for the synchronization to finish. Celigo's response carries no Retry-After header. If the IdP keeps failing on the same people, reduce the assignment batch size or contact Celigo Support.
A user was assigned but never appeared
A person who doesn't reach Celigo has almost always been rejected with a 400 or a 409. Check the request's status in the IdP's provisioning log.
-
400 with
Email domain is not allowed for this IdP configuration. End users only. The identity provider routes Specific email domains and this person's domain isn't listed. Add the domain to the identity provider, or assign the person to the SCIM application of the identity provider that routes their domain. -
400 with
userName must be a valid email addressoruserName is required. The IdP'suserNamemapping isn't sending an email address. MapuserNameto the person's email. -
400 with
Content-Type is required for this request. The request had noContent-Typeheader. Celigo acceptsapplication/scim+jsonandapplication/json. -
400 with
userName and email are immutable. The IdP tried to change an existing user'suserName, or sent aPATCHthat replacesemails. This happens when the IdP's matching rule found the person byexternalIdand their email changed in the directory, or when theuserNameandemailsmappings read different source attributes. Change the email in Celigo first, then let the IdP retry. -
409 with
User already exists under a different IdP configuration. End users only. Another identity provider's SCIM configuration already manages this person. Assign them to one SCIM application only. If their domain isn't routed to this identity provider, the domain400fails first. -
200 or 201, but you can't find them. Search Account > Users by email, and for end users open End users > Users. A
200means the person already existed and Celigo adopted them, so look for the existing record rather than a new one.
An existing user produced no error
Celigo adopts an existing user instead of returning a conflict, so no error appears in the identity provider's log. Turning SCIM on for an account with dozens of invited users produces no errors to clean up. The audit log shows an update entry with source SSO for each adopted user.
A pushed group didn't give anyone access
-
The name doesn't match. Matching is exact and case-sensitive, so
Finance Teamandfinance teamare different groups. Compare the IdP group name with the Celigo group name character by character, then rename one of them. Okta matches group names without regard to case, so if Celigo has two groups whose names differ only by case, Okta's push fails withIncorrect result size: expected 1, actual 2and no membership arrives. Rename or delete one of the two. -
Celigo created a new group. When no name matched, Celigo created a group with that name and no MCP servers. Open it under End users > Groups and assign servers and capabilities, or delete it and fix the name. A group whose name is an ID string came from a user
groupsentry that carried only avalue— map the group name todisplayinstead. -
The IdP is sending role names instead of group names. Values mapped to the
EndUserrolesattribute are matched to end-user roles, not groups, and a name that matches no role is ignored. Map group memberships togroupsor push them as groups, and maprolesonly to names of roles that exist in Celigo. -
The membership was removed in Celigo, or by a profile push. Memberships the IdP manages come back on the next push, so remove the person from the group in the IdP instead. A user push that carries an empty
groupslist removes every membership the IdP manages. In Okta, select Push Now on the group to restore them.
Access level doesn't match the IdP
-
The value isn't recognized. Celigo accepts
administrator,manage,monitor, andnone, plus the aliases listed in Provision workspace users with SCIM. On create, an unrecognized value becomesnone. On update, Celigo keeps the current level. A user whose access level isnoneshows an empty Role cell in Account > Users. -
The attribute isn't in the mapping. If the IdP doesn't send
accessLevel, new users getnoneand existing users keep what they have. Add the mapping. -
The person is the account owner. SCIM never changes the owner's access level. The audit log shows
accessLevel:<value> (ownership changes require transfer). - Someone changed it in Celigo. SCIM sets it back on the next push. Change access levels in the IdP.
A user wasn't deactivated
-
The person is the account owner. SCIM can't deactivate the owner. The audit log shows
deactivate (ownership changes require transfer). Transfer ownership first, then deactivate. See Provision workspace users with SCIM. -
The IdP sent
DELETEinstead ofactive: false. Celigo answersDELETEwith501, changes nothing, and writes no audit entry. Configure the IdP to deactivate people rather than delete them; most do this by default when you unassign someone. Microsoft Entra ID also sendsDELETEwhen a person is permanently deleted, unless you clear the Delete target object action in the attribute mapping. OneLogin sends it when its action for deleted users is Delete instead of Suspend, and Auth0's stock Action template sends it onuser.deleted. - The person is the other user type. End-user SCIM disables the end-user membership only, and workspace SCIM disables the workspace membership only. A person who is both needs both configurations.
-
You unassigned a group instead of its members. Unassigning a group doesn't remove its memberships or deactivate anyone. Microsoft Entra ID sends
DELETEfor the group, Celigo rejects it, and the group keeps its members and their access. Remove the members in the IdP before you unassign the group, or remove them from the group in Celigo now.
Deleted Entra ID user is still active
Microsoft Entra ID sends DELETE for a permanently deleted person, and Celigo answers 501 without changing the user or writing an audit entry. Only active: false deactivates someone, and Entra ID sends it on its next provisioning cycle for a person who was disabled, unassigned, or soft-deleted. If you permanently deleted the person before that cycle ran, for example straight after the soft delete, Celigo never received active: false and the person stays active with their access level or groups. Entra ID's provisioning log shows the failed delete; Celigo's audit log shows nothing. Deactivate the person in Celigo yourself. Next time, disable or unassign people in Entra ID and let a cycle run, or provision them on demand, before you delete them. See Set up SCIM provisioning with Microsoft Entra ID.
Disabled user is active again
The IdP owns active. Many IdPs send active: true on every update, and Celigo re-enables the user when it arrives. Deactivate the person in the IdP, or unassign them from the SCIM application.
Reactivated Okta user stays disabled
Deactivating a person in Okta removes their app assignments along with sending active: false, so activating them again in Okta restores the Okta account but pushes nothing to Celigo. Assign the SCIM application to the person again, directly or through a group. Okta then sends active: true, and Celigo re-enables them with their previous access level or memberships.
Deactivated user can still call the API
Deactivation revokes the personal access tokens the person created in your account. It doesn't revoke API tokens, which belong to the account. Go to Resources , and then select API tokens, find the token the call is using, and revoke it.
Provisioning stopped completely
When every request fails for a while, some identity providers switch provisioning off rather than keep retrying.
-
Microsoft Entra ID quarantines the job. After most requests fail, for example with
401once a token is revoked, Entra ID puts the provisioning job in quarantine, slows the cycle to once a day, and emails the notification address on the application. After 4 weeks in quarantine it disables the job. Fix the cause, then select Restart provisioning. See Set up SCIM provisioning with Microsoft Entra ID. -
Auth0 disables the event stream. After 500 consecutive failed deliveries, Auth0 switches the stream off. A bulk deletion of people who were never blocked reaches that threshold quickly, because Celigo rejects every
DELETE. See Set up SCIM provisioning with Auth0.
Prevention
- Deactivate or unassign people in the identity provider and let a cycle run before you delete them there. Only
active: falsedeactivates someone in Celigo. - Deactivate people in the identity provider rather than in Celigo. Many identity providers send
active: trueon every update and re-enable anyone you disabled by hand. - Create the Celigo end-user groups, with their MCP servers assigned, before you push group names. A name that matches nothing creates an empty group that grants no access.
- Keep the account owner a shared mailbox that isn't in your directory, so your identity provider never tries to deprovision it.
- Change a person's email in Celigo first, then in the identity provider.