How to set up a Jira Salesforce Integration: The Comprehensive 2021 Guide

Jira Salesforce Integration

Jira is a project management tool that helps teams plan, prioritize, and track issues. It is also used as a bug tracking and reporting tool. Salesforce is a CRM platform that gives teams a single and shared view of every customer. Both these tools are popular and best suited for increasing business productivity and efficiency. But to enhance their power further, there is a need for a Jira Salesforce Integration.

Such integration can help provide a holistic view of business information and increase collaboration between teams who can then complement each other and work towards gathering the required expertise.

This guide describes how a Jira Salesforce integration can help teams collaborate and communicate faster and more effectively. It then provides a step-by-step approach to achieving this integration, and finally presents a few common use cases that can benefit from such integration.

Here’s what we’ll cover in this blog post:

Why do you Need a Jira Salesforce Integration?

What is Jira?

Jira is a great platform for issue tracking, project management, and bug fixing. It has been used widely by both software and non-software teams for a variety of purposes. It is also a widely used tool for teams following agile methodologies. It comes with many predefined templates suitable to different teams like Software Development, Marketing, HR, and the like.

The power of Jira can be enhanced further by a variety of apps available on the Atlassian Marketplace.

What is Salesforce?

Salesforce is a very popular CRM tool. It is predominantly used by sales teams to view and manage all customer-related information. Sales teams can track their leads, manage their deals, and even provide after-sales support with the help of Salesforce. It also provides immense customizability to adapt to specific business needs and is scalable.

AppExchange in Salesforce comes with some great apps to extend its power further.

With such powerful tools in place and doing what they do best, it’s imperative that they pass information between them. Let’s see why.

Why a Jira Salesforce Integration?

Today’s global teams often collaborate with one another to get the expertise they need as fast as possible to help them increase their efficiency. They also wish to keep working in environments they are already familiar with to save time and get things done faster.

For this collaborative world, teams often copy and paste data manually between their tools, send emails across or even spend time on meetings and phone calls. This leads to delays in sending data back and forth, manual data entry mistakes, misplaced or altered data, and above all, it simply wastes time and efforts of valuable resources.

So using a tool to help teams pass critical business information between them not only would streamline communication, but also reduce the number of costly errors and leave teams to work on more important things.

For all of these reasons, it is important to consider a Jira Salesforce integration where information is passed between sales and other teams automatically in real-time and in a consistent manner so that it reaches the right people at the right time.

Such integration can help these teams avoid working in silos and ensures everyone has the correct and up-to-date information.

Now that we have discussed the advantages of a Jira Salesforce integration, let’s quickly see why choosing the right technology for this is also crucial.

How to Choose the Right Tool for a Jira Salesforce Integration

Choosing the right tool for your Jira Salesforce integration is very important since it hugely affects the benefits such integration can bring. However, there are certain points you should consider before proceeding.

Decentralized Integration

The tool should let teams work independently in their familiar environment and still allow information to be passed between them.

In this case, a decentralized integration would be the ideal choice since each side will control what information is sent over to the other side and how incoming information is interpreted, without having to inform or consult the other side in advance.

Of course, this means that after the initial consultation for setting up the integration, things must run smoothly for the remaining part without either side interfering with one another.

It is also important that critical information is not passed around between teams and if there is such a need, then appropriate security mechanisms are in place.


Business and customer requirements evolve and change over time. The data you synchronize currently might not need synchronization next year. You might want to synchronize some new data altogether.

With such a change comes the pain of having to spend a huge amount of time and effort to configure the integration tool.

But a tool that supports information exchange with the least configuration, even for the most complex and customized use cases must be your first priority. Handling changing business requirements with minimal tweaking must be possible.


The reality of downtime and the way it is handled cannot be ignored. The tool must be able to guarantee the synchronization without any kind of manual intervention. When one system is down, then the tool should be able to resume operations once it’s back up again.

Considering all these points, we have used a tool called Exalate for this guide. This is because it inherently supports a decentralized architecture. It allows you to control information flow and work independently on both sides of integration with the help of sync rules.

It also provides security mechanisms like encrypted file exchange, role-based access controls, secure protocols like HTTPS, and the like. You can learn more about this by reading Exalate’s security architecture whitepaper.

It also comes with different configuration modes and advanced scripting capabilities for enhanced flexibility. And above all, it is easy to use and understand by both business and technical users.

Let us have a look at how a step-by-step Jira Salesforce integration can be implemented.

How to Set up a Jira to Salesforce Integration

