# SailPoint Atlassian Cloud Jira Service Management Connector Documentation > Atlassian Cloud Jira Service Management Connector Documentation # Documentation # Configuring SailPoint for Atlassian Cloud Jira Service Management In SailPoint, configure the following items for your Atlassian Cloud Jira Service Management Integration Module: - [Ticket Creation](<#ticket-creation>) - [Create Ticket Advanced Properties](<#create-ticket-advanced-properties>) - [Status Mapping](<#status-mapping>) - [Status Mapping Advanced Properties](<#status-mapping-advanced-properties>) - [Requester Source](<#requester-source>) On the **Summary** panel you can review the general settings and parameters for the connectivity and authentication. > [!NOTE] > > All activity on the Service Desk connector appears as [events in Search]() and on the **Activity** tab of an identity. ## Ticket Creation In a centralized approach spanning many users and resources to strengthen IT controls and provide proof of compliance to auditors and executive management, you can create a ticket for your integration, based on your requirement. A ticket has all relevant data filed for further processing. > [!NOTE] > > Atlassian Cloud Jira Service Management Integration Module supports only Service Request and Incident. The contents of a service request or incident define the components of the provisioning task that are added to the Atlassian Cloud Jira Service Management system ticket. SailPoint recommends that you include the Apache Velocity variables as needed to meet your specific use cases. > [!NOTE] > > **Screenshot** > > [![Ticket Creation]()]() 1. Enter the **Raise On Behalf of** for the ticket you are creating. The default value is: ```text $!{plan.arguments.opened_by|'Default_Jira_Account_ID'} ``` To modify `Default_Jira_Account_ID` do one of the following: - Replace the `Default_Jira_Account_ID` with the service account name for the Jira user from the Requester Source. - Replace the `Default_Jira_Account_ID` with a Jira user's account name that you want to use as the reporter's name for the ticket generated by this integration. 2. Enter the **Service Desk Id** in the Atlassian Cloud Jira Service Management system. To obtain the Service Desk Id, execute the following request from POSTMAN with valid credentials.For example, `https://demo.atlassian.net/rest/servicedeskapi/servicedesk`. 3. Enter the **Request Type Id**. For example, `ServiceRequest:10002` and `Incident:10004` Ensure that the Request Type Id belongs to the same project that is used. To obtain the Request Type Id, execute the following request from POSTMAN with valid credentials: `https://demo.atlassian.net/rest/servicedeskapi/servicedesk/{serviceDeskId}/requesttype` 4. Complete the following in the **Request Field Values**: 1. In **Description**, enter the main body of the request in the Atlassian Cloud Jira Service Management system that includes the details about the request. 2. In **Summary**, enter the title or summary of the request in the Atlassian Cloud Jira Service Management system. #### Add a Field To add a field in ticket creation, select **Add Field** and enter the relevant details for the new field. The field types are: - Single Value - Multi Valued - Grouped Key-Value Pair For example, if you want to add a Single Value custom attribute such as `custom_attr` in the request to the Atlassian Cloud Jira Service Management system, add the **custom\_attr** field using the Single Value type. The corresponding value can be either static or dynamic. For the dynamic value, use the Velocity Template Expression. > [!NOTE] > > The ticket number generated on the Service Desk system for the corresponding provisioning action can be seen under **Search \> Account Activity** details of the identity. For more information, refer to [Account Activity Using Search](). ## Create Ticket Advanced Properties Select **View Advanced Properties** to add other details of the ticket. > [!NOTE] > > **Screenshot** > > [![Create Ticket Advanced Properties]()]() 1. Enter the **Resource** used for the request ticket. This is the ticket creation REST endpoint. Do not provide the base URL in the value. The base URL is appended to this endpoint value. Enter only the remaining endpoint URL. For example, `/rest/servicedeskapi/request`. 2. Enter the **Response Element** for the request ticket. This value is the JSON path expression that provides information about where to find a ticket number. For example, `issueKey`. 3. Select **Save**. ## Status Mapping You can map the service request status to the corresponding status of the activity on the Atlassian Cloud Jira Service Management system. > [!NOTE] > > **Screenshot** > > [![Status Mapping]()]() 1. Select **Add Status** to add another row for status mapping. 2. Enter an **Identity Security Cloud Status**. The types are: - Committed - Queued - Failed 3. Enter the **Atlassian Cloud Jira Service Management SDIM Status**, the types are dependent upon the request type. 1. [Service Request](<#status-options-for-service-request>) 2. [Incident](<#status-options-for-incident>) ### Status Options for Service Request | Entry key (Atlassian Cloud Jira Service) | SailPoint Value | | --- | --- | | Completed | Committed | | Canceled | Failed | | Blocked | Queued | | Waiting for support | Queued | | Waiting for customer | Queued | | Escalated | Queued | | In Progress | Queued | | Pending | Queued | | Closed | Committed | | Resolved | Committed | ### Status Options for Incident | Entry key (Atlassian Cloud Jira Service) | SailPoint Values | | --- | --- | | Resolved | Committed | | Closed | Committed | | Canceled | Failed | | Work In Progress | Queued | | Open | Queued | | Blocked | Queued | | Pending | Queued | | Completed | Committed | ### Check Status Interval You can add and delete a status as per your organizational needs. The Atlassian Cloud Jira Service Management Integration Module checks the status on tickets at regular intervals. The status must have at least one committed value. For more information on status check configuration, refer to the SailPoint Developer Portal: - [Getting the time check configuration of queued tickets]() - [Updating the time check configuration of queued tickets]() ### Status Mapping Advanced Properties Select **View Advanced Properties** to add other details of the status mapping. > [!NOTE] > > **Screenshot** > > [![Status Mapping Advanced Properties]()]() 1. Enter the **Resource** used for the status mapping. For example, `/rest/servicedeskapi/request/$ticketId`. 2. Enter the **Response Element** for the status mapping. This value is the JSON path expression that has information on the service request status. For example, `$.currentStatus.status`. 3. Select **Save**. ## Requester Source > [!NOTE] > > **Screenshot** > > [![Requester Source]()]() 1. In the **Requester Source** field, enter the source name through which the Atlassian Cloud Jira Service Management system's users are aggregated. 2. Select **Save**. # Connecting SailPoint and Atlassian Cloud Jira Service Management The Atlassian Cloud Jira Service Management Service Desk Integration Module helps to perform effective and efficient service management for SailPoint services offered to the organization in the Atlassian Cloud Jira Service Management system. It enables customers to create and manage service requests, incidents, and change requests. You can integrate a SailPoint source with the Atlassian Cloud Jira Service Management system for access requests and to monitor it. To create an integration, on the **Service Desk Integrations** page, go to **Admin \> Connections \> Service Desk**, and select **Create**. [![Service desk integration process flow]()]() ## General Settings The following are the steps to set up your Atlassian Cloud Jira Service Management integration: > [!NOTE] > > **Screenshot** > > [![General Settings]()]() > [!NOTE] > > Ensure that the name and description of each connection are unique. Because you can configure multiple source types to use this connection, you should specify the sources in the description. The tickets for those sources will be processed on the managed system while the status of the tickets is synchronized in SailPoint. 1. Enter a unique **Name** for the integration that you are setting up. 2. Enter a unique **Description** for the integration. The description will help you identify the associated sources and tasks associated with an integration. 3. Select Atlassian Cloud Jira Service Management for the **Integration Type**. 4. Select the **Ticket Type**. 5. Select the Connection Type: - [VA-Based Connection Type](<#va-based-connection-type>) - Select the **VA-Based** connection type if you want to use a Virtual Appliance Cluster. - [SaaS Connection Type](<#saas-connection-type>) - Select the **SaaS** connection type if you want to create a SaaS application without using a Virtual Appliance Cluster. > **Notes** > > - SaaS Connection types don't support Credential Providers. > - Once you create an integration, you cannot edit the connection type. 6. (Optional) If Credential Providers are supported for this integration, you can select **Use a Credential Provider** to use a credential provider configured in your tenant. 7. Enter the name of the **Integration Owner**. ### VA-Based Connection Type > [!NOTE] > > **Screenshot** > > [![VA-Based Connection Type]()]() 1. Select **VA-Based** connection type if you want to use a Virtual Appliance Cluster. 2. Select **Save**. ### SaaS Connection Type > [!NOTE] > > **Screenshot** > > [![SaaS Connection Type]()]() 1. Select **SaaS** connection type if you want to create a SaaS application without using a Virtual Appliance Cluster. > [!NOTE] > > When you select the SaaS connection type, the [Enable Debug Logging](<#administrator-settings>) feature is available. It is only supported for Service Desk SaaS integration. #### Administrator Settings > [!NOTE] > > **Screenshot** > > [![Administrator Settings]()]() 1. Select the **Enable Debug Logging** checkbox to enable the integration to create and send debug log files to SailPoint Support to help troubleshoot issues. 2. If the **Enable Debug Logging** feature is needed, please contact SailPoint. > **Note** > > **Enable Debug Logging** should not be enabled without SailPoint guidance. ### Sources > [!NOTE] > > **Screenshot** > > [![Sources]()]() In the **Sources** dropdown list, select sources to configure from the available sources. For each source you want to integrate with the Atlassian Cloud Jira Service Management system, verify that it is configured for provisioning. > [!TIP] > > Edit the **Description** field for these sources to indicate they are used in the Atlassian Cloud Jira Service Management integration. ## Connectivity and Authentication Complete the following steps to connect and authenticate your Atlassian Cloud Jira Service Management system with your system: 1. In the **URL** field, enter the URL of the Atlassian Cloud Jira Service Management system that you want to integrate with. For example: - Basic Authentication: `https://your-domain.atlassian.net` - OAuth2 Authentication: `https://api.atlassian.com/ex/jira/{cloudid}` 2. Select the **Authentication Type**. 3. Complete the authentication steps: - [Basic Authentication](<#basic-authentication>) - [OAuth2 Authentication](<#oauth2-authentication>) ### Basic Authentication > [!NOTE] > > **Screenshot** > > [![Basic Authentication]()]() 1. Enter the Service Account **Username** and the Service Account user's API Token in **Password**. ### OAuth2 Authentication > [!NOTE] > > **Screenshot** > > [![OAuth2 Authentication]()]() 1. Select `Refresh_Token` as the **Grant Type**. 2. In **Token URL**, enter the location of the token endpoint that the instance uses to retrieve the token. For example, `https://auth.atlassian.com/oauth/token`. 3. In **Refresh Token**, enter the refresh token for OAuth2 authentication. Provide the following scopes when creating tokens using OAuth2 authentication for the Next-gen service desk or Classic service desk type project: - `read:servicedesk-request` - `manage:servicedesk-customer` - `write:servicedesk-request` 4. In **Client ID** and **Client Secret**, enter the values for OAuth2 authentication. > [!NOTE] > > For information on generating the Cloud ID, Refresh Token, Client ID, and Client Secret, refer to the [Atlassian documentation](). # Integrating SailPoint with Atlassian Cloud Jira Service Management > [!NOTE] > > **Integration** > > This is an integration and requires additional licensing or subscriptions to utilize it. For more information, contact your customer success manager. Atlassian Cloud Jira Service Management is a software platform that supports IT service management and automates common business processes for requesting and fulfilling service requests across a business enterprise. The new service desk functionality provides an easy way to: - See a list of integrations - View summaries of the integrations - Create new integrations - Edit/Update existing integrations - Delete integrations This guide helps you configure the Service Desk Integration Module. It converts SailPoint provisioning actions into tickets in the Atlassian Cloud Jira Service Management system. > [!NOTE] > > - You must have an active SailPoint license to use this integration. Contact your Customer Success Manager for more information. > - The Atlassian Cloud Jira Service Management integration supports only the Service Request and Incident ticket types. > - All activity on the Service Desk source appears as events in Search and on the Activity tab of an identity. For more information, refer to [Using Search - Events](). > [!NOTE] > > To view the latest features, enhancements, and fixes for all SaaS connectors, refer to the [SaaS Release Notes]() page. ## Supported Features - Creation of tickets for manual provisioning operations and status checks. - Synchronization of ticket status between SailPoint's Atlassian Cloud Jira Service Management Integration Module and the Atlassian Cloud Jira Service Management system. - Retry Mechanism for Check Ticket status failure. > [!NOTE] > > The Atlassian Cloud Jira Service Management Integration can be configured as a [SaaS Connection Type]() for SaaS connectivity that doesn't require a Virtual Appliance Cluster. ## Prerequisites > [!IMPORTANT] > > For Service Desk Integration Module to function properly, ensure that the feature flag `GOV_DISABLE_PLAN_INITIALIZER` is set to `true` for your organization. For more information, reach out to [Professional Services/Expert Services](). - Configure the virtual appliance cluster only when using a VA-based connection type. For instructions, refer to the [Virtual Appliance Reference Guide](). > **Note** > > This requirement doesn't apply to SaaS connections. - Configure at least one source to generate manual tasks for Provisioning. For more information, refer to [Configuring Source Account Provisioning](). - Be familiar with Apache Velocity scripting. For more information, refer to [Apache Velocity Engine - Getting Started](). - Determine the authentication option (Basic or OAuth 2.0) you want to use for your system to authenticate into Atlassian Cloud Jira Service Management system. ## Required Permissions The minimum access permissions required for a user to create and get the status of tickets using the Next-generation Service Desk type project, requires the following permissions to be assigned: - User Access: - Has access on site - Jira Service Management - Set Roles type as Basic The minimum project role and access required for a user to create and get the status of tickets using the Classic Service Desk type project, requires the following permissions to be assigned: - Project Role: - Service Desk Team - User Access: - Has access on site - Jira Service Management - Set Roles type as Basic Admin user level permissions are required to access the Atlassian Cloud Jira Service Management Integration Module. ## System Requirements - The Atlassian Cloud Jira Service Management system is deployed in your IT environment. - The virtual appliance must be able to connect to the ITSM system when using a VA-based connection type, typically using outbound access for port 443 (HTTPS). > **Note** > > This requirement doesn't apply to SaaS connections. ## Best Practices Before you start the configuration process, you should make decisions about the following components of this integration: - **Identify** - Find the Atlassian Cloud Jira Service Management system and the resources that will be used in the connection. Use the **Name** and **Description** fields in **General Settings** to clearly identify the specific Atlassian Cloud Jira Service Management system and the sources used in the connection. - **Atlassian Cloud Jira Service Management Details** - You can create an integration for each Atlassian Cloud Jira Service Management system your company uses. If the integration meets the prerequisites, you need to identify the URL for each instance you want to integrate with. You also need to identify the administrator details and the applicable authentication requirements. - **Sources** - For each source you want to integrate with an Atlassian Cloud Jira Service Management system, verify that it is configured for provisioning. For more information, refer to [Prerequisites](<#prerequisites>). > **Tip** > > Edit the **Description** field for these sources to indicate they are used in the Atlassian Cloud Jira Service Management Integration Module. - **Atlassian Cloud Jira Service Management Statuses** - Make a list of each possible status in the Atlassian Cloud Jira Service Management system that you want to map to a status in SailPoint. This will help you track tickets as they're worked. Most importantly, SailPoint uses this mapping to determine when a ticket is closed in the Atlassian Cloud Jira Service Management system so that the related provisioning task is also treated as complete. For more information about mapping statuses, refer to [Status Mapping](). - **Requests** - Identify each type of provisioning action in SailPoint that you want to create a ticket for in the Atlassian Cloud Jira Service Management system, along with the information from those actions that should be included in the related Atlassian Cloud Jira Service Management system ticket. For more information, refer to [Ticket Creation](). # Managing Comments on Access Requests As a part of Access Provisioning, you can populate comments on the Access Request page. The comment is included out-of-the-box as a **Description** field for the ticket type during **Ticket Creation**. ## Upgrade Considerations For an existing Service Desk Integration configuration, you must modify the **Description** field in the [Ticket Creation]() section to include the comments for Access Request as explained below for each of the following ticket types: **For the `Service Request` ticket type:** When the ticket type is `Service Request`, modify the value of the **Description** field to include comments as shown below in bold: ```velocity #foreach($req in $plan.requests) #if($req.operation == 'Create') Create Account on application $req.resource #else For $req.id in application $req.resource #end #if($req.items) $newline #foreach($item in $req.items) #if ($item.name == '*disabled*' && $item.value == 'true') Requested action from SailPoint : Disable Account #if ($request.arguments.comments), Comments : $request.arguments.comments #end $newline #elseif ($item.name == '*disabled*' && $item.value == 'false') Requested action from SailPoint : Enable Account #if ($request.arguments.comments), Comments : $request.arguments.comments #end $newline #elseif ($item.name == '*locked*' && $item.value == 'false') Requested action from SailPoint : Unlock Account #if ($request.arguments.comments), Comments : $request.arguments.comments #end $newline #else $!item.Operation $item.name: $item.value #if ($item.arguments.comments), Comment from SailPoint : $item.arguments.comments #end $newline #end #end #else $newline $!req.Operation Account #if ($request.arguments.comments), Comment from SailPoint : $request.arguments.comments #end $newline #end #end ``` **For the `Incident` ticket type:** When the ticket type is `Incident`, modify the value of the **Description** field to include comments as shown below in bold: ```velocity #foreach($req in $plan.requests) #if($req.operation == 'Create') Create Account on application $req.resource #else For $req.id in application $req.resource #end #if($req.items) $newline #foreach($item in $req.items) #if ($item.name == '*disabled*' && $item.value == 'true') Requested action from SailPoint : Disable Account #if ($request.arguments.comments), Comments : $request.arguments.comments #end $newline #elseif ($item.name == '*disabled*' && $item.value == 'false') Requested action from SailPoint : Enable Account #if ($request.arguments.comments), Comments : $request.arguments.comments #end $newline #elseif ($item.name == '*locked*' && $item.value == 'false') Requested action from SailPoint : Unlock Account #if ($request.arguments.comments), Comments : $request.arguments.comments #end $newline #else $!item.Operation $item.name: $item.value #if ($item.arguments.comments), Comment from SailPoint : $item.arguments.comments #end $newline #end #end #else $newline $!req.Operation Account #if ($request.arguments.comments), Comment from SailPoint : $request.arguments.comments #end $newline #end #end ``` # Enable Connector Logging This topic provides the steps needed to enable logging on SailPoint using REST APIs. > [!NOTE] > > This topic only applies to VA-based integrations. > [!NOTE] > > The examples provided might not match your configuration. Use the logging levels and logging classes reference at the bottom of the topic to configure your API responses to match your connector. This process is broken up into four steps: 1. Identify the Virtual Appliance (VA) cluster on which you want to enable logging. 2. Get the logging configuration for the existing VA cluster. 3. Update the VA cluster to enable logging levels. 4. Observe logging changes to the logging levels. ### Identify the Virtual Appliance Cluster Select the VA on which you need to enable logging using REST API. If you already know the VA application's `id`, proceed to [Get the Logging Configuration](<#get-the-logging-configuration>). 1. Make the following call to the REST API to return a list of available VA clusters: GET /v3/managed-clusters The REST API returns a response that looks similar to the following: ```json [ { "id": "2c9180866166b5b0016167c32ef31a66", "name": "Development Cluster", "description": "Development Cluster", "clientType": "CCG", "ccgVersion": "373_535_70.2.0", "pinnedConfig": true, "logConfiguration": null }, { "id": "2c9180846a93ce60016ab29f039944de", "name": "Cloud Cluster", "description": "Cloud Cluster", "clientType": "CCG", "ccgVersion": "373_535_70.2.0", "pinnedConfig": true, "logConfiguration": { "clientId": null, "durationMinutes": 60, "expiration": "2020-12-15T19:13:36.079Z", "rootLevel": "DEBUG", "logLevels": { "sailpoint.connector.ADLDAPConnector": "DEBUG" } } } ] ``` > **Note** > > The previous example code shows two VA clusters. One VA cluster has a log configuration and the other does not (refer to the `logConfiguration` value in each returned VA cluster). This is because one of the clusters already has logging enabled. This is just an example configuration, and your environment may not have logging enabled on a cluster. 2. Identify the VA cluster that you want to enable logging on by its name or description and record its `id` attribute. ### Get the Logging Configuration Get your selected VA's cluster logging configuration and identify the values you need to update. 1. Make the following call to the REST API to return the VA cluster's logging configuration. Replace `{id}` with the VA cluster's `id` attribute value recorded earlier. GET /v3/managed-clusters/{id}/log-config - If the VA doesn't have a logging configuration currently set, it returns `204 No Content` as a response. - If the VA has an existing logging configuration, it returns something similar to the following: ```json { "clientId": null, "durationMinutes": 60, "expiration": "2020-12-15T19:13:36.079Z", "rootLevel": "DEBUG", "logLevels": { "sailpoint.connector.ADLDAPConnector": "DEBUG" } } ``` You'll need to configure the following information in the response: - `durationMinutes` is the number of minutes logging should remain enabled. - `rootLevel` is the default level for all logs. For more information, refer to [Logging Levels](<#logging-levels>). - `logLevels` is a map object with logging classes as keys and logging levels as values. - For keys, refer to [Logging Classes](<#logging-classes>) for commonly used logging classes. - For a list of available values, refer to [Logging Levels](<#logging-levels>). ### Update Logging Configuration Update the VA cluster configuration returned by the REST API to update the logging settings as needed. 1. Make the following call to the REST API to update the VA cluster's logging configuration. Replace `{id}` with the VA cluster's `id` attribute value recorded earlier. PUT /v3/managed-clusters/{id}/log-config 2. Submit your configuration changes to the REST API in a JSON body. - If the VA cluster did not already have a logging configuration and you received a `204 No Content` response, you can create a new one. - If the VA returned a configuration, you can edit it to include the changes. The JSON body should be as follows: ```json { "durationMinutes": 60, "rootLevel": "DEBUG", "logLevels": { "sailpoint.connector.ADLDAPConnector": "DEBUG" } } ``` Consider the following as you edit the JSON: - `durationMinutes` is the number of minutes logging should remain enabled. - `rootLevel` is the default level for all logs. For more information, refer to [Logging Levels](<#logging-levels>). - `logLevels` is a map object with logging classes as keys and logging levels as values. - For keys, refer to [Logging Classes](<#logging-classes>) for commonly used logging classes. - For a list of available values, refer to [Logging Levels](<#logging-levels>). If the update was successful, the REST API should return a response similar to the following: ```json { "clientId": null, "durationMinutes": 60, "expiration": "2020-12-15T19:13:36.079Z", "rootLevel": "DEBUG", "logLevels": { "sailpoint.connector.ADLDAPConnector": "DEBUG" } } ``` ### Observe Logging Changes Approximately five minutes after you update the configuration, the VA cluster starts generating log files you can review. You can view the log files in **ccg.log**. ### References The tables in this reference section list information that can be helpful when creating the JSON body you'll use to configure the VA cluster's configuration file. #### Logging Levels | Logging Level | Description | | --- | --- | | ERROR | Designates error events that might still allow the connector to continue. | | WARN | Designates potentially harmful situations. | | INFO | Designates information messages that highlight process at a coarse-grain level. | | DEBUG | Very verbose. Fine grain logging levels used for development and debugging. | | TRACE | Most verbose. Finer grain logging levels than debugging. | #### Logging Classes | Connector | Logging Class | | --- | --- | | Active Directory | sailpoint.connector.ADLDAPConnector sailpoint.connector.LDAPConnector | | AIX | openconnector.connector.unix.AIXConnector openconnector.connector.unix.UnixConnector | | Amazon Web Services | logger.aws.name=openconnector.connector.aws logger.aws.level=trace logger.aws.additivity = false logger.aws.appenderRef.rolling.ref = STDOUT | | Atlassian Suite Cloud | sailpoint.connector.OpenConnectorAdapter openconnector.connector.atlassian.AtlassianConnector | | Atlassian Data Center | sailpoint.connector.OpenConnectorAdapter openconnector.connector.atlassian.AtlassianDataCenterConnector | | Microsoft Entra ID | sailpoint.connector.AzureADConnector | | Box | openconnector.connector.BoxNetConnector sailpoint.connector.OpenConnectorAdapter | | Cerner | openconnector.connector.CernerConnector sailpoint.connector.OpenConnectorAdapter | | Delimited File | logger.DelimitedFileConnector.name = sailpoint.connector.DelimitedFileConnector logger.DelimitedFileConnector.level = debug logger.DelimitedFileConnector.additivity = false logger.DelimitedFileConnector.appenderRef.rolling.ref = STDOUT | | Dropbox | openconnector.connector.DropBoxConnector sailpoint.connector.OpenConnectorAdapter | | Epic | openconnector.connector.EPICConnector sailpoint.connector.OpenConnectorAdapter | | GE Centricity | openconnector.connector.GECentricity sailpoint.connector.OpenConnectorAdapter | | Google Apps / G Suite | openconnector.connector.GoogleAppsDirect sailpoint.connector.OpenConnectorAdapter | | IBM i | openconnector.connector.IBMiConnector | | Lotus Domino | sailpoint.connector.LotusDomino | | JDBC | sailpoint.connector.JDBCConnector | | Sun One LDAP | sailpoint.connector.LDAPConnector | | Linux | openconnector.connector.unix.LinuxConnector sailpoint.connector.OpenConnectorAdapter sailpoint.connector.UnixConnector | | Microsoft Office365 | sailpoint.connector.Office365Connector | | Microsoft SQL Server | sailpoint.connector.mssql.serviceimpl.MSSQLServerConnectorV2 | | Okta | logger.openconnector.name = openconnector.connector.okta.OktaConnector logger.openconnector.level = debug logger.openconnector.additivity = false logger.openconnector.appenderRef.rolling.ref = STDOUT | | Oracle Database | sailpoint.connector.OracleDBConnector sailpoint.connector.JDBCConnector | | Oracle E-Business | sailpoint.connector.OracleEBSConnector sailpoint.connector.JDBCConnector | | Oracle Fusion HCM | openconnector.connector.oraclefusionhcm.OracleFusionHCMConnector sailpoint.connector.OpenConnectorAdapter | | Oracle HCM Cloud | sailpoint.connector.oraclehcmcloud.OracleHCMCloudConnector | | Oracle HRMS | sailpoint.connector.OracleAppsHRMSConnector sailpoint.connector.JDBCConnector | | Oracle Netsuite | openconnector.connector.netsuite.NetsuiteConnector | | PeopleSoft ERP | openconnector.connector.PeopleSoftConnector sailpoint.connector.OpenConnectorAdapter | | PeopleSoft HRMS | sailpoint.connector.PeopleSoftHRMSConnector | | RemedyForce | sailpoint.connector.ForceConnector | | RSA Authentication Manager | openconnector.connector.RSAConnector openconnector.connector.rsa.RSAHTTPClient sailpoint.connector.OpenConnectorAdapter | | Salesforce | sailpoint.connector.ForceConnector | | SAP Concur | openconnector.connector.sapconcur.SAPConcurConnector | | SAP - Direct | sailpoint.connector.SAPConnector sailpoint.connector.SAPInternalConnector | | SAP GRC | logger.SAPGRCConnector.name = sailpoint.connector.sapgrc logger.SAPGRCConnector.level = debug logger.SAPGRCConnector.additivity = false logger.SAPGRCConnector.appenderRef.rolling.ref = STDOUT | | SAP HR/HCM | sailpoint.connector.SAPHRInternalConnector | | SCIM 1.1 | openconnector.connector.SCIMConnector sailpoint.connector.OpenConnectorAdapter | | SCIM 2.0 | openconnector.connector.scim2.SCIM2Connector sailpoint.connector.OpenConnectorAdapter | | ServiceNow | openconnector.connector.servicenow.ServiceNowConnector openconnector.connector.servicenow.ServiceNowRestClient sailpoint.connector.OpenConnectorAdapter | | ServiceNow Service Desk Integration | openconnector.connector.servicedesk.ServiceNowServiceDeskConnector sailpoint.connector.OpenConnectorAdapter | | Siebel | openconnector.connector.SiebelConnector sailpoint.connector.OpenConnectorAdapter | | Snowflake | openconnector.connector.snowflake.SnowflakeConnector sailpoint.connector.OpenConnectorAdapter | | Solaris | openconnector.connector.unix.SolarisConnector openconnector.connector.unix.UnixConnector sailpoint.connector.OpenConnectorAdapter | | SuccessFactors | sailpoint.connector.SuccessFactorsConnector | | Sybase | sailpoint.connector.SybaseDirectConnector sailpoint.connector.JDBCConnector | | Webex | openconnector.connector.Webex sailpoint.connector.OpenConnectorAdapter | | Workday | openconnector.connector.WorkDay sailpoint.connector.OpenConnectorAdapter | | Workday Accounts | openconnector.connector.workdayaccounts openconnector.connector.workdayaccounts.WorkdayAccountsConnector sailpoint.connector.OpenConnectorAdapter | | Web Services | sailpoint.connector.WebServices | | XML | openconnector.connector.XMLConnector sailpoint.connector.OpenConnectorAdapter | | Yammer | openconnector.connector.YammerConnector sailpoint.connector.OpenConnectorAdapter | | Zoom | openconnector.connector.zoom.ZoomConnector sailpoint.connector.OpenConnectorAdapter | # Troubleshooting If you encounter any of the following issues or errors, SailPoint recommends that you follow the guidance provided below to resolve the error before contacting SailPoint Support. For issues or errors that are not addressed in this connector guide, refer to the following resources for troubleshooting information: - [SailPoint Identity Services Documentation]() - [SailPoint Support Knowledge Base]() - [SailPoint Developer Community]() ## Ticket creation fails when request includes escape characters (`\\`) Ticket creation fails because the request includes escape characters (`\\`). The system produces the following error message: ```text Ticket creation failed. com.google.gson.stream.MalformedJsonException: Invalid escape sequence at line 3 column 49 path $.description ``` **Resolution**: Update the value of the **description** attribute by using `StringEscapeUtils` string in the [Ticket Creation]() section as shown below: ```text #if($request.operation == 'Create') Create Account on application $request.resource #else For $request.id in application $request.resource #end #if ($request.items) $newline #foreach ($item in $request.items) #if ($item.name == '*disabled*' && $item.value == 'true') Disable Account. $newline #elseif ($item.name == '*disabled*' && $item.value == 'false') Enable Account. $newline #elseif ($item.name == '*locked*' && $item.value == 'false') Unlock Account. $newline #else $!item.Operation $item.name: $StringEscapeUtils.escapeJava($StringEscapeUtils.escapeJava($item.value.toString())) $newline #end #end #else $newline $!request.Operation Account #end ``` ## Status Mapping is not defined The following error message appears if the provisioning status map is not defined: ```text InvalidConfigurationException ] [ Error details ] SailPoint Identity Platform provisioning status is not defined against the IT Service Management status 'Resolved' in the check status configuration 'statusMap' for the 'serviceRequest' ticket type. ``` **Resolution**: Ensure that you configure the mapping of ticket statuses. ## A message appears when a user who is not a Jira member tries to create a ticket The following error message appears when a user who is not a Jira member tries to create a ticket: ```text {"errorMessage":"Your request could not be created. Please check the fields have been correctly filled in. is not a valid email address","i18nErrorMessage": {"i18nKey":"sd.validation.request.creation.failure.required.field","parameters": [" is not a valid email address"]} ``` **Resolution**: Ensure that the user requesting the ticket is present on the Atlassian Cloud Jira Service Management System. ## Create Ticket / Check Status failed with 403 unauthorized error The following error message appears when the user tries to create a ticket or check the status: ```text 403 Forbidden with {"error": "invalid_grant", "error_description": "Unknown or invalid refresh token." ``` This error occurs due to the rotating refresh tokens supported by the managed system. Few scenarios where the refresh token can get invalidated are: - **Client timeout:** The Jira Service Management Integration requested a new access token using a refresh token, but the request gets invalidated because of the client timeouts or loss of a new refresh token. The service desk connector is unable to make the further request as the old token also gets invalidated. - **Multiple client applications:** Multiple client applications using the same system at the same time during the testing phase. **Resolution**: To resolve the issue you must regenerate the refresh token manually using the authorization\_code method. Update the application with the new refresh token. For more information, refer to [OAuth 2.0 (3LO) apps](). # Using Integrations ## Listing Integrations To list the SailPoint Atlassian Cloud Jira Service Management integrations in the card-view format, perform the following: > [!NOTE] > > **Screenshot** > > [![Listing Integrations]()]() > [!NOTE] > > All your Service Desk integrations are displayed based on: Name, Description, and Integration Type. 1. Go to **Admin \> Connections \> Service Desk**. 2. On the **Service Desk Integrations** page, the integrations will be sorted by name in alphabetical order. The Atlassian Cloud Jira Service Management integrations are listed accordingly. ## Viewing Integrations > [!NOTE] > > **Screenshot** > > [![Viewing Integrations]()]() 1. Go to **Admin \> Connections \> Service Desk**. 2. On the **Service Desk Integrations** page, select a card for the Atlassian Cloud Jira Service Management integration to view the corresponding details. 3. Scroll down to view the values of the UI fields. 4. To exit, select the **X**. ## Editing an Integration > [!NOTE] > > **Screenshot** > > [![Editing an Integration]()]() 1. Go to **Admin \> Connections \> Service Desk**. 2. On the **Service Desk Integrations** page, select a card for the Atlassian Cloud Jira Service Management integration to view the corresponding details. 3. Scroll down to view the values of the UI fields. 4. Select **Edit**. The integration details with the previous values are displayed. Change the UI field values as per your requirement. 5. Select **Continue** on the dialog boxes to proceed to the **Summary** page. 6. Select **Update** to save the changes. ## Deleting an Integration > [!NOTE] > > **Screenshot** > > [![Deleting an Integration]()]() 1. Go to **Admin \> Connections \> Service Desk**. 2. On the **Service Desk Integrations** page, select a card for the Atlassian Cloud Jira Service Management Integration to view the corresponding details. 3. Select **Delete**. A warning message is displayed. Select **Delete** if you're sure you want to delete the integration. ## Configuring Integration for Jira Project Filtering To assign Jira projects to incoming tickets, configure the following: 1. Modify the Before Provisioning Rule to contain the logic to filter which Jira project the tickets are assigned to. For example, you can have a use case where you create tickets in a Jira project with an ID of `33` where the application is Slack, and a Jira project with an ID of `50` where the application is Okta. Then for all other applications the tickets will be created in a Jira project with an ID of `1`. > **Note** > > In the following example, Slack and Okta are considered to be configured as a Managed Resource for the integration in question. ```java for (AccountRequest accReq : Util.iterate(plan.getAccountRequests())) { if (accReq.getApplicationName().equals("Slack")) { plan.put("serviceDeskId", "33"); plan.put("requestTypeId", "33"); } else if (accReq.getApplicationName().equals("Okta")) { plan.put("serviceDeskId", "50"); plan.put("requestTypeId", "50"); } else { plan.put("serviceDeskId", "1"); plan.put("requestTypeId", "1"); } } ``` 2. Modify the values for **Request Type Id** and **Service Desk Id**, located in the **Ticket Creation** section, to read the modified values from the Before Provisioning Rule rather than the default hard coded values. ```text Request Type Id: $plan.arguments.requestTypeId Service Desk Id: $plan.arguments.serviceDeskId ``` 3. Update the **Identity Security Cloud Status** to **Atlassian Cloud Jira SDIM Status** based on the status mapping you configured in the [Status Mapping]() section, as per the status being received from multiple objects.