# Connecting SailPoint and ServiceNow Identity Governance

To connect SailPoint with ServiceNow Identity Governance, perform the following tasks:

## Adding the Source in SailPoint

To connect to SailPoint, perform the following steps. Once the connection is made, you can configure it to meet your company's needs.

> [!IMPORTANT]
>
> By default, the provisioning feature is **disabled**, and the connector only supports read-only operations. To support provisioning operations, you must manually enable the feature in the source configuration.

**To configure a new source:**

1. Sign in to SailPoint.
2. Go to **Admin \> Connections \> Sources**.
3. Select **Create New**.
4. Search for the connector by entering the name in the search box, and then select **Configure**.
5. In the **Source Name** field, enter a unique and descriptive name for your source. Source names cannot exceed 128 characters.
6. In the **Description** field, provide additional details about the source to help distinguish it from similar sources. This field allows a maximum of 2,000 characters.
7. In the **Source Owner** field, begin typing the name of an owner. Matches appear after you type two or more letters. For more information, refer to [Assigning a Source Owner](<https://documentation.sailpoint.com/saas/help/sources/index.html#assigning-a-source-owner>).
8. Under **Connection Type**, select **Direct Connection** or **Flat File**.

   - **Direct Connection** - A direct connection fetches data from the **Virtual Appliance Cluster** you choose as the application connector for the source. A direct connection configuration allows for real-time updates. For more information about configuring and deploying virtual appliances, refer to the [Virtual Appliance Reference Guide](<https://documentation.sailpoint.com/saas/help/va/index.html>).
   - **Flat File** - Select the flat file if no connector is available, or if another system restricts the connection. This option allows only reading and aggregating data as a generic/delimited application. Provisioning activity is unsupported, and additional configuration pages like connection settings and aggregation settings are unavailable.
9. If you selected **Direct Connection**, in **Virtual Appliance Cluster**, select the virtual appliance cluster that will be used as the application connector for the source.
10. (Optional) Select a governance group to grant its members [source](<https://documentation.sailpoint.com/saas/help/common/users/user_levels.html#source-sub-admin-user-level>) or [role](<https://documentation.sailpoint.com/saas/help/common/users/user_levels.html#role-sub-admin-user-level>) sub-admin level oversight of the source and its access. For more information, refer to [Creating and Managing Governance Groups](<https://documentation.sailpoint.com/saas/help/common/users/governance_groups.html>).
11. If this source represents a primary system containing your organization's personnel records, select the **Authoritative Source** checkbox. For more information, refer to [Creating Identity Profiles](<https://documentation.sailpoint.com/saas/help/setup/identity_profiles.html>).
12. Select **Continue**. The source is created, and you are navigated to the **Source Setup \> Base Configuration** page. Continue to configure your connected source there.

## Base Configuration

Provide the base configuration parameters. Information you entered in the Create New Source dialog is automatically entered into the fields in the Base Configuration page. You can edit this information if necessary.

1. Enter a unique name and description for the source.
2. In the **Source Owner** dropdown list, select the identity that owns this source.

   - To find a source owner, begin entering their name.
3. In the **Virtual Appliance Cluster** dropdown list, select the virtual appliance to use when communicating with your organization's systems. For more information, refer to [SailPoint Virtual Appliances](<https://documentation.sailpoint.com/saas/help/va/index.html>).
4. (Optional) If enabled for your organization, select the **Use a Credential Provider** checkbox to manage the source's authentication using a credential provider.

   > **Note**
   >
   > To add a credential provider, go to **Admin \> Connections \> Credential Providers**. For more information about credential providers, refer to [Credential Providers](<https://documentation.sailpoint.com/connectors/help/credential_providers.html>).
5. Configure the authentication to allow SailPoint to connect to the source. Refer to [Connection Settings](<#connection-settings>) for more information.
6. (Optional) In the **Governance Group for Source Management** dropdown list, select a governance group to associate with this source. For more information about governance groups, refer to [Associating Governance Groups with a Source](<https://documentation.sailpoint.com/saas/help/common/users/governance_groups.html#associating-a-governance-group-with-a-source>).
7. (Optional) Choose whether to enable or disable provisioning for the source. Provisioning is disabled by default.

   - **Enable Provisioning** - Set the toggle to **Enabled** to allow the source to create, update, and deactivate accounts in the connected source system.
   - **Disable Provisioning** - Set the toggle to **Disabled** to disable provisioning for the source. Disabling provisioning will prevent the creation, updating, or deactivating of accounts on this source.
8. Select **Save**.

## Connection Settings

Choose the appropriate authentication type and provide the information required to connect and interact with the source.

> [!NOTE]
>
> Each time you change the Authentication Type for the ServiceNow connector, you must select **Test Connection**.

You can configure your source using the following authentication types:

- [Configure the Connection with Basic Authentication](<#configure-the-connection-with-basic-authentication>)
- [Configure the Connection with OAuth 2.0 Authentication](<#oauth-20-authentication>)

### Configure the Connection with Basic Authentication

> [!NOTE]
>
> **Screenshot**
>
> [![alt text](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/connection_settings1.png>)](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/connection_settings1.png>)

1. Enter the **Host URL** for the ServiceNow instance that is used for communication.
2. Select **Basic** as the Authentication Type.
3. Enter the **Username** and **Password** that have the appropriate permissions. For more information, refer to [Required Permissions](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/index.html#required-permissions>).
4. Select **Save**.

## OAuth 2.0 Authentication

Configure OAuth 2.0 authentication to secure your connection to the source. The connector supports both Client Credentials and Refresh Token grant types.

> [!NOTE]
>
> **Screenshot**
>
> [![alt text](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/oauth_auth.png>)](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/oauth_auth.png>)

1. Enter the **Host URL** for the ServiceNow instance that is used for communication.
2. Select **OAuth 2.0** as the authentication type.
3. Select **Client Credentials** or **Refresh Token** from the **Grant Type** dropdown.

   #### Client Credentials

   > **Screenshot**
   >
   > [![alt text](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/cc_grant_type.png>)](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/cc_grant_type.png>)

   > **Note**
   >
   > - The Okta External OIDC Provider in ServiceNow is supported with the Client Credentials Grant Type.
   > - ServiceNow also supports Microsoft Entra ID as an External OIDC Provider using the Client Credentials grant type.
   > - To configure OAuth 2.0 in the SailPoint Identity Governance connector, you must provide the OAuth 2.0 Token URL, Client ID, Client Secret, and Scope. These values are specific to the External OIDC Provider configured in ServiceNow. For example, Okta or Microsoft Entra ID.
   > - For configuration in ServiceNow, refer to [Product Documentation | ServiceNow](<https://docs.servicenow.com/bundle/vancouver-platform-security/page/administer/security/task/add-OIDC-entity.html>).

   1. Enter the **Oauth 2.0 Token URL**. This URL depends on the External OIDC Provider configured in ServiceNow. For example:

      - Okta External OIDC Provider:

      `{yourOktaDomain.com}/oauth2/{authorizationServerId}/v1/token`

      - Microsoft Entra ID (Azure AD):

      `https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token`

      - ServiceNow Inbound Client Credentials (local OAuth provider):

      `https://{yourInstanceName}.service-now.com/oauth_token.do`
   2. Enter the **Client ID**.
   3. Enter the **Client Secret**.
   4. Enter the **Scope**.
   5. Select **Save**.

   #### Refresh Token

   > **Screenshot**
   >
   > [![alt text](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/refresh_grant.png>)](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/refresh_grant.png>)

   > **Note**
   >
   > To configure OAuth 2.0 in the SailPoint Identity Governance connector, a Client ID, Client Secret, and Refresh Token are required. The Client ID, Client Secret, and Refresh Token are specific to the ServiceNow instance and configured while enabling OAuth 2.0 in your ServiceNow instance. Contact your ServiceNow Administrator to obtain the Client ID, Client Secret, and Refresh Token.

   1. Enter the **Client ID** and **Client Secret**.
   2. Enter the **Refresh Token**. For more information on creating an OAuth 2.0 profile on your ServiceNow instance, refer to [ServiceNow: Create an endpoint for clients to access instance](<https://docs.servicenow.com/bundle/rome-platform-administration/page/administer/security/task/t_CreateEndpointforExternalClients.html>).

      To create a refresh token, use the following cURL command:

      ```text
      $ curl -d "grant_type=password&client_id=be3aeb583ace210011c15b24a43e25d8
      &client_secret=client_password
      &username=admin&password=admin"
      POST https://instancename.service-now.com/oauth_token.do
      ```

      For more information on token generation, refer to [ServiceNow: OAuth API request parameter](<https://docs.servicenow.com/bundle/vancouver-platform-security/page/administer/security/reference/r_OAuthAPIRequestParameters.html>).
   3. Select **Save**.

### Configuration in ServiceNow for Client Credentials Grant Type

The SailPoint Identity Governance connector for ServiceNow supports External OpenID Connect (OIDC) Providers using the Client Credentials grant type. This includes providers such as Okta, Microsoft Entra ID (Azure AD), or ServiceNow's native OAuth provider.

Perform the following steps to configure the SailPoint Identity Governance connector for the ServiceNow application using the Client Credentials grant type:

> [!NOTE]
>
> **Screenshot**
>
> [![alt text](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/okta_snow_igc.png>)](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/okta_snow_igc.png>) [![alt text](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/entra_snow_igc.png>)](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/entra_snow_igc.png>)

1. Go to **System OAuth \> Application Registry** and open the configuration for your External OIDC Provider. For example, Okta OIDC configuration or Entra ID OIDC configuration.
2. Enter the **Client ID** and **Client Secret** of the application registered in your External OIDC Provider.

   > **Note**
   >
   > For Okta, enter the Authorization Server's **Audience** value. If required, enter this value in **Client ID**.
3. Open the **OAuth OIDC Provider Configuration** preview.

   > **Note**
   >
   > The connector validates the received access token in ServiceNow using the OIDC Provider configuration.

   Provide the following details in the **OAuth OIDC Provider Configuration** for access token validation:

   > **Screenshot**
   >
   > [![alt text](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/okta_oidc_config_screen.png>)](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/okta_oidc_config_screen.png>) [![alt text](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/entra_oidc_config_screen.png>)](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/entra_oidc_config_screen.png>)

   1. Enter the **OIDC Metadata URL**, where it returns the OpenID Connect metadata about your authorization server. This information is used to configure connector interaction with Okta or Entra ID. For example,

      - Okta:

      `https://{yourOktaDomain.com}/oauth2/{authorizationServerId}/.well-known/openid-configuration`

      - Microsoft Entra ID:

      `https://login.microsoftonline.com/{tenantId}/v2.0/.well-known/openid-configuration`
   2. Update the User Claim and User Field mappings to correlate users and validate access to resource endpoints.

      > **Note**
      >
      > The matched user should have the `x_sapo_iiq_connect.admin` role to execute governance application APIs.
   3. Deselect the **Enable JTI claim verification** checkbox.
   4. Update the required fields under **JWT Claims Validations** to validate the received access token based on the policies of your OIDC Provider.

   > **Note**
   >
   > If you want to use the Client Credentials grant type for Inbound OAuth by native ServiceNow, refer to [Client Credentials grant type for Inbound OAuth](<https://support.servicenow.com/kb?id=kb_article_view&amp;sysparm_article=KB1645212>). Get the Client ID, Client Secret and Token URL value as per the OAuth Client application created on the ServiceNow instance.

## Aggregation Settings

On the Aggregation Settings page, configure the filter settings, delta aggregation settings, and additional settings.

For more information about aggregation, refer to [Loading Account Data](<https://documentation.sailpoint.com/saas/help/accounts/loading_data.html>).

> [!NOTE]
>
> The SailPoint Identity Governance connector for ServiceNow aggregates `sysparm_fields` attributes during single account aggregation.

### Filter Settings

> [!NOTE]
>
> **Screenshot**
>
> [![alt text](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/agg_settings1.png>)](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/agg_settings1.png>)

1. Enter an **Account Filter** to filter accounts during aggregation. For multiple conditions, use `^`. For example, `active=true^locked_out=false`.
2. Enter a **Group Filter** to filter groups during aggregation. For example, `active=true`.
3. Enter a **Role Filter** to filter roles during aggregation. For example, `sys_Scope=Global`.

### ServiceNow Filter

To use the complex filters in ServiceNow, you must know the encoded query for the filter conditions that you can get from any list view in ServiceNow.

To retrieve a list view in ServiceNow complete the following:

1. Create a filter on the ServiceNow managed system.
2. Right-click the filter link and select the **Copy Query** option. Enter the copied query (only) in **Aggregation Filter Settings** on the UI and select **Save**.

   - For an AND operator, use `^`.
   - For an OR operator, use `^OR`.

   For example, the following query will fetch all the active records with their respective locations, as mentioned in the encoded query:

   `active=true^location=dbf3b4790a0a0a6501a7673fb1b28f7f^ORlocation=dbf440100a0a0a65006618f752ee74b5`

### Delta Aggregation

The SailPoint Identity Governance connector for ServiceNow supports the delta aggregation of accounts.

> [!NOTE]
>
> **Screenshot**
>
> [![alt text](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/agg_settings2.png>)](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/agg_settings2.png>)

1. Enable **Delta Aggregation** if you want to aggregate accounts that have changed since the last execution.
2. Select **Improve Delta Aggregation** to speed up the delta aggregation performance. This enables you to read only the deleted events (such as removing the group/role) of the user's connection from the **x\_sapo\_iiq\_connect\_user\_roles\_and\_group\_deletes** table.

   > **Important**
   >
   > - To improve the delta aggregation, you must upgrade to ServiceNow SailPoint Identity Governance Connector version 1.0.6 or later from [ServiceNow store](<https://store.servicenow.com/sn_appstore_store.do#!/store/application/611872574fcc82004f167d2ca310c792>).
   > - For improved delta aggregation performance, configure the Deleting With Table Cleanup Policies on the **x\_sapo\_iiq\_connect\_user\_roles\_and\_group\_deletes** table. For more information on table cleanup policies, refer to [Deleting With Table Cleanup Policies](<https://support.servicenow.com/kb?id=kb_article_view&amp;sysparm_article=KB0717791>).

   Refer to [Delta Aggregation](<#delta-aggregation>) for more information.
3. Enter the valid **Server Time Zone** for which the ServiceNow system server is configured. This timezone is used for performing delta aggregation. For example, you can use GMT or PST. If a time zone value is not provided the default value will be UTC.

#### Prerequisites

To support the delta aggregation, you must create the following Access Control List (ACL) in global scope and assign it to the `x_sapo_iiq_connect.admin` role:

| ACL | Type | Operation | Name | Attribute |
| --- | --- | --- | --- | --- |
| sys\_audit\_delete | record | read | Audit Deleted Record `[sys_audit_delete]` | None |

Delta Aggregation does not detect the deleted accounts. SailPoint recommends performing a full aggregation to detect the deleted accounts on ServiceNow.

> [!NOTE]
>
> - The delta aggregation will not fail when the **sys\_user\_grmember** table returns bad data. For example, if a record in **sys\_user\_grmember** table had a missing value for Group or User column the delta aggregation completes operation.
> - Delta aggregation is not supported for groups.
> - If this ACL is not created, then deleted connections from the users are not detected during delta aggregation.
> - For delta aggregation, your system reads the deleted user's connection from the **sys\_audit\_delete** table in SailPoint Identity Governance Connector version 1.0.5 or prior.

### Partitioning Settings

In the **Aggregation Settings \> Partitioning Settings** section, configure the partitioning aggregation parameters.

> [!NOTE]
>
> **Screenshot**
>
> [![alt text](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/partitioning_set.png>)](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/partitioning_set.png>)

1. Select **Enable Partitioning** to improve the performance of aggregation tasks.
2. Enter the user partitioning scheme in the **User Partitions**. See [Partitioning Aggregation](<#partitioning-aggregation>) for more information.

   > **Note**
   >
   > If Partitioning is enabled and **User Partitions** is not specified, the default partitioning values would be considered.
3. Enter the **Number of Partitioning Threads**. The default is 8.
4. Select **Save**.

### Partitioning Aggregation

The ServiceNow connector supports partitioning aggregation only for the accounts.

The default partitioning values available are:

`sys_idBETWEENa@m, sys_idBETWEENm@z^ORsys_idSTARTSWITHz, sys_idBETWEEN0@5, sys_idBETWEEN5@9^ORsys_idSTARTSWITH9`

You can edit/add more partitions by comma-separated values to utilize the partitioning aggregation. Edit the above default partitioning values to meet the requirements. The following is an example of custom partitioning:

`employee_numberSTARTSWITH1, employee_numberSTARTSWITH2, employee_numberSTARTSWITH3, employee_numberSTARTSWITH4, employee_numberSTARTSWITH5, employee_numberSTARTSWITH6, employee_numberSTARTSWITH7, employee_numberSTARTSWITH8, employee_numberSTARTSWITH9, employee_numberSTARTSWITH0`

> [!NOTE]
>
> If partitioning is enabled and **User Partitions** is not specified, the default partitioning values will be considered.

### Additional Settings

In the **Aggregation Settings \> Additional Settings** section, you can provide settings for managing roles for group as well as inherited role.

> [!NOTE]
>
> **Screenshot**
>
> [![alt text](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/agg_settings3.png>)](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/agg_settings3.png>)

1. Select **Manage Roles for Group** to aggregate roles by group.
2. Select **Manage Inherited Role** to aggregate accounts where the inherited role is a member.
3. Enter the **Page Size** to specify the number of entries displayed on a page.

   - Default: 50
   - Minimum: 1
   - Maximum: 1000

   > **Note**
   >
   > Aggregation does not stop if the records received from the API response are less than the specified page size.

## Advanced Settings

Use the advanced settings page to configure the following:

### Timeout Settings

> [!NOTE]
>
> **Screenshot**
>
> [![alt text](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/sn_adv1.png>)](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/sn_adv1.png>)

To configure aggregation and provisioning timeout complete the following:

1. Enter the **Aggregation Timeout** (in seconds), after which the aggregation operation is halted.
2. Enter the **Provisioning Timeout** (in seconds), after which the provisioning operation is halted.
3. Select **Save**.

### Account Unlocking

> [!NOTE]
>
> **Screenshot**
>
> [![alt text](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/sn_adv2.png>)](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/sn_adv2.png>)

1. Select **Unlock Account while Enabling** to unlock accounts while enabling them through the source.

### Use Sys ID Reference

> [!NOTE]
>
> **Screenshot**
>
> [![alt text](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/sn_adv3.png>)](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/sn_adv3.png>)

1. Select **Use Sys ID Reference** and specify the user's reference field. Press <kbd class="key-enter">Enter</kbd> to add multiple entries. If the user's reference field is listed under this configuration, the user's record in SailPoint displays the Sys ID instead of the reference field's display name. For example, if you enter `active`, users with a reference field of active now display the Sys ID.

### Retry Error List

> [!NOTE]
>
> **Screenshot**
>
> [![alt text](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/sn_adv4.png>)](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/sn_adv4.png>)

1. Select **Retry Error List** and specify the error to retry during aggregation. Press <kbd class="key-enter">Enter</kbd> to add multiple entries.
2. Select **Maximum Number of Retries** and enter the number of aggregation attempts.

### Request Parameter Map

> [!NOTE]
>
> **Screenshot**
>
> [![alt text](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/sn_adv5.png>)](<https://documentation.sailpoint.com/connectors/servicenow_identity_governance/va/help/img/sn_adv5.png>)

> [!NOTE]
>
> For the SailPoint Identity Governance connector for ServiceNow, aggregation does not fail when big keys for sysparm\_fields are provided in the Request Parameter Map for a ServiceNow key with a period (for example: `manager.name` or `manager.user_name`).

1. In the **Request Parameter Map** fields, specify the additional request parameters that are added to the endpoint URL when the request is sent. For example, to use `sysparm_display_value`, use the value as `true`. To use `sysparm_query_category`, enter the value as per your requirement.
2. Select **Add Another** to add multiple entries.
3. Select **Save**.

## Review and Test

Perform a test to confirm the connection to SailPoint.

1. Go to **Review and Test**.
2. Confirm that the entries in each field are correct.

   If you note any mistakes, return to the section and make corrections.
3. Select **Test Connection**.

## SailPoint Application Onboarding

SailPoint application onboarding enables you to easily onboard new applications and create sources following the successful onboarding of a discovery source. To use this feature, continue to **Discovered Applications** in the SailPoint user interface.

For more information, refer to [Application Onboarding](<https://documentation.sailpoint.com/saas/help/ai/app_onboarding/index.html>) in the SailPoint SaaS documentation.