To begin with, you need to install Exalate on both Jira and Salesforce. Once that is done, you move ahead and set up a connection between them. You can start synchronizing Salesforce entities with Jira issues after that. If and when needed, you can configure and control what information is shared between them.

We will look at all the steps in detail. So let’s get started.

Step 1: Install Exalate on Salesforce

Exalate for Salesforce currently is available through the Early Access Program(EAP). We will see how to install it via the EAP in this section, but if you want, you can refer directly to the detailed procedure here.

To begin with, go to your Salesforce instance and start setting up Exalate.

In your Salesforce instance click “Setup” at the top right.

Exalate for Salesforce

In the left-hand submenu, you will find “Apps”. Go to “Apps Manager” from there and click on “New Connected App”.

Salesforce app manager

A form will pop up asking you to fill in some basic information. If you use Salesforce already, you must be familiar with how connected apps work.

You can give any name to your app, but it only makes sense to name it “Exalate” and that’s what we do here. The API name will be auto-filled. You then need to mention your contact email.

Exalate for Salesforce

In the API section, click on “Enable OAuth Settings” to allow the Exalate app to connect with Salesforce.

After enabling the OAuth settings, specify a callback URL for the Early Access program. This is used by Salesforce to call back to your application.

You will now need to select OAuth Scopes to apply to the Exalate app. OAuth scopes define permissions to the connected app which are granted as tokens when the app has been authorized. To enable Exalate to have all the necessary permissions, add the ones shown on the screen below.

OAuth settings Salesforce

Now is when you hit the “Save” button at the top or bottom of the page.

The changes made can take up to 10 minutes to take effect.

Install Exalate on Salesforce

Before you proceed, you need to quickly check the OAuth policies of your connected app. For this in the left-hand menu, click Apps> Connected Apps> Manage Connected Apps and then select “Exalate”. There make sure the “Permitted users” is set to “All users may self-authorize”. If it’s not, follow these steps to get it done.

Now proceed to request an Exalate license for Salesforce. For this, visit the integrations page and then choose Salesforce as your tracker.

Salesforce integration page on Exalate

A form as shown below will appear.

form for requesting Salesforce integration

For filling this form, you will need the “Consumer Key” and the “Consumer Secret” from your connected app in Salesforce. To get that, go to “Apps” then “App Manager” from the left-hand menu and then find the name of the app. In our case, that is Exalate.

Click on the arrow on the right-hand side and select “View”.

Salesforce Lightening app manager

Copy the “Consumer Key” and the “Consumer Secret” (you might need to “Click to Reveal” if the key isn’t visible) somewhere and keep it handy.

API Salesforce

We now have all the information we need to fill the form. Refer to this page if you still have doubts.

On the form enter your email address and the consumer secret and key you just copied.

Then provide your Salesforce URL.

Note: The Salesforce tracker URL in the general settings must be from the Salesforce Classic Version and not the Lightning Edition. In case you are already in the Lightning Edition, click on the profile button at the top right of the screen, and select “Switch to Salesforce Classic”, it will redirect you to the classic version. You can then enter the URL.

Salesforce Tracker URL

Now select the organization type. Click here if you are confused about what to select. Then click “Submit”.

You will then receive an email with your new Exalate Salesforce instance URL. Open the link provided in the email and allow access to Salesforce.

Allow access Jira Salesforce integration

Then proceed to fill in your basic details so Exalate can verify your instance, activate an evaluation license, and make an admin account to receive error notifications.

Exalate verification email

After you click “Agree and Submit”, a verification email will be sent out. For verification, open your email and click “Verify Exalate instance”.

Verify Exalate instance for Jira Salesforce sync

Voila, your work here is done! You can now log in to your Salesforce Exalate instance by following these steps.

Email verification successful for Jira Salesforce sync

You can start with setting up your first connection already by skipping to step 3 if you have installed Exalate on your Jira instance.

If you still haven’t, then move on to the next step.

Step 2: Install Exalate on Jira

Installing Exalate on Jira is pretty straightforward. You can do it directly from the Exalate website, or by visiting the Atlassian marketplace.

We’ll set up Exalate from within Jira here. We are assuming you use Jira Cloud, but Exalate allows you to synchronize Salesforce with Jira on-premise as well. You can find out how to go about the installation for that here.

Check out more information about Jira Cloud here.

To install Exalate, first, click on the “Settings” icon on the top right of your Jira instance and choose “Apps” from the drop-down menu.

Jira settings

On the left-hand submenu, select “Find new apps”.

