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.
Note: We have used a tool called Exalate for this guide. You’ll learn more about it as we go on.
Here’s what we’ll cover in this blog post:
- Why do you Need a Jira Salesforce Integration?
- How to Choose the Right Tool for a Jira Salesforce Integration
- How to Set up a Jira to Salesforce Integration
- Common Use Cases
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.
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. This, in turn, can help achieve transparency in the way teams collaborate and help automate their business processes end-to-end.
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 ensure 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.
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.
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 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. Exalate 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.
We’ll get to the step-by-step process of the integration, but if you prefer videos over articles, you can go ahead and watch this tutorial instead.
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.
Install Exalate on Salesforce by visiting its marketplace i.e AppExchange. Search for Exalate there after logging in.
Go through the details of the app if you want to know a little more about how it works. Click on “Get It Now” to begin the installation process.
Note: Exalate accesses Salesforce through APIs. Salesforce has its own guidelines for API Access add-ons. For instance, API access is provided by default in Enterprise accounts, while it is not the case with other accounts like Professional. Visit this documentation page to learn about the different Salesforce editions Exalate supports.
On the next screen choose the environment to install Exalate on Production or Sandbox. Choose according to your requirements. I have chosen “Install in Production” here.
Read further the terms and conditions displayed on the screen, then head over to the bottom of the page, accept them and click “Confirm and Install”.
If you haven’t logged into your Salesforce instance, now is the time you do.
After that, you will be redirected to an important screen. This screen allows you to choose the users that will have access to the Exalate app. You can decide to choose only admins, all users, or specific users only. For the specific profiles option, you will be prompted with a screen that has a list of all the available users and their permissions that you can set. Once confirmed with your choices click the “Install” button to proceed.
Note: You can change the user permissions you have set here anytime!
On the next screen, you can have to allow access to third-party websites. Click “Continue” to allow access.
This will successfully install Exalate on Salesforce and display the message “Installation Complete!”. It’s time to request an Exalate node for your Salesforce instance. To proceed click “Done”.
Back to your Salesforce environment, go to Apps and type Exalate in the search bar.
Click on the blue “Request Node” button. On the next screen, “Allow” access to Exalate with the necessary permissions.
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.
After you click “Agree and Submit”, a verification email will be sent out. For verification, open your email and click “Verify Exalate instance”.
Voila, your work here is done! You can now log in to your Salesforce Exalate instance by following these steps.
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.
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. On the left-hand submenu, select “Find new apps”. 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”.
Now click on the “Try it free” button.
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.
Now you are all set to start with your first connection.
The first thing you do when Exalate gets installed is to initiate a connection on one side and accept 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.
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. 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 for Salesforce 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:
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. 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”. You can now immediately start syncing your first issue by entering its key in the text box and clicking on “Exalate”. If this is done on the Salesforce side, you need to enter the Case number instead. 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 above. 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. Sit back and relax, you will soon get your first issue synced. This will successfully establish a Jira Salesforce integration in the Basic mode and you can already see your first synchronization status.
If you wish to use the Script mode, then select it and click “Next”. 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”. Exalate now generates an invitation code for you. Click on “Copy Invitation code” to copy it and save it someplace safe. 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”. 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”. 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.
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. 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. 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. 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.
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 with 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.
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. 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. 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. 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. 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.
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.
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.
- Jira to Jira Sync: How to Synchronize Multiple Jira Instances in 8 Steps
- Salesforce to Salesforce Integration: Sync Multiple Salesforce Instances Bidirectionally
- How to Set up a ServiceNow Jira Integration
- How to Set up a Jira Azure DevOps Integration
- How to Set up a Jira HP ALM Integration
- How to Set up a Jira Zendesk Integration
- Jira Github Integration
- Jira Integrations: Integrate Jira and Other Systems Bidirectionally