Skip to content

Document SCIM user provisioning under administration/managing_users #385

Description

@dangrondahl

Rescoped twice, and now unblocked. The SCIM page landed in #392 (feat: add SSO, SCIM and Magic Link documentation), which superseded #382#382 was closed, not merged. #392 covers most of what this issue originally asked for, and closed one of the four residual gaps outright. What remains is listed below. See the comment thread for the original scope and the two rescopings.

What #392 already covers

Setup via the wizard, IdP group → Kosli role mapping (kosli-<org-name>-<role>), sync timeliness, deprovisioning, what happens to people who already had SSO access, the IdP being authoritative for a provisioned user's roles and their organization membership, and a <Note> on the "Assigning roles" section of roles_in_kosli.md.

It also went beyond the original scope, so none of this needs re-auditing:

  • A prerequisites section (SSO first, SCIM enabled per-org on request, wizard link, IdP admin access).
  • The Okta caveat — Okta's SCIM integration only works over SAML, so an Okta OIDC connection has to be recreated. Also cross-referenced from single_sign_on.md.
  • First-sync planning: a full or forced sync provisions every assigned user at once, so groups and role mappings must be right before triggering one.
  • A user assigned to no Kosli group is neither provisioned nor deprovisioned, and their existing access is untouched.

Nothing below duplicates any of that.

Residual gap

1. The user-management toggle in the admin area

Not mentioned in #392, and absent from the repo entirely — grep -i "toggle\|opt.in" across administration/ returns nothing.

An admin in a SCIM-managed org can opt back in to managing the remaining non-IdP users, via a toggle on the user management page. With the opt-in off, the UI permits no invitations or role changes at all.

This is the control an admin actually reaches for when they discover they can't invite someone, so it needs to be documented on the provisioning page.

2. Invitation and removal — partially covered

Status: mostly closed by #392. Its closing <Note> now reads "neither their roles nor their membership of your Kosli organizations can be changed in Kosli", and the roles_in_kosli.md "Assigning roles" <Note> says the same. Membership covers removal and re-invitation implicitly, which is a real improvement over #382's role-only wording.

Two things are still missing:

  • The explicit enumeration — IdP-owned members can no longer be invited, re-invited, role-changed, or removed — and the fact that the UI now blocks these rather than accepting them and letting the next sync silently overwrite them.
  • The Benefits section still frames invitation purely as a convenience: "you no longer need to explicitly invite people one-by-one". For IdP-owned members it is a removed capability. A reader who takes the Benefits framing at face value will still be surprised by the UI, so Benefits needs a pointer to the restriction.

3. Service accounts are out of scope of SCIM

Not mentioned in #392. Service accounts are unaffected and stay editable in Kosli throughout.

Worth stating explicitly because roles_in_kosli.md opens by establishing the opposite default: "Roles apply to service accounts the same way they apply to users. Wherever this page mentions a 'user', read it as 'user or service account' unless explicitly stated otherwise." Under that instruction, a reader carries the SCIM restrictions onto service accounts unless told not to.

4. Three assertions in roles_in_kosli.md are still unqualified

Status: fully open. #392's only edit to that file was the 4-line <Note> on the "Assigning roles" procedure. These three remain unconditional, and are wrong for a SCIM-managed org — quoted rather than line-numbered, since line numbers drift:

  • The opening <Note>: "The only role-related capability that is user-only is being invited to or removed from the organization." In a SCIM org, invitation and removal of IdP-owned members is not a Kosli capability at all.
  • The permissions matrix: the Invite and remove users and Change user roles rows, both for Admin.
  • The Admin accordion: "User Management: Invite, remove, and change roles of organization members (Admin only)".

The permissions matrix is the most-read part of that page and the most likely to be trusted verbatim.

Source text

Reproduced from two changelog entries (dated August 31, 2026, tagged Platform) that were written and then dropped, because at the time there was no page to link them to. They are the only written description of this behavior. Treat as a starting point, not as verified reference copy.

Neither has since been published: the August 31, 2026 Platform entry now in changelog/index.mdx contains only the attestations-filter bug fix.

SCIM orgs: user management moves to your IdP — in an organization whose user lifecycle is managed by SCIM, members owned by the IdP can no longer be invited, re-invited, role-changed, or removed through Kosli. Such edits used to appear to succeed, only to be silently overwritten by the next sync, leaving Audit Log entries attributing the change to the wrong actor. Service accounts are unaffected and stay editable throughout.

Opt back in to managing non-SCIM users — an admin in a SCIM-managed organization can manage the remaining (non-IdP) users via a toggle on the user management page. With the opt-in off, the UI permits no invitations or role changes.

Open questions

Product input needed; #392 answered none of these. It did answer the rest of the original list — SCIM is enabled per-org on request, and people with existing SSO access keep it and become SCIM-managed once provisioned.

  • Is the user-management toggle visible to admins in every org, or only in SCIM-managed ones?
  • With the opt-in off, are invitations blocked for non-IdP users too, or only for IdP-owned ones?
  • Are service accounts genuinely untouched by SCIM, including role changes?
  • Does deprovisioning in the IdP archive or delete the Kosli member? feat: add SSO, SCIM and Magic Link documentation #392 says access is "revoked automatically", which is ambiguous.

Gaps 2 and 4 need no product input and can proceed now.

Definition of done

  • The SCIM page exists on main (feat: add SSO, SCIM and Magic Link documentation #392; docs: add blank authentication and user provisioning pages #382 closed unmerged)
  • The admin-area toggle, the explicit invite/remove restriction, and the service-account exemption are documented on automated_user_provisioning.md, with Benefits pointing at the restriction
  • The three assertions above in roles_in_kosli.md are qualified for SCIM orgs
  • mint broken-links clean
  • The two changelog entries quoted above are added to changelog/index.mdx, linking /administration/managing_users/automated_user_provisioning

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    contentWriting, adding, or updating doc pagesdocumentationImprovements or additions to documentationpriority: mediumImportant but not blocking

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions