A few years ago, I developed a SOAP-based proof of concept integration between ServiceNow and JIRA. Recently, Atlassian announced that the JIRA SOAP web service interface was to be deprecated in favor of their newer REST-based API. Due to this change, I have had several customers approach me with the question, can ServiceNow integrate properly with JIRA now that Atlassian will be focusing on SOAP. The following PoC setup serves as an example of bi-directional communication between ServiceNow and JIRA.

Sample Business Case

Out of the box, this integration fulfills a scenario where there are two groups working tickets. One group is in the ServiceNow tool and the other is in JIRA.

The ServiceNow group creates a ticket that they know will be a JIRA issue to be worked by the secondary team. Once the ticket is created in ServiceNow, a corresponding ticket is created in JIRA. Comments can be exchanged between the two systems. Status changes can also occur between ServiceNow and Jira.

Integration Flow

This proof of concept demonstrates the ability of users in ServiceNow to create an Incident ticket that gets synchronized as a JIRA issue within a specified project. Only incidents marked as a “Jira Issue” will be synchronized.

When creating an incident in ServiceNow, the user must set the Category field to be “JIRA Issue”. From there, the Subcategory field will be populated with supported types of JIRA Issues. The user will select the appropriate issue type.

IncidentJiraCatSub

When the incident is created, the information is sent to JIRA and a corresponding ticket is created. JIRA responds to ServiceNow with the ticket information that was created. ServiceNow records that information both as a comment and saves the unique ticket ID in the incident’s “Correlation ID” field.

When a corresponding JIRA issue is created, the ticket information is stored in a comment on the ServiceNow incident record.

When a corresponding JIRA issue is created, the ticket information is stored in a comment on the ServiceNow incident record.

Screenshot_2_15_13_8_14_AM

After the JIRA issue is created, ServiceNow will store the JIRA ticket number in the incident’s “Correlation ID” field. It will also set the “Correlation Display” field to ‘JIRA Integration’.

Once this handshake has taken place, if you were to go and view the incident record, you will notice a button labeled: “View JIRA Record”. When this button is clicked, a new window will pop up with the JIRA issue shown.

Screenshot_2_15_13_8_17_AM

If someone were to add a comment on the ServiceNow incident, the comment is sent to the JIRA instance and added to it’s comment history.

If a technician were to add a comment to the JIRA issue, that comment will be brought it either 1) by a scheduled query that ServiceNow can make to the JIRA issue on a regular basis, or 2) a web service call made from JIRA to the Inbound JIRA Web Service Import Set endpoint.

State changes in ServiceNow will be reflected in JIRA and vice/versa.

Architecture

REST based JIRA Integration Diagram

Setup & Configuration

STEP 1: Install the Update Set
Download the update set listed at the bottom of this blog post. Preview the update set and then commit it.

Once you install the update set, there will be a new application in your Navigation Pane. You may have to refresh the navigation pane to see it.

The JIRA PoC Application that is installed through the update set

The JIRA PoC Application that is installed through the update set

STEP 2: Configure the Application

Click on the “Settings” link under the Configuration section of the application.

Most of the settings should be self explanatory.

Here is a screenshot of the settings available for the integration:

Screenshot_2_15_13_12_16_PM

Pulling JIRA for updates and applying them to ServiceNow

There is a section in the settings that allow you to configure the integration to Pull updates from JIRA, rather than receive them from JIRA directly. This is a useful setting when you are in a Hosted JIRA instance that does not give you the power to send Web Service calls to ServiceNow on required events.

The following settings allow you configure the pulling schedule, etc.

Screenshot_2_15_13_12_18_PM

Pushing JIRA updates to ServiceNow

If you are in a dedicated, on-premise JIRA instance, it is recommended not to pull data from JIRA, but rather send web service requests ServiceNow. The integration provides a web service for this purpose. To view the Web Service URL for your instance, browse to the integration application and click on “Inbound JIRA Web Service”. You will be presented with the web service and the corresponding WSDL address for SOAP web service calls.

Screenshot_2_15_13_12_02_PM

The following are sample SOAP calls you could make from JIRA:

Change issue type (subcategory) to Improvement

Set the “u_issue_type” element to one of the values of the Subcategory dropdown choices on the incident form for JIRA Issues as the category.

1
2
3
4
5
6
7
8
9
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://www.service-now.com/u_jira">
   <soapenv:Header/>
   <soapenv:Body>
      <u:insert>
         <u_issue_number>TST-49632</u_issue_number>
         <u_issue_type>Improvement</u_issue_type>
      </u:insert>
   </soapenv:Body>
</soapenv:Envelope>

Change Status to Closed

Send the JIRA status code in the “u_status” field. We will convert it to a ServiceNow state.

1
2
3
4
5
6
7
8
9
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://www.service-now.com/u_jira">
   <soapenv:Header/>
   <soapenv:Body>
      <u:insert>
         <u_issue_number>TST-49632</u_issue_number>
         <u_status>6</u_status>
      </u:insert>
   </soapenv:Body>
</soapenv:Envelope>

Change the Short Description on the Incident

Set the “u_summary” field to have the updated Short Description text.

1
2
3
4
5
6
7
8
9
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://www.service-now.com/u_jira">
   <soapenv:Header/>
   <soapenv:Body>
      <u:insert>
         <u_issue_number>TST-49632</u_issue_number>
         <u_summary>?</u_summary>
      </u:insert>
   </soapenv:Body>
</soapenv:Envelope>

Add a comment to the incident

Set the “u_comment” element to the comment string you will be adding to the incident.

1
2
3
4
5
6
7
8
9
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://www.service-now.com/u_jira">
   <soapenv:Header/>
   <soapenv:Body>
      <u:insert>
         <u_issue_number>TST-49632</u_issue_number>
         <u_comment>My comment goes here</u_comment>
      </u:insert>
   </soapenv:Body>
</soapenv:Envelope>

Demo Video

Download the Update Set

Download the latest update set on ServiceNow’s SHARE portal:
REST Based Integration for Jira – POC