apps and integrations for jira

In the search box, type “Exalate” and hit enter. You can see Exalate apps for different issue trackers listed here. Make sure you choose the right one. Here we select “Exalate Jira Issue Sync & more”.

exalate for jira

Now click on the “Try it free” button.

exalate for jira on marketplace

An “Add to Jira” pop will be displayed. You can have a look at the Exalate app details by clicking on the “View app details” button. If not, click on the “Start free trial” button to start the evaluation for Exalate on Jira. A few pop-ups will be displayed that will indicate the status of the app installation process.

After a while, click on the “Get Started” button.

get started with Exalate on jira

Now you are all set to start with your first connection.

Step 3: Connect Jira to Salesforce

The first thing you do when Exalate gets installed is initiating a connection on one side and accepting it on the other side.

Here, we will start initiating the connection from Salesforce, but you can start from either side.

Exalate offers you uniformity in terms of its interface across all platforms, so you don’t have to worry about where to start and how to proceed.

Your Salesforce instance looks like this. In case you have logged out, follow these steps to log in again. 

initiate a Jira Salesforce Integration

If you have already created connections before, the screen will list their names and statuses. If this is your first time, you start by clicking on the “Initiate Connection” button.

The next screen prompts you to enter the destination instance URL.

jira salesforce configuration modes

The purpose of this is to know whether Exalate has been installed on the other side or not. Appropriate messages regarding the installation status are provided here. Click on “I don’t have the URL” if you are not aware of your destination URL and follow these steps.

We enter the Jira instance URL since we are initiating the connection from the Salesforce side.

After a quick check, you will now need to choose the mode of connection. Exalate comes in 2 modes: Basic and Script.

Basic mode is a low-code, no-configuration user interface that works well for simple synchronization use cases. There are some predefined mappings and configurations in this mode that you cannot change.

Note: Exalate also has a forever “Free Plan” for the Basic mode connections that allow up to 1000 syncs per month for free. You can get started here.

But we recommend you use the Script Mode since it provides you with a lot more customization capabilities to accommodate even the most complex and advanced use cases.

We will have a look at both the modes here. Let’s start with:

Continue with the Basic Mode

After clicking “Next” on the screen above, you will be asked to verify if you have admin access to the destination side, in our case the Jira instance. Click “Yes, I have admin access” and click “Initiate”. If you don’t have access, you would be required to manually copy and paste an invitation code on the Jira side. You will come to know more about how to do this in the Script mode.

Exalate basic mode

After a successful verification, you will be automatically redirected towards the Jira instance.

Here, the first thing you need to do is select the project in which you want the Salesforce entities to sync. Select the correct one from a drop-down list and click “Confirm”.

accept Jira Salesforce Integration

You can now immediately start syncing your first issue by entering its key in the text box and clicking on “Exalate”.

sync issue between jira and salesforce

If this is done on the Salesforce side, you need to enter the Case number instead.

Salesforce case number

Note: To get the Case number in Salesforce, you go to a specific case, and then copy the number generated at the top in the URL as shown in the picture below. This is true for finding any entity URN in Salesforce. 

You can even sync issues or Salesforce entities individually using the connect operation in Jira, or in bulk using the “Bulk Connect” option, or create automatic triggers for syncing. We will cover triggers in the coming sections.

After clicking “Exalate”, wait for some time, the appropriate status messages will be displayed.

accept Salesforce Jira sync

Sit back and relax, you will soon get your first issue synced.

successful Jira Salesforce Integration

This will successfully establish a Jira Salesforce integration in the Basic mode and you can already see your first synchronization status.

Continue with the Script Mode

If you wish to use the Script mode, then select it and click “Next”.

Exalate Script mode

You will now need to name your connection. This is important while identifying your connection in case you have many. Exalate asks you to name the local instance, in our case Salesforce since we are initiating the connection from it, and also the remote instance, Jira in our case. Once you enter the instance names, a connection name will automatically be generated for you, but you can change it if you want.

Enter a description stating the purpose of your connection or any other important details. Be sure to elaborate and take your time! Once done, hit “Initiate”.

initiate Jira Salesforce connection script mode

Exalate now generates an invitation code for you. Click on “Copy Invitation code” to copy it and save it someplace safe. 

exalate invitation code

Your work on the Salesforce side is over. You need to go to your Jira instance for further steps. To do so, click on “Go to remote”.

On the Jira side, it will open up the “Connections” tab for you by default.

