> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# SCIM Setup

> Automatically provision and deprovision users and groups from your identity provider using SCIM 2.0.

Devin Enterprise supports SCIM 2.0 for automatic user and group provisioning. With SCIM, your identity provider (Okta, Microsoft Entra ID, or any SCIM 2.0-compliant IdP) pushes changes to Devin in real time — users are created before their first login, deprovisioned users lose enterprise membership immediately, and group memberships stay in sync without waiting for the next login.

SCIM complements [SSO](/enterprise/security-access/sso/guide). SSO is not required to use SCIM, but it is highly recommended.

<Warning>
  Before enabling SCIM, contact support to turn off login-based IdP group syncing. Otherwise groups re-sync on every login and conflict with the groups SCIM pushes. This only affects group syncing — users are still provisioned normally.
</Warning>

## What SCIM Manages

| Resource   | Supported operations                           |
| :--------- | :--------------------------------------------- |
| **Users**  | Create, read, list, update, deactivate, delete |
| **Groups** | Create, read, list, update, delete             |

SCIM-provisioned groups appear as [IdP groups](/enterprise/security-access/idp-groups) in Devin, so you can map them to enterprise roles and org access the same way as groups synced from SSO logins. Unlike login-synced groups, renaming a SCIM group in your IdP preserves its role and org mappings in Devin.

## Step 1: Get Your SCIM Credentials

1. In Devin, go to **Settings → Enterprise → Members**
2. Scroll to the **SCIM provisioning** section at the bottom of the Membership page
3. Copy the **SCIM base URL**
4. Click **Generate token** and copy the bearer token

<Warning>
  The bearer token is only shown once. Store it securely. You can rotate or revoke it from the same settings section at any time.
</Warning>

## Step 2: Configure Your Identity Provider

