You might have different teams working in different environments. Helping these teams work in harmony and having data shared in the most autonomous and flexible way possible is one of the key factors that can guarantee your business success. For instance, if you are using Jira for development and Zendesk for support, then a Jira Zendesk integration is what can make your workflow much smoother.
Using the right technology to do the hard work lets your developers focus on development and your support team focus on customers. This way, your priorities are respected and your customers are always satisfied.
When you are setting up an integration, you first need to make sure you choose the right technology, you’re aware of your goals, and you have foreseen the potential pitfalls. In this guide, we’ll cover these and then see how to set us an integration following a few straightforward steps.
Here’s what is going to be covered in this blog post:
- The Benefits of a Jira Zendesk Integration
- Choosing the Right Technology for a Jira Zendesk Integration
- How to Integrate Jira and Zendesk in 6 Steps
- Common Use Cases
The Benefits of a Jira Zendesk Integration
What is Jira?
Jira is a project management tool, designed for tracking issues and bugs. It is geared towards agile development and is popular with development teams working on software projects.
It uses issues as the main unit of information and you can organize these on its scrum and kanban boards.
What is Zendesk?
Zendesk is an automated help desk platform that lets you manage customers easily. That makes it a good option for any team that deals directly with clients and it is great for customer support, marketing, and sales teams.
Its approach is based on tickets. You can use the data on these tickets to integrate it with other platforms.
Jira and Zendesk are both extensible platforms with many apps in their marketplace that add extra functionality. That’s something you can take advantage of when integrating the two platforms while working in the comfort of your familiar environment.
A Jira Zendesk integration can be hugely beneficial to both sides of the connection. In practice, you will be exchanging information between Jira issues and Zendesk tickets, so you need a system that can pick which issues and tickets need to be shared, and then filter the specific information you need, leaving just what the other team needs to know.
Choosing the Right Technology for a Jira Zendesk Integration
To make sure your integration delivers its best, it’s also important to keep a few features in mind when choosing the right integration solution.
The purpose of your integration is to share data automatically without having to leave your trusted environment. The integration should enable everyone to tune their side of the integration independently without jeopardizing security.
Each side of the integration should be able to control what they send out and change how they deal with incoming data. That gives you the right balance of autonomy and security and lets everyone work efficiently.
When you set your integration up, you’ll need to decide what is shared and when the synchronization happens. The decisions you make at first may need to be changed later, as you gain an understanding of what your integration can do.
You may want to share additional fields or use more advanced logic to process items, and a team might want to filter some of it out. Your integration solution must be flexible enough to enable these changes easily. You should be able to adapt to it quickly.
Sometimes computer systems break down. As your integration is dealing with two different platforms, it should be able to deal with potential issues on either side, as well as general connection outages.
If your integration solution can’t handle outages properly, it may crash or need to be set up again. That means extra work for you.
When one side is unavailable, your integration should manage to handle the problem gracefully. If ticket exchange isn’t possible, it should be able to wait and then try again later, resuming automatically when the connection is restored.
The tool I’m going to use for my Jira Zendesk integration is called Exalate. Exalate was designed with these three issues in mind and is built to solve the challenges that arise when connecting platforms.
Now, let’s set up a Jira Zendesk integration.
How to Integrate Jira and Zendesk in 6 Steps
I’ll start by installing Exalate on both platforms. Then I’ll create a connection between them. Once the connection is set up, you can configure it to control what it sends and then define the conditions for data exchange.
But before we dive in, would you rather watch a tutorial than read a guide? Then check out this video:
Step 1 – Install Exalate on Jira
Log in to your Jira instance and find the Exalate app in the Atlassian marketplace. To do that, click the cog in the top right, and select “Apps” from the menu.
If you aren’t taken straight to the marketplace, click “Find new apps” in the left-side menu, and type “Exalate” into the search field. You should see a list of Exalate add-ons appear with “Exalate Jira Issue Sync & more” at the top.
Click that, and choose “Try it free”. A confirmation screen will appear. Click the “Start free trial” button.
After a brief pause, you’ll see a popup appear saying Exalate has been installed successfully. Click “Get started”. You’ll see the initiate connection button highlighted, but we’re going to leave Jira for the time being. We’ll return later on.
Step 2 – Install Exalate on Zendesk
Next, you need to install Exalate on your Zendesk instance. Log in, then click the cog in the left-side menu. Go to the marketplace and type “Exalate” in the search field.
On its store listing page, click “Install”. A pop-up will appear. Select your account from the drop-down list and click “Install” again.
You’ll be taken back into Zendesk with another install screen. On this screen, you can change the Exalate app’s name if you want to refer to it as something else. You can also set role and group restrictions if you want to limit who can use it.
Change those if you need to, and then click the “Install” button. Exalate will now install itself. You’ll see its icon listed under the settings cog in the left side menu. Click the Exalate icon now.
When you access it for the first time, Exalate will ask for permission to read and write data. Click “Allow” to give it the permissions.
Next, you’ll have to accept Exalate’s user license agreement. Click the green “Accept” button to do so.
Finally, you need to add a license to your installation. Click on the 30-day trial image. Enter your email address in the popup that appears, and click “Send”. Check your inbox for the license activation mail. When it arrives, copy the code you get onto the clipboard.
Click the license button at the bottom of the Exalate license screen. Scroll down from the 30-day license image to find it. When you click it, a license key field will appear. Paste the code from your email into the field.
Click “Update” and Exalate will register the license for you. You are now ready to go.
Step 3 – Connect Your Jira and Zendesk Instances
Now that you’ve installed Exalate on both platforms, you can connect the two. To create the connection, you need to initiate it on one side and accept the invitation on the other side.
You can start in either Jira or Zendesk. Exalate gives you a consistent interface across platforms so the process is the same either way. This guide uses Zendesk, so if you aren’t there already, log in, select the Exalate icon on the left, and then click “Connections” in Exalate’s left-side menu.
You can see all your connections here. To create your first one, click the green “Initiate connection” button.
Now you need to enter the URL of the destination side. Here, enter the URL of your Jira instance. Verification is performed to check if Exalate is installed on the destination or not. Click “I don’t have a URL” if you don’t have it and follow these steps.
At this point, you can choose one of the 3 ways to continue. Exalate allows you to set up your connection using 3 modes: the Basic Mode, the Visual Mode, and the Script Mode.
Exalate’s Basic Mode allows you to work with preset sync rules that are generated automatically and cannot be modified. These connections are recommended for use cases with basic synchronization needs.
The Visual Mode gives you an easy way to set your connection up to share what you want, at the time of your choosing. If you prefer, you can use the script mode, which lets you use more advanced features and configurations using programming logic.
The Script allows you to sync almost anything. You can modify the sync rules using the “Groovy Scripting” language.
We will have a look at all of these modes one by one.
Continue with the Basic Mode
For getting started with the Basic Mode, click “Next” after selecting it.
This will take you to a screen where you must confirm if you have admin access to the Jira side.
Click “Yes, I have admin access” and then “Initiate”. If you don’t have access then you will be required to copy and paste an invitation code manually from the Zendesk to Jira instance.
Now, move on to selecting a project on the Jira side. Select it from a drop-down list and click “Confirm”.
This successfully establishes a connection between Zendesk and Jira. Now you can sync your first issue by directly entering the issue key as shown below, or by creating a trigger. You can even synchronize your issues in bulk.
Enter the issue key and click “Exalate” to synchronize it.
This means an issue synchronized from the Jira side will generate a ticket at the Zendesk side. Wait until you get the “synchronized” message on the screen.
Continue with the Visual Mode
To get started with the visual mode, select it and click on “Next”. The Visual mode gives you a straightforward interface that many people find easier to work with than scripting. It also lets you configure things once, instead of separately for each side of the connection.
On the other hand scripting lets you use advanced decision-making, so will be better in some cases.
I’ll now describe how to set things up in visual mode. After this section, you can read on to see how to do things using scripting.
After clicking next, more fields appear. There are fields to name both your local and destination instances. Exalate will use those to generate the connection name automatically, but you can adjust it if you like.
There is also an optional description field especially helpful if you have multiple connections or if different people are working with them.
When done, click “Next”.
If you want to use the Visual mode you’ll need to verify that you have access to the other side of the connection. Click “Verify admin access” to do that.
Click “Accept” to allow access. You’ll then be taken back to the other window where you’ll see your verification confirmed. You can continue setting up the connection by clicking “Initiate”.
Next, there’s a brief wait while Exalate tries to establish a connection. After a while, you can click the green “Configure Sync” button to configure your connection.
Here you can see various controls to let you choose what is shared over the connection. On the Jira side of the connection, there is a “Select Project” dropdown box that lets you pick a project to use for synchronization.
Jira and Zendesk both have a filter entities button, which lets you choose what filters are applied to the items. Items that match the filters will be synchronized.
If you click the button, a popup will appear showing you the various filter options. In some cases, like the “Issue type” filter, you use a dropdown box to select from the choices available. In others, you can type in the box to select from the entries there.
With the description and summary fields, you can enter specific values you want to match. Lastly, the assignee and reporter fields let you filter items associated with specific people.
When you’ve made your choices, click “Save”. You can do this for both the Jira and Zendesk sides of the connection.
In the middle of the screen, you can see “Sync method” controls which let you choose the sync method in both directions. You can choose manual or automatic synchronization, or disable it altogether, which means you can make a one or two-way connection.
When you’re happy with the filters you’ve set, click “Next”. Here you can use field mappings to control what happens when items are synced. You might want to map similar items directly onto each other, or you might want to pipe fields to other fields.
Exalate will create some defaults for you the first time you do this. As you can see in the above image, identically or similarly named fields are mapped together.
You can drag and drop these rules if you want to reorder them. The icons on the right of each mapping allow you to edit or delete them. If you select the edit button, you can choose to have that specific field mapped in one direction only, or the default which is both directions.
You can also select a default value if there is no value on the other side. Perhaps you want to make an issue’s type “From Jira”, so you can see that it has come from your connection. You could also pass unassigned issues to a specific person in the same way.
If you want to map each field to a different one, you can use the dropdown box to change them. You also have the option to report an error if a field is blank when you were expecting it to be populated.
Some fields, such as comments in the screenshot above, have additional checkboxes allowing you to filter them in more detail. Here, you can choose whether or not to sync internal or external comments, as well as whether to sync the original comment author.
To add a completely new mapping, click the “Add mapping” button at the top right. The add mapping popup works in a similar way to the edit popup. The only difference is you have to pick the fields to get started.
Once you’ve selected the fields, further controls may appear allowing you to set conditions, as in the edit mapping popup. When you’ve set things up as you like, click “Save” and the new mapping will be created.
Click the arrow next to the “Add mapping” button and you’ll also see the “Add script” button. Click this and you’ll see a further popup letting you add rules using a simple scripting language.
The visual mode works better for simple rules, but scripting allows you to get more creative. Read this to learn more.
You add rules by typing them into the field. A few examples are shown when you open the page.
If you want to sync a field you can type something like jira.issue.labels = zendesk.issue.labels. If you want to set a specific value for Jira’s labels, you can change that to jira.issue.labels = “synced from Zendesk”.
After adding the scripting rules, click “Save” to go back to the main screen.
When you’ve got everything set up, click the “Publish” button. With visual mode, that’s all you need to do. You can edit the connection later by clicking the “Connections” entry in the left-hand menu, clicking the edit icon on the connection you want to change, and going through these steps again.
You can skip and go directly to step 5 if you want to use only the Visual mode.
Advanced Synchronization with the Script Mode
If you don’t want to use visual mode, select the other option- “Script”.
On the next screen, you need to enter the URL of the destination instance, in this case, the Jira node URL, and it will ask you to fill in the name for the connection and some other details, just like you did for the visual mode.
When done, click “Next”. You’ll learn how to configure Exalate fully in steps 4 and 5.
Exalate will now generate an invitation code for you. Copy it to your clipboard. Then paste the code somewhere safe, such as a text editor.
If you click the “Go to remote” button, you’ll be taken directly to the connections screen on your other instance. Note that you may have to log in first.
Now on the Jira side, if you’re not already on the “Connections” screen, navigate there by clicking “Add-ons” on Jira’s top menu, followed by “Connections” from the left-side menu under the “Exalate” heading.
“Accept invitation”, paste the invitation code, and click “Next”.
Next, you need to choose a project for synchronization on the Jira side. Choose one from the drop-down list, and then click “Confirm”.
After your connection is set up, you can see the connection listed on the “Connections” screen in both Jira and Zendesk.
In the next steps, you’ll learn how to configure the connection.
Step 4 – Configure Your Connection to Determine What Gets Shared
When Exalate synchronizes items, it copies data from the fields on one side of the connection to those on the other. Often it is obvious which fields should match the other side. You can customize the mappings as you see fit.
You can also set specific values for synchronized tickets, or use advanced programming logic to fill in the information. In this step, you’ll see how to make the changes you need.
To get started, go to your “Connections” tab. You can delete the connection or activate and deactivate it here. There’s also a button to switch to the other side of the connection.
Click “Edit connection”. You’ll see four tabs on the next screen with “Rules” selected by default, along with “Triggers”, “Statistics” and “Info”.
Note: You can configure the connection by clicking on the “Configure Sync” button while creating the connection as well.
The statistics tab shows you how many issues, comments, and attachments are under sync and when synchronization last took place. The info tab shows you the connection’s name, type, and description, and also the destination URL.
In step 5, you’ll look closely at the triggers. For now, click the “Rules” tab. Here you can see two sets of rules.
You can do this and the next step on either Jira or Zendesk. I’m using Zendesk. It basically works the same way, but the incoming and outgoing sync rules are relative to each platform, so refer to different things in each case.
Looking at the outgoing rules, we can see how Zendesk ticket issues are mapped to the outgoing replica. In this case, all fields are mapped to equivalents with the same name.
If there’s any data here you don’t want to share, you can remove it. You can do that permanently by deleting the line, or temporarily by making the line a comment. You comment lines by adding “//” to the start. You can comment blocks by adding “/*” to the beginning and “*/” to the end of the section you want to comment.
If you want to give a specific value to a field, you can do that by replacing any of the issue values with a specified value in quotes. For example, instead of replica.type = issue.type, you can use replica.type = “sent from Zendesk”.
The incoming rules show you how the data coming from Jira is used to create matching Zendesk tickets. Again, you can specify any values you want, or comment out any you don’t want to use.
There are also advanced ‘script helpers’ which handle complex processing for you. For example in the incoming sync rules, the line issue.attachments = attachmentHelper.mergeAttachments(issue, replica) uses a helper to process attachments.
Attachments are complicated and may contain different file types, so using a helper can make your life much simpler.
There are many different helpers available. Read this guide to learn more.
Step 5 – Set Up Automated Synchronization Triggers
Synchronization triggers determine the conditions under which issues and tickets are synchronized. You might want to synchronize all issues of a particular type or everything assigned to a particular team member. You might want to create a tag that one team can use that marks those items for sharing with the other team.
Whatever conditions you want to set, it is likely you can implement them with Exalate. The process for creating triggers is the same in Jira and Zendesk, but they each use a different language. Jira uses Jira Query Language or JQL for short. Zendesk uses Zendesk search syntax.
If you’re following this tutorial step by step, you should be on the edit connection screen. If not, get there by clicking “Connections” from Exalate’s left side menu, then clicking the edit button.
Then click the “Triggers” tab. On this screen, click the “+ Create trigger” button on the right. You can access a similar screen by clicking “Triggers” from Exalate’s left-hand menu. That gives you a similar interface, but you’ll have to specify the connection for each trigger.
There are several fields on the add trigger popup. There’s a drop-down box to let you choose the entity type the trigger applies to. In this case that will be a “ticket”.
Next, there’s a box where you can enter your query. Here in Zendesk, I’ve used the type: ticket status:open. That will synchronize all open tickets. I’ve also added a description to that effect in the box above. As with connections, it is a good idea to fill out description fields with as much information as possible.
There’s also a switch to turn the trigger on and off, which I’ve activated. When everything is ready, click the green “Add” button.
You should see the trigger listed on the previous screen.
Step 6 – Start Synchronizing Tasks
You’ve set your connection up and defined what is shared. You’ve also set the conditions for synchronization. When an issue meets those conditions, it will be synced.
For performance reasons, Exalate checks for matching items periodically, so if you don’t see the sync begin immediately, check again after a few minutes.
After a while, you should see the synced items reflected in the connection entry in the connections list. If not, make sure your sync rules and triggers are set up correctly. Don’t be afraid to make adjustments and test them until everything is working as you intend.
Common Use Cases
Here are a few examples of situations where you can improve your workflows using a Jira Zendesk integration.
Customer Service Team and Development Team
If your customer service team uses Zendesk and your developers use Jira, there is likely to be potential for useful information exchange. The customer service team will use Zendesk to create tickets, based on their interactions with customers. These tickets will include details of problems and bugs.
Some of these issues can be dealt with by the customer service team, but if they see something they haven’t encountered before, it will be of interest to the developers. You can use Exalate to transfer these issues from Zendesk to Jira under the conditions you specify.
One way would be to define a tag, ‘dev team’, for example, that can be used to mark tickets that support can’t handle themselves.
These tickets can then be automatically transferred to Jira. The devs can look at them, and mark them as ‘resolved’ when they come up with a solution. Exalate can look for the ‘resolved’ tickets and send the solutions back to Zendesk. The customer service team can then provide the customers with a resolution to their problems.
Market Research and Design Teams
Your marketing team studies your customer base and finds out what they want. The design team converts these needs into product features. The marketing team will want to know about new features so they can conduct further research, to see what consumers think of them. Designers will want to know about the feedback.
The teams are often looking at the same issues but will want to handle them independently. The market research team will collect a lot of data, but will focus on a subset of it when analyzing it and drawing conclusions. The design team only wants to see what they learn.
Using an automated tool to share the relevant data between these teams leaves them both free to do their own work while taking advantage of each other’s data.
Sales Team and Onboarding Team for Online Services
If you’re making services available online, you may use Zendesk for sales, and Jira to manage your user data. Your sales team will work with clients to set up contracts. During this process, they’ll collect a variety of data, stored on Zendesk. When they make a sale, you’ll want to transfer some of this information to Jira.
An integration tool can do this automatically, filtering the data and transferring what’s needed to Jira tickets. Your onboarding team can use these tickets to help set the new customers up with their accounts.
There are many benefits to connecting software platforms. A Jira Zendesk integration can increase their productivity and let them take advantage of their unique strengths.
Exalate lets you do this easily and gives you a flexible interface that you can use to control the integration. You can share what you want and set the conditions for sharing. All of it can be easily adjusted, as well as switched on and off quickly.