In case it doesn’t, click on “Apps” at the center of the screen, then click “Manage your Apps”. On the left-hand submenu look for Exalate. Click “Connections” under it.

On the “Connections” screen click “Accept the Invitation”.

This opens up a text area for you. Paste the invitation code you just copied here. Then click “Next”.

accept Jira Salesforce connection invitation

You now need to select the project on the Jira side just like you did for the Basic mode. Select the appropriate one from the drop-down list. Click “Confirm”.

select project Jira Salesforce integration

The connection between Jira to Salesforce has now been successfully established.

There are 2 ways to proceed with configuring the connection from here. You either directly click on the “Configure Sync” button shown below or edit the connection as shown in step 4. Both of them will redirect you to similar screens.

successful jira salesforce sync

Step 4: Configure the connection to set what information is shared

Once your Jira Salesforce integration is established, it’s time you control what information is sent between Jira and Salesforce. With Exalate, you can achieve this by configuring the connection.

For this, you can go to the “Connections” page in your Salesforce or Jira instance and see your connection listed there. Click the edit connection icon.

configure salesforce jira integration

In addition to the edit connection icon, you can directly go to the other side of the connection by clicking the remote antenna button, or you can click the 3 dots and either activate, deactivate, or delete your connection.

Once you click the edit connection icon, the following screen will appear. The first tab is “Rules”, which we will see in this step, the “Triggers” tab will be covered in the next step.

The “Statistics” tab displays the overview of your connection synchronizations like the number of syncs, the date on which you last synced, etc.

The “Info” tab provides some general information about the connection like the name of the connection, the destination instance URL, and the type of connection. You can go ahead and edit the description of the connection if you want here.

Jira Salesforce sync rules

On the “Rules” tab, you have sync rules as shown above. These are in Groovy scripting language. So if you are familiar with it, it shouldn’t be difficult for you.

There are outgoing sync rules to decide what you want to send to the other side, and there are incoming sync rules to control how you interpret information coming from the other side.

Both sides of the connection have these rules, but the only difference is the way in which the entities are addressed. They depend on the platform the connection is accessed from.

You can straight away edit the rules inside the textboxes, or you can copy and paste them somewhere safe and work on them later.

Here we are seeing the rules on the Salesforce side.

As seen in the “Outgoing sync” rules, “replica.description = entity.Description” means the description of the Case(entity) is saved inside a replica. The replica is just a placeholder working to save the values you want to send to or receive from the other side. Here, it means the description of the Case will be sent out from Salesforce and will be saved under the description of the issue created in Jira. As such, on the Jira side under the “Incoming sync” rules: “issue.description = replica.description” means the description of the replica(Case from Salesforce) will be copied into the description field of the Jira issue.

Sometimes there is a need to set particular values for entity fields. In this case, you simply replace any of the given values with values inside “quotes”. For example, you can replace replica.description = entity.Description with replica.description = “sent from Salesforce”.

For data you don’t want to share anymore, you can simply delete the corresponding line or comment it, so it’s ignored at the time of synchronization.

Attach “//” before the starting of the line you want to comment. This will comment only a single line. To add a comment for multiple lines at one time add “/*” at the start of the block of lines and then “*/” wherever you want the comment to end.

For instance, as shown in the image below if you don’t want to sync the description of the Case with the Jira side you simply add “//” at the start of the line in the Outgoing sync rules. 

Jira Salesforce outgoing sync

You can also explore advanced ‘script helpers’ that can help you with complex processing.

For example, on the Jira side, in the incoming sync rules issue.attachments = attachmentHelper.mergeAttachments(issue, replica) uses a helper to process attachments.

This is because attachments are complex and can contain different file types, so using a helper is an easy way out.

You can edit them in the outgoing sync rules section or the incoming one depending on whether you want to make changes to the data sent or received. 

Step 5: Set up triggers for automated synchronization

Triggers determine the condition under which Jira issues and Salesforce entities must synchronize.

You might want to synchronize an “Account” in Salesforce related to a particular customer, in Jira or automatically create an issue whenever a “Case” is created or updated in Salesforce.

Whatever the conditions, they can be easily implemented.

The process for creating triggers is the same in both Jira and Salesforce, but the search queries at both ends are platform-specific. For instance, JQL (Jira Query Language) is used for Jira, and SOQL(Salesforce Object Query Language) is used for Salesforce.

Creating triggers is pretty straightforward and intuitive. You can always learn more about how to set triggers in Jira and Salesforce.

For this step, we will create it on the Salesforce side.

