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 – also with AI-assisted 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?
- How to Choose the Right Tool for a Jira Salesforce Integration
- How to Set up a Jira to Salesforce Integration
- Common Use Cases
Why do you Need a Jira Salesforce Integration?
Today’s global teams often collaborate 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.
In 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 not only streamlines communication, but also reduces 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 automate their business processes end-to-end.
For all of these reasons, it is important to consider a Jira Salesforce integration. With this integration, information can be passed between teams automatically in real time and consistently 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.
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.
Flexibility
Business and customer requirements evolve and change over time. The data you synchronize currently might not need synchronization next year. Or 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 configuring 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.
And now with AI and its integration into our day-to-day tools, it’s a requirement for an integration solution to provide AI-powered integration for better flexibility.
You never know what type of use case you need to implement tomorrow, so better to be safe from day one.
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.
Reliability
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: a Flexible Jira Salesforce Integration Solution
Exalate inherently supports decentralized integration. 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. And it is ISO 27001 certified.
You can learn more about Exalate’s security in Exalate’s security architecture whitepaper.
Plus, its Groovy-based scripting engine and different configuration mode (including the AI-assisted Script mode) ensure enhanced flexibility.
You can have a look at how to sync multiple related Salesforce objects to Jira to get an idea about the capabilities of Exalate’s scripting engine.
Now let’s have a look at how a step-by-step Jira Salesforce integration can be implemented using Exalate.
How to Set up a Jira to Salesforce Integration
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.
Note: You can also refer to this Getting Started guide for a step-by-step tutorial on setting up a Jira 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 records 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
To install Exalate on Salesforce, you can either request your free trial to get assistance from a dedicated team of experts.
Or you can directly install the app from either the AppExchange marketplace or as a Salesforce connector for Jira from the Atlassian Marketplace.
In Salesforce, you first need to choose the environment to install Exalate. It’s either 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.
Click “Install” to proceed.
On the next screen, you need to allow access to third-party websites.
Click “Continue” to allow access.
That’s it! You’ve successfully installed Exalate on Salesforce.
It’s time to request an Exalate node for your Salesforce instance.
But first, you need to create a connected app. You can find the procedure to create it on this page.
Keep the Consumer Secret and Consumer Key from the Connected app handy. You will need it for the next steps.
To request an Exalate node go to Apps in your Salesforce instance, and type Exalate in the search bar.
Paste the Consumer Key and Consumer Secret from the connected app here and click “Request Node”.
Click “Allow” for the necessary permissions to the Exalate node.
Then proceed to add a new trusted URL.
Go to the Salesforce Setup page and search for Trusted URLs.
Add a new one with the following details:
- API Name: free input string
- URL: *.exalate.cloud
Check all the boxes in the CSP Directives section and click Save.
Now, it’s time to configure the Exalate node.
For this, fill in your contact information in the registration form you’ll receive via email. It’s a form where you will be asked to fill in your basic information.
After you click “Agree and Submit”, a verification email will be sent out. 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 setting up your first connection (Step 3) or proceed to install Exalate on Jira (Step 2).
Step 2: Install Exalate on Jira
Installing Exalate on Jira is pretty straightforward. You can do it either by searching Exalate Jira Issue Sync, AI-assisted integration & more on the Atlassian marketplace or by requesting a free trial.
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, 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”.
Click “Try it free”.
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. A few pop-ups will display the progress of the installation.
After a while, click on the “Get Started” button.
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 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 uniformity in terms of its interface across all platforms, so you don’t have to worry about where to start.
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, 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.
The 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 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’s script mode is AI-assisted. Keep reading to learn more about how it can simplify your work.
After a successful verification, you will be automatically redirected to 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, 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 till the issue is synced.
Sit back and relax, you will soon get your first issue synced. Continue with the AI-Assisted Script Mode
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.
On the Jira side, open up the “Connections” tab in the Exalate Admin console.
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.
Now if you’d like to offload most of the work to Exalate’s AI Assist, try the chat window that appears in both your incoming and outgoing sync rules tabs. Just type your sync requirements into the chat and let AI Assist generate the scripts for you.
The scripts based on your input, existing configurations, and Exalate’s scripting API.
Note: Be mindful that AI Assist, just like any other AI, can make mistakes. So try to be as precise and detailed as you can with your prompts.
You can accept or reject the AI’s suggestions. And you can always refine your prompt if needed.
Once everything looks right, be sure to publish your changes.
Learn more about AI Assist in the Exalate’s documentation.
Watch this short snippet from a recent webinar to see it in action:
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.
Once you click the edit connection icon, you’d see four tabs.
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 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 text boxes, 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.
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 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.
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. 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.
Make sure you activate the trigger by clicking the checkbox. The trigger will work only when it is in the active stage.
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.
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 the UI of a project is handled in Jira. The sales team always has all the necessary details about 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, user mentions, and status updates of the issue can then be viewed on both the integrated applications. 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 issue status can be tracked within Salesforce without the sales team having to contact the developers every time they need a status update. You can even sync any other required custom fields between these platforms.
The product updates maintained and tracked by the development team in Jira can also be synced to Salesforce so the sales team knows 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, or tracking sales deal progress, they might benefit from a Jira Salesforce integration.
Such tasks, if synced with Salesforce, can help the sales team get real-time updates on deals and streamline their licensing and contracting tasks.
You can even sync multiple related Salesforce objects, like Contact & Account linked to a Case over to Jira so your backend team has all the information they need.
Note: If you have a specific use case in mind, you can discuss it in a free demo with an integration expert.
Conclusion
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:
- 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 Zendesk Integration
- Salesforce Integrations: Integrate Salesforce and other Tools
- Jira GitHub Integration