Teams within your organization usually use different platforms (let’s say Jira and ServiceNow) to handle business-critical or user-centered information. You might also want to share some data with other companies you do business with. To this end, you’ll need a Jira ServiceNow integration to connect internal and external teams.
With the integration in place, you’ll be able to boost your productivity and save yourself time if you understand how to set up a Jira ServiceNow integration with the least fuss possible.
So in this step-by-step guide, I’ll walk you through a step-by-step process of integrating Jira and ServiceNow.
Feel free to jump to the section of your choice:
- What are the Benefits of Integrating Jira with ServiceNow
- Getting Started with Your Jira ServiceNow Integration Project
- How to choose the right technology for setting up the integration
- How to set up the ServiceNow Jira integration in 6 Steps
- Additional Information on Exalate as an Integration Solution
- Common Use Cases
- Frequently Asked Questions
ServiceNow Jira Integration Guide
Learn how to achieve a seamless Jira ServiceNow integration step-by-step.
What are the Benefits of Integrating Jira with ServiceNow?
Thinking of IT Service Management, ServiceNow has become a mainstream choice for CIOs and the head of IT departments. But why are companies using ServiceNow?
It excels at tracking user requests and allowing customer support teams to keep information relating to any support incident in one place. Designed around workflows as much as issues, it is particularly useful for services, operations, and business management.
On the other hand, when thinking of Agile Software development, Jira springs to mind immediately. As part of the Atlassian product offering, Jira manages issues and projects for Software teams. And it integrates nicely with other software development tools of Atlassian.
It is popular with teams using agile methodology and you can use it as a Cloud service or host it yourself via Jira Server or Jira Data Center.
Teams using Jira and ServiceNow will collect and organize large amounts of data, which other teams could find useful. If you have 2 teams using these platforms separately, connecting them can benefit everybody.
Integrating the platforms allows you to share data automatically and control exactly how the data exchange takes place. You don’t have to go through the trouble of manually collating it and sending it to the other team.
An example Scenario
A company has its developers working on Jira and its support team using ServiceNow.
The developers and support team deal with many of the same problems. Support talks to customers and passes the issues on to the developers. Developers try to solve the issues and then let the support team know, who then communicate their solutions to the customers.
Clearly, each team has to know about some of the same issues, but they will not need all of each other’s data. The developers don’t want to know about issues that have already been resolved, and they don’t need to know the customer’s contact details, for example.
In the same vein, the support team doesn’t want to know about the technical details beyond what is relevant to solving the problem. So, having 2 integrated platforms allows each team to work with the information it needs while sharing what is mutually useful.
I will cover more common use cases at the end of this article. Feel free to jump to that section.
Getting Started with Your Jira ServiceNow Integration Project
Similar to any other IT or business project, an integration project entails evaluating various options and devising strategies to ensure a durable and dependable integration.
As the owner of the integration project, you will need to make tough decisions to persuade stakeholders of your vision for driving the integration forward.
In-House Development vs. Third-Party Solutions
ServiceNow users, who are often technical, prefer to develop an in-house solution. ServiceNow APIs make the task easier, but scalability and maintenance costs can be significant concerns with changing integration requirements.
Rebuilding the code that was developed in-house can be a difficult task for an operations team, let alone the time and effort spent developing it in the first place.
We have observed that many companies end up building their own solution and then eventually switch to a third-party solution.
Third-party solutions offer flexible licenses, support various deployment models, and have extensive documentation and custom-made features specifically tailored to integrations. So these solutions are usually easier to get up and running quickly.
However, before choosing an integration solution, there are several factors that you should take into consideration.
How to Choose the Right Technology for Setting up Your Integration
When setting up your Jira ServiceNow integration or any other integrations, you need to think carefully about how to get the best out of it.
Sharing data between your teams sounds simple, but there are many ways to do it, and getting the details right will make sure the right information is shared and presented to those who need it.
- No code or Low code (Flexibility to Choose Between UI and Scripting): We have been stressing about not having to write code to develop integrations, but honestly this is not always the case. For advanced or complex integration use cases, there is a need to go beyond pre-defined templates. You can easily implement such use cases with some scripting logic.
Possibly, a tool that can get you the benefits of both sides: no-code predefined templates for simple use-cases and scripting interface for deep integrations.
- Decentralized Integration to Boost Autonomy: The platforms at each end of the integration should better have the means to independently control what information is sent to the other side and how incoming information is interpreted.
Changes made to either side, like modifying the information to be exchanged, shouldn’t break the integration. Rather they should be easily reflected in the integration.
- Deployment Models (On-premise or Cloud): A lot of big enterprises have security concerns over deploying applications over the cloud. They have specific requirements for the tool to be deployed on-premise or adhere to their firewall policies. Companies often don’t want to expose sensitive customer ticket information to teams they are integrating with.
Finding tools that can accommodate most of these considerations and having some other security features like single tenancy, ACLs, encryption of data, etc is a must.
- Dealing with Historical Data: By the time you realize you need an integration, there must be bulk
information already present in your Jira or ServiceNow that you want to integrate. Tools that can handle transferring bulk information over to the other side, or connecting information already present on the two systems will be effective.
- Reliability: A reliable integration is one that always works for the user – even when the other side is not available for whatever reason (such as maintenance). Operational maintenance capability is important to ensure always-on integration.
ServiceNow already provides integration between Jira and ServiceNow through IntegrationHub‘s Jira Spoke. However, it requires a longer onboarding time, is a costly affair, and has limited integration scope and ServiceNow leads the way in facilitating the integration. So there is a need to explore some other tools.
For this guide, I will use an integration solution called Exalate. Because it meets all the criteria I mentioned above. You will see them in action in a short while.
So let’s go through the step-by-step process of how to set up our ServiceNow Jira sync.
How to Set up a ServiceNow Jira Integration in 6 Steps
In order for Exalate to work, you need to install it as an app on both sides. It doesn’t matter which side you start from. I will start from the ServiceNow side in this guide.
Step 1: Install Exalate on ServiceNow
You can install Exalate on your ServiceNow instance via the Atlassian Marketplace to connect Jira and ServiceNow.
You can also navigate to the Exalate integrations page, click on the ServiceNow logo to start the installation, and fill in the form.
You’ll then get an email with your node URL. You also need to download an XML file that contains the information ServiceNow needs to access your Exalate node. Click here to get it.
Now, log in to your ServiceNow account. In the left-hand menu, look for “System Update Sets”. You can search for it by typing it into the “Filter navigator” search field.
Click the “System Update Sets” entry to expand it, and then click “Retrieved Update Sets”.
On this screen, look under the “Related Links” heading and click the text that says, “Import Update Set from XML”.
On the next screen, click the “Choose File” button and then navigate to the XML file you downloaded earlier.
After selecting it, click the “Upload” button.
Once the XML file uploads, you’ll see it listed. Click on it, followed by the “Preview Update Set”.
You might need to do an update, so if asked to do so, click “Accept remote update”.
Next, click “Commit Update Set” to finish the ServiceNow installation. Exalate is now ready on ServiceNow. From here, you can set up a connection between the platforms.
Note: You can find the step-by-step instructions for the Exalate agent installation for ServiceNow on the Exalate documentation. And if you prefer video tutorials, you can watch this instead: how to install Exalate on ServiceNow.
Step 2: Install the Exalate app on Jira
Installing the Exalate app on Jira is a straightforward process, like installing any other Jira app.
The process is slightly different for Jira Cloud and Jira on-premise though.
If you’re on Jira Cloud, click the cog to open the Jira Administration menu. Click “Add-ons” and go to the “Find new apps” section.
Search for Exalate and click “Exalate Jira Issue Sync & More”.
Click “Try it free” and start your free trial.
You’re all set now!
Note: To install Exalate on Jira on-premise (Server or Data Center), follow this documentation.
Step 3: A Quick Tour of the Exalate Console
The Exalate console provides a user interface for system administrators to configure & maintain the integration.
After installing, the Exalate console should be directly accessible as an Application on the ServiceNow instance:
On the Jira side, similar configuration options are provided as an app:
With the Exalate console, you can easily tweak your configuration.
But, let’s move on to setting up a connection between your Jira and ServiceNow instance.
Step 4: Connect Jira and ServiceNow
To create the connection, you need to initiate it from either Jira or ServiceNow and then accept it at the other end.
In the Exalate console, “Initiate connection” in the Connections tab.
Note that you will see the existing connections in the Connections tab.
You will then be prompted to enter the URL of the destination instance. Assuming we have initiated the connection from the ServiceNow side, the destination URL will be that of Jira.
Exalate then performs a quick check to see if it is installed on the Jira side. If yes, then more fields appear.
Next, you have to select the configuration mode for your connection.
Exalate supports 2 configuration modes: Basic and Script.
The Basic mode allows you to establish a connection with pre-existing sync rules. You can’t configure to change these. It is suitable for simple integration use cases. You can only sync issues and incidents with this mode.
Exalate offers a Free Plan so that you can experience it firsthand. The Free plan only supports the Basic mode.
To use the full functionality of Exalate with advanced features and configurations, we recommend that you use the Script mode. You can configure it to suit your unique integration case.
Note: You can also follow these step-by-step docs:
- Set up a Connection on Exalate ServiceNow
- Set up a Connection on Exalate Jira Cloud
- Set up a Connection on Exalate Jira on-premise
Let’s now have a look at both the Basic and the Script mode one by one.
Continue with the Basic Mode
Note: Maybe you prefer to follow a video tutorial to set up your sync in the Basic mode.
Click “Next” when you select “Basic” on the screen above. You now need to verify admin access to the destination side, Jira in our case. Click “Yes, I have admin access” since we have access already, and click “Initiate”.
If you don’t have access, Exalate will generate an invitation code for you. You need to manually copy and paste it on the destination side to establish a connection.
Exalate then performs a quick check to verify the access. Once the verification is successful, it will automatically redirect you to the destination side (Jira). Here select the project on the Jira side that you want the Incidents to synchronize into.
After selecting the appropriate one from the drop-down list, click “Confirm”.
Enter the issue key to start your first synchronization.
If you navigate to the ServiceNow side right now, you will be asked to enter the Incident number for synchronization. In either case, press the “Exalate” button.
Wait for some time for successful synchronization.
You can go to the synchronized Issue or Incident by clicking the respective links shown in the image above. Appropriate status messages will be displayed till the synchronization happens.
The Basic mode connection just created can be viewed in the “Connections” tab. If you click the edit connection icon in front of its name, you can see the default mappings.
You can choose to upgrade the connection if you want.
Connections created using the Basic mode are simple and you can sync issues or incidents as shown above. You can even create triggers to start automatic synchronization or choose to sync in bulk using the “Bulk Connect” option. Let’s now have a look at the Script mode.
Continue with the Script Mode
Keep reading or watch this tutorial to learn how you can set up the sync in the Script mode:
In this mode, one side sends an invitation code and the other side accepts it. Let us see how it works.
1. Send an invitation code
We are sending an invitation from the ServiceNow side and accepting it on the Jira side. For this, choose “Script” on the screen shown below and click “Next”.
Enter the connection details. For this, provide the local instance name (ServiceNow in our case) and also the remote instance name (Jira). Exalate automatically generates a name for you, but you can change it if you want to.
Don’t forget to add a description to the connection. This will help you identify the connection when you have a lot of them.
Click “Initiate” when you are ready.
This will generate an invitation code. You’ll have to copy this so the other side (Jira) can accept the invitation.
2. Accept the invitation code
That code you’ve just generated is what you will use to accept the invitation on the other side. So, move over to your Jira instance or by navigating to “Connections” in the Exalate console in Jira and clicking “Accept Invitation”.
Go ahead and paste the code there:
The code will validate automatically once you’ve clicked Next. Exalate will set your connection type automatically based on the invitation. Choose the project on the Jira side, just like you did for the Basic mode. Click “Confirm” after choosing.
You’ll be able to configure the sync rules for each side separately, from the other side. This is on purpose, so each side remains autonomous.
You can choose to configure it immediately by clicking on “Configure Sync” or you can configure this later in Step 6.
After you’ve accepted the invitation and a connection has been established, we can move on to setting up a rule that will trigger the synchronization.
Step 5: Configure your Synchronization Triggers to Determine When to Sync
Once a connection between ServiceNow and Jira is established, the main work of integration can start.
How to Create Automated Synchronization Triggers
At this stage, close cooperation between the Incident/Issue manager is needed to determine when an Incident on the ServiceNow side needs to create an issue on the Jira side or vice versa. The agreement can be defined on ServiceNow Exalate and Jira Exalate independently, allowing all possible scenarios.
However, it’s also possible that you’re an admin on both sides.
To create triggers, click the “Triggers” tab in the left-hand Exalate console. If there are any existing triggers, they will be listed here, but the first time you use them, they will be blank.
Note: You can also create Triggers by clicking on the “Configure Sync” button when the connection is established and choosing the Triggers tab.
Click the “Create trigger” button to get started. On the “Add trigger” pop-up that appears, there are several fields you can interact with. The entities you want to apply triggers to can also be selected now.
The entity selection will differ from platform to platform. You can then set the conditions that cause the trigger to activate. In Jira, triggers are written using the JQL query language. You can read more about that here. ServiceNow search syntax is used for the ServiceNow side.
Activate the trigger by clicking the checkbox and then “Add” the trigger.
Note: Incidents, Problems, ChangeRequests, RITM, Cases, and CatalogTasks are the popular ServiceNow entities that are synced with Exalate. But you can sync any entity in ServiceNow using Exalate’s intuitive scripting engine.
Set up your First Trigger
If the process managers have determined that whenever an Incident is assigned to an Assignment group called Application Development, an issue needs to be created on the Jira side.
The Trigger defined in Exalate ServiceNow looks like the following:
If, at the same time, they also agree that whenever an Issue in Jira has a label equal to ServiceNow, it will create an Incident in ServiceNow for teams on ServiceNow to solve.
The Trigger defined in Exalate Jira looks like the following:
Step 6: Configure your Connection to Determine the Information to Send
Once an Incident on ServiceNow fulfills the conditions defined by the Trigger, the ServiceNow Exalate will receive access to the Incident through the REST API. The same applies to Jira issues that fulfill the condition defined by the Trigger as well.
Configure the Outgoing Sync
What information is sent to the Jira Exalate is defined in the Connection Sync Rules -> “Outgoing sync”.
Note: The same Outgoing sync on the Jira side will determine what information is sent to ServiceNow.
Here’s what it looks like:
- replica.<attributes> represents the message attributes. In our case, it represents Jira Exalate.
- entity.<attribute> represents the local record attributes. In our case, it represents ServiceNow Incidents.
The above example is an out-of-box, straightforward mapping. However, more complex mapping can be defined using Groovy scripts.
Exalate provides a number of Script Helpers to reduce the effort to script yourself.
Configure the Incoming Sync
The incoming sync will determine how to interpret the information received. The rules for interpreting the incoming data are configured in the Connection Sync Rules as well.
On the ServiceNow Exalate’s “incoming sync”, there is a distinction for when an Incident is created or updated. In the example shown below, an incident will be created if it’s the first sync. Otherwise, details like summary, description, attachments, and comments of an Incident already present will be updated.
Note: The Incoming sync on the Jira side represents how to interpret information received from the ServiceNow side.
Just like with outgoing sync rules, you can script more complex mappings. Below is an example of mapping the ServiceNow Incident States with the Jira Issue Status. (Again Exalate Script Helpers can help reduce the scripting effort.)
Note: You can also refer to the Getting Started guide on Exalate documentation for a step-by-step process of setting up a ServiceNow Jira integration.
Additional Information on Exalate as an Integration Solution
Since we used Exalate to set up the Jira ServiceNow integration, you might have some questions about this solution. Here I’ll explain a bit more about Exalate’s architecture and security.
On Autonomy in Architecture (Decentralized Integration)
Let’s have a look at the basic architectural setup of Exalate as an integration enabler between these 2 systems:
In our scenario, Instance (Blue) would be your ServiceNow instance, and Instance (Red) would be the Jira Server or Cloud instance. Instance (Blue) and Instance (Red) have a separate Exalate Agent dedicated to your ServiceNow/Jira.
- Letters A -F depicts the information flow between the systems. ServiceNow and Jira communicate with each other through the dedicated Exalate agent, keeping the autonomy of your system
- Your (ServiceNow connected) Exalate Agent controls what information is sent and how incoming information is mapped.
- Exalate agent is available for ServiceNow instance, Jira Cloud, Jira On-Premise, Salesforce, Github, Zendesk, and more to come
Exalate is an intelligent middleware that transports data between ServiceNow & Jira.
Note: We have tried our best to describe the Security considerations described in great detail in the following whitepaper, free for download: “Exalate Security and Architecture Whitepaper”.
The below image explains the different deployment models Exalate is supporting. Exalate for ServiceNow can be deployed either in the cloud or on-premise.
Comparison between Exalate and the IntegrationHub with the Jira Spoke
ServiceNow itself has a capability called IntegrationHub that allows reusable integrations with third-party systems and calls them from anywhere in the ServiceNow platform.
Using IntegrationHub requires you to get a separate subscription. The Standard package of IntegrationHub includes a Jira Spoke with a (limited) number of Actions that allow ServiceNow to manage issues, users, stories, and groups in Jira. And it retrieves Jira data to use in a flow. Jira spoke V3.0.5 uses bi-directional webhooks and subscribes to Jira with a ServiceNow callback URL.
Note: You can also have a look at a detailed comparison between IntegrationHub and Exalate.
So, why use a third-party tool, like Exalate, to set up the integration? Below I’ve added some considerations:
- Use Exalate when
- The integration is bi-directional. Then both sides will be able to trigger the integration and decide on the information to be exchanged.
- The integration is point-to-point between the 2 systems.
- Use IntegrationHub when
- ServiceNow has the orchestration role to create an automated flow, involving several systems.
- ServiceNow controls the trigger of integration, remote system (in our case Jira) is the receiver of the commands
Common Use Cases
Safely Connecting to Multiple Suppliers
If you have different companies supplying you with products or services, there is plenty of scope to share information. Each supplier is likely to have its own system, while you might use a single node to connect to all of them. As a result, connecting these systems while keeping every team’s autonomy is a challenge.
Exalate allows you to set up dedicated connections from your central system to each of your suppliers. As well as Jira and ServiceNow, you can also connect to teams using Zendesk, Salesforce, GitHub, Azure DevOps, and more.
Each connection can be tailored to share the specific information you want, meaning each team can use the same data independently. You can keep some fields shared, and others separate, so you work together without stepping on each other’s toes.
Marketing and Design Teams
Your marketing and design teams might use separate platforms to track their work, but much of the information they work with will be of use to both of them. Also, your marketing team can track information on customer feedback and store all related discussions.
With Exalate, you can then share the issues with the design team, but without unnecessary information, such as the customer’s contact data or the messages exchanged with marketing. The designers can work on updating their products to match what customers want.
These changes then go back to the marketing system automatically via Exalate. The marketing team can share updated designs with the customers, who provide more feedback. Everyone gets the information they need.
A Managed Services Provider with Multiple Customers
A Managed Services Provider will work with several clients, and those clients will each handle data in their own way. The information you share with them will often be similar but not identical. Being able to tune it to your exact specifications will allow you to tailor your synchronization to reflect your relationship with that client.
Exalate gives you the flexibility to adapt and adjust your synchronization to handle different clients. Its reliability means you don’t have to worry if any one of your customers has a problem with their system. You can carry on working with the others, and after fixing the problems, Exalate will automatically get everything back on track.
Jira and ServiceNow are both excellent platforms that offer different features to their users. A flexible Jira ServiceNow integration can help teams work together more efficiently, and using the right tool can make the integration as effective as possible.
As you’ve seen, there are challenges to overcome when synchronizing environments. So by using the most reliable solution, you can guarantee that the integration delivers the results you require.
With the technology doing the work, your teams are free to concentrate on other things, whether that is looking after customers or designing your latest product. Everyone can focus on what they do best.
Frequently Asked Questions
Why integrate Jira and ServiceNow?
Integrating Jira and ServiceNow can help teams reduce information silos. It reduces manual errors like misplaced statuses, wrong escalations, etc. You can ensure data is exchanged automatically and is accessible to the right stakeholders when they need it. You can also control exactly how much data needs to be shared.
How do I connect Jira with ServiceNow?
There are native and non-native ways to connect Jira and ServiceNow.
ServiceNow offers integrations in the form of IntegrationHub (Jira Spoke). But it’s costly and not meant for ongoing bi-directional synchronizations. ServiceNow developers also prefer developing their own integration solution in-house. However, doing so hinders the scalability and maintainability of the integration as requirements change over time.
Third-party integration solutions like Exalate can be an excellent alternative for the hassles of an in-house solution or limited scope of integration use cases offered by the native approach.
What can I sync between Jira and ServiceNow?
In ServiceNow, you can sync Incidents, Problems, Change Requests, RITM (RequestItems), Catalog Tasks, etc. In Jira, you can sync any issue information like summary, description, status, labels, comments, attachments, priority, user-defined fields, etc. You can even sync epics,story points while maintaining the parent-child relationship.
If the fields you want to sync do not exist, you can use the httpClient method to do so.
Can I integrate Jira and ServiceNow for free?
No, you cannot integrate Jira and ServiceNow for free. Integrating these platforms typically requires some level of configuration and development work and might not be available for free. You might also require interacting with their respective APIs and creating custom scripts or middleware to allow communication between them. It’s always better to check for the options available on their respective marketplaces and compare prices, features, and functionalities to make an informed decision.
- Jira Integrations: Integrate Jira and Other Systems Bidirectionally
- ServiceNow to ServiceNow Integration: The Step-by-Step Guide to Setting up a Two-Way Sync
- How to set up a Jira Salesforce Integration
- ServiceNow Integrations: Integrate ServiceNow and Other Systems Bidirectionally
- How to Set Up an Azure DevOps ServiceNow Integration
- How to Set Up a Salesforce ServiceNow Integration
- Jira to Jira Integration: The Comprehensive Guide to Jira Sync