<Tabs>
  <Tab title="Okta">
    SCIM is set up as a separate application from your existing Devin SSO app.

    **Create the application**

    1. In the Okta Admin Console, go to **Applications → Applications** and click **Browse App Catalog**

           <Frame>
             <img src="https://mintcdn.com/cognitionai/SyQRU3qbsN5IUTkF/images/enterprise/scim/okta/okta-browse-app-catalog.png?fit=max&auto=format&n=SyQRU3qbsN5IUTkF&q=85&s=e97ff741243ce49a196e7224f0d954a8" alt="Browse App Catalog in the Okta Applications page" width="1051" height="538" data-path="images/enterprise/scim/okta/okta-browse-app-catalog.png" />
           </Frame>

    2. Search for **SCIM 2.0 Test App (OAuth Bearer Token)**

           <Frame>
             <img src="https://mintcdn.com/cognitionai/SyQRU3qbsN5IUTkF/images/enterprise/scim/okta/okta-scim-search.png?fit=max&auto=format&n=SyQRU3qbsN5IUTkF&q=85&s=5517a665185deb368047ccc090ac0ccf" alt="Searching for the SCIM 2.0 Test App (OAuth Bearer Token) integration" width="1042" height="822" data-path="images/enterprise/scim/okta/okta-scim-search.png" />
           </Frame>

    3. Click **Add Integration** and name it for easy reference (e.g. `Devin (SCIM)`)

           <Frame>
             <img src="https://mintcdn.com/cognitionai/SyQRU3qbsN5IUTkF/images/enterprise/scim/okta/okta-add-integration.png?fit=max&auto=format&n=SyQRU3qbsN5IUTkF&q=85&s=cdae7c62c931892f0717a4d153458625" alt="Add Integration for the SCIM 2.0 Test App (OAuth Bearer Token)" width="889" height="454" data-path="images/enterprise/scim/okta/okta-add-integration.png" />
           </Frame>

    **Configure the application**

    1. Open the app → **Provisioning → Integration**, click **Configure API Integration**, and check **Enable API integration**

       * **SCIM 2.0 Base Url:** the SCIM base URL from Devin
       * **OAuth Bearer Token:** the bearer token from Devin
       * Click **Test API Credentials** — this should succeed — then **Save**

           <Frame>
             <img src="https://mintcdn.com/cognitionai/SyQRU3qbsN5IUTkF/images/enterprise/scim/okta/okta-configure-api-integration.png?fit=max&auto=format&n=SyQRU3qbsN5IUTkF&q=85&s=5137517536897cf1cbcb9eb102ec71ac" alt="Configuring the SCIM API integration with the base URL and bearer token" width="1035" height="855" data-path="images/enterprise/scim/okta/okta-configure-api-integration.png" />
           </Frame>

    2. Open the app → **Provisioning → To App**, click **Edit**, enable **Create Users**, **Update User Attributes**, and **Deactivate Users**, then click **Save**

           <Frame>
             <img src="https://mintcdn.com/cognitionai/SyQRU3qbsN5IUTkF/images/enterprise/scim/okta/okta-provisioning-settings.png?fit=max&auto=format&n=SyQRU3qbsN5IUTkF&q=85&s=8aa531d3a6967b66fbf6ceb826dad564" alt="Enabling Create Users, Update User Attributes, and Deactivate Users" width="1022" height="979" data-path="images/enterprise/scim/okta/okta-provisioning-settings.png" />
           </Frame>

    3. Open the app → **Sign On**, click **Edit**, set **Application username format** to **Email**, and click **Save**

           <Frame>
             <img src="https://mintcdn.com/cognitionai/SyQRU3qbsN5IUTkF/images/enterprise/scim/okta/okta-username-email.png?fit=max&auto=format&n=SyQRU3qbsN5IUTkF&q=85&s=b3b814b664de4e1ab60b0f8507b0fb04" alt="Application username format set to Email in the Sign On settings" width="741" height="988" data-path="images/enterprise/scim/okta/okta-username-email.png" />
           </Frame>

    4. Open the app → **Provisioning → To App**, scroll to the attribute mappings, and click **Go to Profile Editor**

           <Frame>
             <img src="https://mintcdn.com/cognitionai/SyQRU3qbsN5IUTkF/images/enterprise/scim/okta/okta-attributes.png?fit=max&auto=format&n=SyQRU3qbsN5IUTkF&q=85&s=4402f13fdad32428c0998b5804b5a0d9" alt="Attribute mappings table with the Go to Profile Editor button" width="976" height="781" data-path="images/enterprise/scim/okta/okta-attributes.png" />
           </Frame>

    5. In the Profile Editor, click **Mappings**

           <Frame>
             <img src="https://mintcdn.com/cognitionai/SyQRU3qbsN5IUTkF/images/enterprise/scim/okta/okta-mappings-button.png?fit=max&auto=format&n=SyQRU3qbsN5IUTkF&q=85&s=3ac5849f8b14e8bde3c80548a46de117" alt="Mappings button in the Okta Profile Editor" width="1024" height="1129" data-path="images/enterprise/scim/okta/okta-mappings-button.png" />
           </Frame>

       * On the first tab (Okta user to app), set all mappings to **Do not map** except `appuser.givenName → firstName`, `appuser.familyName → lastName`, and `appuser.email → email`, then click **Save Mappings**

             <Frame>
               <img src="https://mintcdn.com/cognitionai/SyQRU3qbsN5IUTkF/images/enterprise/scim/okta/okta-mappings.png?fit=max&auto=format&n=SyQRU3qbsN5IUTkF&q=85&s=a5003a25682a21efdc8649f9c354dc47" alt="First mapping tab with givenName, familyName, and email mapped" width="978" height="1247" data-path="images/enterprise/scim/okta/okta-mappings.png" />
             </Frame>

       * On the second tab (app to Okta user), set all mappings to **Do not map** except `user.firstName`, `user.lastName`, and `user.email`, then click **Save Mappings**

             <Frame>
               <img src="https://mintcdn.com/cognitionai/SyQRU3qbsN5IUTkF/images/enterprise/scim/okta/okta-mappings-reverse.png?fit=max&auto=format&n=SyQRU3qbsN5IUTkF&q=85&s=e2e4ad15903cd9b66e015feb5329aa78" alt="Second mapping tab with firstName, lastName, and email mapped" width="980" height="1212" data-path="images/enterprise/scim/okta/okta-mappings-reverse.png" />
             </Frame>

    **Assign users and groups**

    * Assign users (and groups) under the **Assignments** tab
    * To sync groups to Devin, also push them under the **Push Groups** tab
  </Tab>

  <Tab title="Entra ID">
    SCIM is set up as a separate application from your existing Devin SSO app.

    **Create the application**

    1. In the Entra admin center, go to **Enterprise applications** and click **+ New application**

           <Frame>
             <img src="https://mintcdn.com/cognitionai/SyQRU3qbsN5IUTkF/images/enterprise/scim/entra/entra-new-application.png?fit=max&auto=format&n=SyQRU3qbsN5IUTkF&q=85&s=65c067f98a963eae97dd293ba3b6708b" alt="New application in Entra Enterprise applications" width="1380" height="893" data-path="images/enterprise/scim/entra/entra-new-application.png" />
           </Frame>

    2. Click **+ Create your own application**

           <Frame>
             <img src="https://mintcdn.com/cognitionai/SyQRU3qbsN5IUTkF/images/enterprise/scim/entra/entra-new-application-create.png?fit=max&auto=format&n=SyQRU3qbsN5IUTkF&q=85&s=6e3a7d4182e1ff2d25762609f003c5d0" alt="Create your own application in the Entra App Gallery" width="1337" height="773" data-path="images/enterprise/scim/entra/entra-new-application-create.png" />
           </Frame>

    3. Name it for easy reference (e.g. `Devin (SCIM)`), keep the non-gallery option selected, and click **Create**

           <Frame>
             <img src="https://mintcdn.com/cognitionai/SyQRU3qbsN5IUTkF/images/enterprise/scim/entra/entra-new-application-name.png?fit=max&auto=format&n=SyQRU3qbsN5IUTkF&q=85&s=2f38cec3b557f6f68c52708feeba4ea7" alt="Naming the app and selecting the non-gallery option" width="563" height="451" data-path="images/enterprise/scim/entra/entra-new-application-name.png" />
           </Frame>

    **Configure the application**

    1. Open the app → **Provisioning** and click **Connect your application**

           <Frame>
             <img src="https://mintcdn.com/cognitionai/SyQRU3qbsN5IUTkF/images/enterprise/scim/entra/entra-new-application-connect.png?fit=max&auto=format&n=SyQRU3qbsN5IUTkF&q=85&s=87a55bf77daf5ee9380c4336b99b5636" alt="Connect your application on the provisioning overview" width="1375" height="1157" data-path="images/enterprise/scim/entra/entra-new-application-connect.png" />
           </Frame>

       * **Tenant URL:** the SCIM base URL from Devin
       * **Secret Token:** the bearer token from Devin
       * Click **Test Connection** — this should succeed — then **Save**

           <Frame>
             <img src="https://mintcdn.com/cognitionai/SyQRU3qbsN5IUTkF/images/enterprise/scim/entra/entra-provisioning-config.png?fit=max&auto=format&n=SyQRU3qbsN5IUTkF&q=85&s=01c2f328b832f857b81cde3154f7a592" alt="Entering the tenant URL and secret token with Bearer authentication" width="727" height="699" data-path="images/enterprise/scim/entra/entra-provisioning-config.png" />
           </Frame>

    2. Open the app → **Provisioning → Mappings → Provision Microsoft Entra ID Users** (ensure provisioning is enabled for users and groups)

           <Frame>
             <img src="https://mintcdn.com/cognitionai/SyQRU3qbsN5IUTkF/images/enterprise/scim/entra/entra-provisioning-enable.png?fit=max&auto=format&n=SyQRU3qbsN5IUTkF&q=85&s=f10693bcc4ea390c9d76e61c878c4a5f" alt="Provision Microsoft Entra ID Users mapping" width="1378" height="774" data-path="images/enterprise/scim/entra/entra-provisioning-enable.png" />
           </Frame>

       * Edit `userName` so it matches the `emails[type eq "work"].value` mapping (e.g. set both to the Entra attribute `userPrincipalName`), then click **Save**

             <Frame>
               <img src="https://mintcdn.com/cognitionai/SyQRU3qbsN5IUTkF/images/enterprise/scim/entra/entra-attribute-mapping.png?fit=max&auto=format&n=SyQRU3qbsN5IUTkF&q=85&s=2bd379e45fd0bdcb26822316c3dc4417" alt="userName and emails[type eq work].value both mapped to userPrincipalName" width="1368" height="1259" data-path="images/enterprise/scim/entra/entra-attribute-mapping.png" />
             </Frame>

       * Remove all attribute mappings except `userName`, `active`, `name.givenName`, `name.familyName`, `emails[type eq "work"].value`, and `externalId`

             <Frame>
               <img src="https://mintcdn.com/cognitionai/SyQRU3qbsN5IUTkF/images/enterprise/scim/entra/entra-attribute-mapping-removal.png?fit=max&auto=format&n=SyQRU3qbsN5IUTkF&q=85&s=5de2eba47c034c222e079154542d5ddb" alt="Attribute mappings trimmed to the supported set" width="1363" height="931" data-path="images/enterprise/scim/entra/entra-attribute-mapping-removal.png" />
             </Frame>

    **Assign users and groups**

    1. Open the app → **Users and groups** and click **+ Add user/group**
    2. Open the app → **Provisioning** and click **Start provisioning** (set **Provisioning Status** to **On** for automatic background syncing on Entra's standard cycle, approximately every 40 minutes)
    3. (Optional) To sync specific users immediately, use **Provisioning → Provision on demand**
  </Tab>

  <Tab title="Other IdPs">
    Any SCIM 2.0-compliant identity provider can provision users and groups to Devin:

    * **Base URL:** the SCIM base URL from Devin (ends in `/scim/v2`)
    * **Authentication:** HTTP `Authorization: Bearer <token>` header
    * **Resources:** `/Users` and `/Groups`, with standard discovery endpoints (`/ServiceProviderConfig`, `/ResourceTypes`, `/Schemas`)
    * **Limited attribute set:** other attributes are ignored. Only the following are supported:
      * **Users:** `userName`, `active`, `emails`, `name.givenName`, `name.familyName`, `externalId`
      * **Groups:** `displayName`, `members`, `externalId`
  </Tab>
</Tabs>

<Note>
  A user's `userName` must be their email address. This is why the Okta application username format is set to **Email** and the Entra `userName` mapping must match the work email mapping.
</Note>

## Step 3: Map Groups to Roles

Assigned users are provisioned into your Devin enterprise with the default Enterprise Member role — before they ever log in. Map provisioned groups to roles and orgs under **Settings → Enterprise → Identity Provider Groups**.

## How Provisioning Interacts with SSO Login

* Users provisioned via SCIM can log in via SSO immediately; no invite is needed
* Deactivating a user in your IdP removes their enterprise membership right away; reassigning them restores it
* Group memberships pushed via SCIM take effect immediately, without waiting for the user's next login
* With login-based group syncing off, SCIM is the only source of IdP group memberships
* Users created earlier by just-in-time provisioning or manual invites keep working; assign them in your IdP so SCIM manages them
