Companies use software platforms to manage their ever-increasing amounts of data. And different teams within your organization may use different platforms to handle this information. You may also want to share some data with other companies that you do business with. For instance, you might be looking for a Jira ServiceNow integration to connect your team working in Jira to another team using ServiceNow.
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 thorough guide, we’ll walk you through a step-by-step process of integrating Jira and ServiceNow.
Here’s an overview of what we’ll cover in this blog post:
- The Benefits of Setting up a Jira ServiceNow Integration
- Choosing the Right Solution for Your Jira to ServiceNow Integration
- How to Set up a Jira to ServiceNow Integration in 6 Steps
- Continue with the Basic Mode
- Continue with the Script Mode
- Common Use Cases
The Benefits of Setting up a Jira ServiceNow Integration
What is Jira?
Jira is an issue, bug, and project management system with a wide range of other features. Originally designed for issue tracking, it has expanded in scope considerably since launching in 2002.
Jira is really customizable and flexible enough to be used by teams of all kinds. It has many features useful for developers and also has a range of apps that let you extend it beyond its core functionality.
It is popular with teams using agile methodology and is available in several forms. You can use it as a Cloud service, or host it yourself via Jira Server or Jira Data Center.
What is ServiceNow?
ServiceNow is a flexible service capable of handling many different use cases. It is focused on Enterprise users, and you may often find it handling the data management needs of a large business or organization.
It is good 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.
Why Integrate Jira with ServiceNow?
Teams using Jira and ServiceNow will collect and organize large amounts of data. Much of this data is useful to other teams. If you have two teams using these platforms separately, connecting them can benefit everybody.
Integrating the platforms allows you to share data automatically, and also control exactly how the data exchange takes place. You don’t have to go to the trouble of manually collating it and sending it to the other team.
An example scenario would be a company that 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 relay 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 contact details, for example.
The support team doesn’t want to know about the technical details, beyond what is relevant to solving the problem. Having two integrated platforms allows each team to work with the information it needs while sharing what is mutually useful.
Sharing data manually is hugely problematic. It is slow, prone to errors and you can easily forget to do it! Automating the integration of data with a dedicated solution will make sure data is exchanged quickly and properly.
It is also useful to be able to audit and track the exchange of information and adapt your integration to solve any changes in your team’s requirements or avoid any problems that occur.
Choosing the Right Solution for Your Jira to ServiceNow 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 that need it.
So it’d be a good idea to consider these criteria when adopting an integration solution:
When setting up an integration, your teams may be working on different platforms. In some cases, they may not communicate regularly. It is important that those managing each side of the integration are able to control it independently, without having to notify the other side every single time they make changes or without having to work in an unfamiliar environment.
They also need to be able to control what, when, and with whom is shared, to ensure confidential information doesn’t go further than it should. Privacy and data sharing legislation mean teams need to be sure they aren’t exposing any more than they need to.
When you start exchanging information, you might find that some of it is useful and some are less so. It should be possible to adjust what is exchanged easily, so you can adapt it as often as you require.
If you are connecting to multiple other platforms, you will also need to tune the specifics to match your relationship with the teams running those platforms. And as you or your partners’ synchronization requirements change, it should be easy to adapt the solution to evolve to the way you work and collaborate.
Most systems experience occasional downtime and when that happens, you need to be confident that things will get back to normal quickly (preferably immediately) when they come back online.
Your system should be capable of handling problems gracefully, without crashing and needing maintenance. The less time you spend fixing problems, the more you can spend getting work done.
The tool I’m using for this integration, Exalate, is designed with these issues in mind. Exalate is built to give you flexibility, reliability, and autonomy when integrating data management platforms.
With Exalate, you can control exactly what is sent using its intuitive scripting engine. The content sent can be filtered in many ways, and the way the content is mapped to each side of the integration is hugely customizable.
You can also change what your connection does at any time, and refine it as you learn more about what each team needs from the other. As your teams’ requirements evolve, your integration can reflect that.
Exalate uses a distributed architecture, with a separate node used for each side of the integration. If you make a change to one side, Exalate will be able to handle it, without the need for adjustments.
And you have full control over what is shared, meaning you can stay in control of the security and privacy of your systems.
How to Set up a Jira to ServiceNow Integration in 6 Steps
Now, I’ll go through the process of setting up and configuring the Jira ServiceNow integration one step at a time. But before we dive in, would you rather watch a tutorial than read a guide? Then check out this video:
Alright, let’s start by installing Exalate on both platforms, and then set up a connection between them. After that, you’ll see how to configure Exalate, allowing you to control what it sends over the connection as well as the conditions that trigger data exchange.
Step 1: Install Exalate on Jira
First of all, install Exalate on Jira. There are different versions of Jira and the process is slightly different for each of them. There’s Jira Cloud and Jira on-premise for enterprise users.
This guide focuses on Jira Cloud so if you’re using that, log in to get started.
In the top right of the screen, click the cog to open the Jira Administration menu. Click “Add-ons”. Make sure you’re in the “Find new apps” section. If you’re not there, select it from the left-hand menu.
Click on the text field that says “Search the Marketplace”. Type “Exalate” and press the “Enter” key. You’ll see several versions of Exalate appear. Choose “Exalate Jira Issue Sync & More”.
On the app screen, click “Try it free”. On the next pop up click “Start free trial”.
Next, click the “Get started” button. Exalate is now installed on Jira, so head over to ServiceNow for the next step.
Step 2: Install Exalate on ServiceNow
Click on the ServiceNow logo. A pop-up will appear. Enter your name and other details in the form, then click the green “Submit” button. After a short wait, you’ll 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, you need to click “Commit Update Set” to finish the ServiceNow installation. Exalate is now ready on Jira and ServiceNow. From here, you can set up a connection between the platforms.
Step 3: Connect your Jira and ServiceNow Instances
To create the connection, you initiate it from either Jira or ServiceNow and then accept it at the other end. In this walkthrough, I’ll start with Jira, but you can use either one. One of the advantages of Exalate is that things work the same way, regardless of which platform you use.
Log in to Jira, then click the cog in the top-right and select “Add ons”.
Click “Connections” in the left-hand menu under the “Exalate” heading. If you’ve set any connections up before, you’ll see them listed here. To create your new connection, click the green “Initiate connection” button.
On the next screen, enter the URL of the other instance. In my case, I’m creating the connection in Jira, so I enter the ServiceNow instance URL here. Exalate will check the address you enter to make sure it can find an Exalate installation there.
After a brief pause, more fields will appear. You will be prompted to select the configuration type.
There are 2 configuration types supported by Exalate, the Basic mode, and the Script mode.
The Basic mode is suitable for basic synchronization needs. This is because it comes with in-built mappings between ServiceNow and Jira entities that cannot be modified. So if you want to set up your synchronization with default mappings without many changes then you can use this mode.
You need to upgrade the connection to the Script mode if you want customized synchronization. Script mode comes with an intuitive scripting engine that allows you to configure your sync rules. So it is suitable if you have unique or complex integration needs.
Exalate also offers a Free Plan that comes with the Basic mode connection. Using this plan you get up to 1000 free syncs per month. If you want to use the full Exalate functionality you can choose to upgrade this plan too!
I will walk you through both modes one by one.
Continue with the Basic Mode
After you click “Next” on the screen shown above you need to select the project in Jira where you want to create and synchronize issues received from the other side. Select the correct one from the drop-down list.
You need to now verify if you have admin access to the ServiceNow side. Click “Yes, I have admin access” if you have it otherwise click “No, I don’t have admin access” and follow these steps.
I have clicked yes since I have the access to the ServiceNow instance.
After Exalate performs a quick verification you will be redirected to the ServiceNow side. The connection in Basic mode has been successfully established and you can now proceed to synchronization.
In the Basic mode, synchronization can happen by directly entering the Incident key on the ServiceNow side or the issue key on the Jira side as shown below. You can also choose to create automatic synchronization triggers in this mode that allow Jira and ServiceNow entities to sync after the trigger condition given is met. You can also choose to synchronize existing entities in bulk using the “Bulk Connect” option.
After you click Exalate, wait for some time for the synchronization to be successful. A successful synchronization looks like this. You can also click on the Incident and the issue links generated.
This is all that you need to know about the Basic mode. As mentioned above to use the full functionality of Exalate you can upgrade to the Script mode anytime.
Now let us learn how to
Continue with the Script Mode
After you select “Script” on the screen asking you to choose the configuration type click “Next”.
After that, you can name each side of the connection. It will use the names you enter to generate a connection name, but you can modify that if you prefer to call it something else.
You can also enter a description for the connection. Doing so is very useful. When you or someone else looks at it in the future, they may not know what it is for, so if you explain it here it can save time later. It’s also helpful to enter some information here if you have multiple connections, as you can easily lose track of what they all do. Click “Next” once you are done.
Now, you need to select a project to use for this Jira ServiceNow integration. Entities coming from the ServiceNow side of the connection will be created within Jira in the project that you select.
When you’ve picked a project from the drop-down box, click the “Initiate” button.
When you click “Initiate”, Exalate will generate an invitation code. Click the “Copy invitation code” button. The code will be copied to your clipboard. It is best to paste it somewhere safe, such as a text file, at this point.
Click the “Go to remote” button when you’ve finished and you will be redirected to the ServiceNow side. In case, you don’t want to do that, simply close the window and switch over to ServiceNow.
Once you’ve logged in, look for Exalate in the left-hand menu. Type “Exalate” into the search box at the top if you have trouble finding it. Select “Exalate Console” and log in if it’s the first time you’re using it.
Click “Connections” in Exalate’s left-hand menu. Then click on the white “Accept invitation” button. On the screen that appears, paste in the code you generated in Jira. I hope you copied it down somewhere! Click “Next” when you’re done.
After clicking “Next”, your Jira and ServiceNow connection will be successfully established. You can now choose to configure your connection by clicking the “Configure Sync” button or simply close the window and choose to configure it later as shown in step 4.
Step 4: Configure Your Connection to Determine What Information Gets Shared
Now the connection is ready, you can tune it to share exactly what you want. This and the next step can be done in either Jira or ServiceNow. I’m using Jira here.
In the Jira connections list, hover your mouse over the connection you just created. Click the square icon to edit it.
Other icons here let you activate or delete the connection, as well as generate a new invitation if the connection is still pending. You can also visit the remote side of the connection.
I’ll cover the rules tab here. And in the next step, I’ll look at the triggers. There is also a statistics page, where you can see how many issues are being synced. This is likely to be zero at this stage. There’s also an info tab that shows some details about your connection, including the other instance URL.
On the rules tab, you can see lists of outgoing and incoming sync rules. These rules determine how information is matched from one item to another. In Jira, the outgoing rules show us how item attributes in Jira are mapped to ServiceNow items that they are copied to. The incoming rules show us how ServiceNow item attributes are mapped onto Jira items.
The rules are written in the ‘Groovy’ scripting language. Here’s a general guide to how it works.
By default, fields are mapped to identical or equivalent fields. That makes sense as a starting point, but it isn’t always what you want. Sometimes, you may only want some of the fields shared. Some data might be private to one team, or it might be irrelevant to the other. Customer service teams might not want to know about the technical data, for example, but they will want to know about solutions to any problem.
No doubt you’ll have your own ideas, based on how you want to use the integration. To make the changes you want, edit the text in the outgoing and incoming text areas.
You can give specific values to fields, so instead of copying the labels over, you could replace them with a label that says “from ServiceNow”. To do that change the incoming sync rule line: issue.labels = replica.labels to issue.labels = “from ServiceNow”
You could change the assignee so that a specific person deals with issues synced from the other side of the connection. To do that add an incoming rule that says: issue.assignee = “Rachel”
If there’s a line you don’t want, just delete it.
The incoming sync rules don’t have as many mappings as the outgoing ones. The outgoing rules just define what is made available to the other side of the connection. The incoming rules set what is actually mapped onto the matching items.
There are also some advanced helper functions for managing groups of items, like comments. You can read more about those in this script helpers guide.
You’ll also see comments in the code. These have // at the start of single lines, or /* and */ for multiple line comments. Comments are notes that are there to provide information. You can add or remove these as you need to let you know exactly what any rules are for. You can also use a comment to temporarily disable a line of code you might want to reuse later.
Adjusting the sync rules might seem tricky at first, but once you get the hang of it, it gives you a huge level of control over what you share. Take a look, try to figure out the basics, and build up your knowledge from there. If you get stuck, the documentation and Exalate support are both there to help you.
Step 5: Set Up Automated Synchronization Triggers
Now that your connection is sharing what you want, you can make sure it shares information at the correct time. Triggers set the conditions for synchronization.
There are two ways we can create and edit triggers. Both of these can be done in Jira or ServiceNow. This guide uses Jira.
Firstly, in the same edit connection screen used in the previous step, click the “Triggers” tab. If there are any existing triggers, they will be listed here, but the first time you use them, they will be blank. 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 entity type drop-down at the top, lets you select the kind of entity that this trigger will apply to.
The entity selection will differ from platform to platform. In Jira, we can select “issues” or “sprints”. In this example, “issues” are selected.
In the next box, with “If” above it, we 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. The query can refer to any of the fields that entities contain. Have a look at the sync rules in the last step to see a list of these.
Example queries would be: type = Task, which would sync tasks, or assignee = Paul to sync tickets assigned to Paul. You can create multiple conditions using AND, for example, project = BLUE AND labels = sync. The trigger will scan entities and synchronize those that match the condition you set.
Under the query area is a field where you can make notes. You can enter whatever you like here, but as with connections, it is a good idea to explain what you are doing and why you are doing it. This will help you and others when you look at the trigger later.
At the bottom is the “Active” switch. You need to activate the trigger to make it work. This also gives you a quick way to turn triggers on and off when you need them.
Once you’ve filled everything out, click “Add” to create the trigger. You’ll now see it listed and available for editing or deletion.
You can also view triggers by clicking “Triggers” from the left-hand menu, under the “Exalate” heading. This shows you all the triggers for all your connections. From the list, you can activate or deactivate them, as well as edit, delete, “Bulk Exalate” and “Bulk Unexalate” via the action button on the right of each entry.
To create triggers on this screen, click the “Create Trigger” button. If you do it like this, you’ll see a similar screen to the one above. The only difference is there will be a drop-down box to select the connection the trigger applies to.
Now that you can create triggers, you can get Exalate working on the entities you want to sync. You can add as many triggers as you like, and they are easy to activate and deactivate, so don’t be afraid to experiment.
Step 6: Start Synchronizing Tasks
After following the above steps, your connection will start sharing tasks that match the conditions you have set. The connections list shows how many tasks are under sync, so you’ll be able to see when it starts working.
Synchronization isn’t instantaneous, it happens every few minutes, so don’t assume your connection isn’t working if issues don’t immediately update when you make a change.
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. 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, HP QC/ALM, and more.
Each connection can be tailored to share the specific information you want, meaning the same data can be used independently by each of your teams. 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. Your marketing team can track information on customer feedback and store all related discussions.
With Exalate, the issues can then be shared with the design team, but without the info, they don’t need, 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 when the problems are fixed, 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.