If you are following this tutorial step-by-step, you should be on the edit connection screen now. If you aren’t there, go to “Connections” in the Exalate console and click the edit connection button. On the tabs above, click on “Triggers”.

Alternatively, you can also create a trigger from the left-hand menu of Exalate. Both approaches lead you to similar screens, but the latter one prompts you to select the connection you want to create a trigger for since it is from the general tab.

If this is your first trigger, the screen will be empty. Click on “Create trigger” to get started. You will now be taken to the “Add trigger” screen.

Jira Salesforce sync triggers

Several fields will pop up allowing you to select the entity type. There is a drop-down list of Salesforce entities that you can select from, but the most popular ones are Account, Case, Opportunity, Task, and Product. Depending on what you select in the dropdown, more fields will appear.

You can create a trigger by entering specific conditions to filter. For instance, if you choose Opportunity from the drop-down list, then you can manually enter the details for it as shown in the screen below.

create triggers

Or you can toggle the search query button and enter a SOQL query instead. Write the query in the “If” section.

Don’t forget to add “Notes”. They will help you to understand what the trigger is created for if you have too many of them.

create triggers using SOQL

There is a toggle button called “Active” to either activate or deactivate the trigger. The trigger will work only when it is in the active stage.

This is useful when you don’t want to keep creating the trigger every time. Just toggle the button to deactivate it when not required.

Click “Add” when you are done.

list of Jira Salesforce integration triggers

You now see the trigger listed on the previous screen.

You can activate or deactivate the trigger from this screen by toggling the “Status” button. You can also click on the 3 dots under “Action” to either edit, delete, or “Bulk Exalate” from the trigger. Bulk exalate allows you to sync existing issues or entities that satisfy the trigger conditions you have set.

Don’t forget to click “Publish” once you have made all the changes.

Step 6: Start synchronizing information

We started by creating a connection between Jira and Salesforce.

For the Basic mode, you can sync by creating triggers or synchronizing several issues or entities together using the “Bulk Connect” option. You can also explore the “Connect” operation that will allow you to sync existing Jira issues to Salesforce.

For the Script mode, once you are done configuring the synchronization the way you want, the issues or entities will automatically be synced when the conditions are met.

Exalate periodically checks for syncs and updates, so if your synchronization isn’t reflected immediately, wait for some time and try again.

You can configure and alter the sync rules and triggers anytime to make sure everything is working as you intend it to.

Common Use Cases

Now that we have seen how a Jira Salesforce integration can be set up, let’s explore a few use cases where this kind of integration would be useful.

Sales and Project Management Teams

Your sales and project management teams can benefit hugely from passing information between them.

With a Jira Salesforce integration issue statuses and updates within Jira can be viewed and tracked in Salesforce by the sales team. Say UI of a project is handled in Jira. The sales team always has all the necessary details about the customer feedback or queries in the form of Cases in Salesforce. Some UI-related Cases could trigger an issue in Jira which then is assigned to the correct team member by the project manager.

Comments and status updates of the issue can be then be viewed on both the integrated applications so that the sales and the project management teams can always have consistent and up-to-date information delivered automatically within tools they are familiar with.

Sales and Development Teams

With the tools integrated, the sales team can easily escalate bugs and feature requests of key Opportunities from Salesforce. When such a bug or feature request is identified, it automatically creates an issue in Jira and is taken up by the concerned developer. Henceforth the status of that issue, the comments passed back and forth can all be tracked within Salesforce without the sales team having to contact the developers every time they need a status update.

The product updates maintained and tracked by the development team in Jira can also be synchronized to Salesforce so the sales teams know when to expect the next product update their key customer is eagerly waiting for.

Sales and Back-office Teams

If your back-office teams use Jira for generating and managing licenses and handling contracts, and also for tracking sales deal progress, then they might benefit from a Jira Salesforce integration.

Such tasks, if synced with Salesforce, can help them get real-time updates on deals and help them streamline their licensing and contracting tasks without making incessant phone calls and sending emails to the sales team to gather the information they need.


We have seen how the synchronization of information between two powerful tools like Jira and Salesforce can help teams collaborate and streamline communication. It also ensures data transparency across teams and helps everyone stay on the same page.

We also saw how a Jira Salesforce integration can be implemented in 6 steps, setting Exalate up on both sides and connecting them afterward. Finally, we walked you through creating triggers in order to customize the synchronization based on your specific requirements.

We chose Exalate as a tool for this integration because of its inherent support for distributed architecture and advanced scripting capability.

Recommended Reads:

Comments are closed.