Jira and Zendesk Integration

    Companies using Jira can collaborate with teams or organizations using Zendesk to improve the quality of product and service delivery.

    This involves getting both systems to interact with each other and then syncing the correct fields and entities to get data flowing based on configurations and use case requirements.

    A tool like Exalate allows you to set up a Jira Zendesk integration with minimal fuss. It is also compatible with Jira Service Management, Jira Software, Jira Product Discovery, Jira Work Management, and other Jira products. It also supports on-premise and Docker deployment.

    Exalate Ramp-up and Configuration Steps 

    Here is a brief overview of how to configure an integration between Zendesk and Jira. 

    Create an Account or Log In to Existing Account.

    1. Navigate to the Exalate app.
    2. You can sign up using Google (SSO) with a company email or create your own account.
    3. Click Create an account to submit your information (business email address, first name, last name, strong password).
    4. Confirm your password and click on Create an account to proceed.
    5. Verify Your Email: Check your email inbox for a verification message from Exalate. The verification link expires after 2 hours.
    6. Click the verification link in the email. You'll be redirected to complete your account setup
    7. Log in to New Exalate with your email and password. 

    Create a Connection Between Jira and Zendesk

    1. Log in to your account.
    2. Click Add Connections > Create New Connection.
    3. The connection creation wizard opens, guiding you through a 5-step process.
    4. To configure System A (Jira):
      1. Enter the system URL [https://example.atlassian.net].
      2. A console status check runs automatically.
      3. If the system is already part of your workspace, you'll see a confirmation message and can skip authentication.
      4. If the system is new, authentication fields appear automatically.
    5. To authenticate System A (Jira): Go through Jira Cloud OAuth authentication.
      1. Click Check Authentication and wait for validation. If you have multiple Jira sites, choose the one you want to use for this connection. Once successful, the Next button becomes active.
      2. Click Next to proceed to System B.
      3. To configure System B (Zendesk), follow the same steps as System A:
      4. Enter the system URL for your second system.
      5. Wait for automatic system type detection.
      6. Provide authentication credentials (API key for Zendesk)
      7. Click Check Authentication to verify.
      8. Click Next to continue.
    6. Name your connection using a unique, descriptive name. Eg., “Jira-Zend-ProductTeam”
    7. If the name already exists, you'll see an error message prompting you to choose a different name.
    8. Add a brief description to help identify the connection's purpose, such as "Sync product development tasks between Jira and Zendesk."
    9. Click Next to review your configuration.
    10. Review the details of your connection. Confirm the connection name and description.
    11. Click Create Connection to begin the setup process.
    12. Exalate automatically registers your systems and establishes the connection. You'll see real-time updates as the process completes.
    13. When the process completes, you'll see a success message, and your connection status will change to "Ready to configure."
    14. Once your connection is created, choose which projects to sync between your systems.

    Note: If the concept of a project does not exist in the given system, this modal will not be shown. 

    Configure Your Bidirectional Jira to Zendesk Connection

    Here, you have two options: Quick Sync and Edit & Test.

    The Quick Sync option allows you to sync one item between Jira instances.

    1. Under the “Item sync monitor,” enter the work item key and click on the “Sync Now” option.
    2. To link 2 existing items, click “Link with existing”.
    3. Once the sync is complete, you can view both the synced issues in a new window. You can also choose to compare the changes.
    4. To use the Edit & Test Sync option, follow these steps.
      1. Navigate to your Workspace and locate the connection in the Connections list.
      2. Click on the connection name or the Edit button to open the configuration page. 
      3. Once on the connection configuration page, you’ll see the current sync rules.
      4. To make changes, create a new version or select Open latest draft. This ensures you don’t modify the active configuration directly.
    5. Click the Edit button to open the editor:
      1. Edit sync rules using Aida (the outgoing script will hold the values passed from Jira A to Jira B, and the incoming sync will define how the values coming from Jira B are mapped in Jira A).
      2. Click Save Script to save the version or Start Test Run to test your configuration.
      3. Click Publish Version if you want to activate the configuration.
    6. Click the Switch Direction button to modify the sync rules for the opposite flow (for instance, if you want the incoming script of Jira and the Outgoing script of Zendesk). This will create a new version (or draft) for that direction, which also needs to be reviewed and published.
    7. All configuration versions for a connection are available under the Version dropdown below the connection name.
    8. Versions have the following statuses:
      1. Active: The currently published configuration.
      2. Draft: An editable copy of the Active version
      3. Archived: When a new version is published, the previous Active version is archived. Restore an archived version by selecting Restore version.

    AI-Assisted Configuration with Aida

    • Navigate to your connection
    • Click Add new version (or open the latest draft version)
    • Click Edit to enter the script editor.
    • In the Aida input field, type your request in plain language.
    • Click the send button (or press Enter).
    • Aida will begin drafting your script.
    • Review the suggested changes. Green highlights show new lines to add, red highlights show lines to remove.
    • Click Insert to accept or Discard to reject.
      • For Outgoing scripts: Describe what data should leave your system. For example, "Exclude attachments and sync high-priority issues."
      • For Incoming scripts: Describe how incoming data should be applied to your system. For example, "Map statuses and custom fields."

    Note: While Aida is helpful, always review the generated code before applying it to production.

    Test Run: Validate Before Production

    Once sync scripts are ready, click "Start Test Run" to validate them.

    1. Select the items you want to test (you can select multiple). Click "Start Test Run" to preview how the configuration will be applied.
    2. Review incoming and outgoing replicas for each test item. Verify field mappings look correct. If needed, go back, adjust scripts, and test again.
    3. Deploy only when confident that everything works correctly. Click "Publish Version" to apply the updated configuration to live synchronization.

    Automate Jira Zendesk Integration Using Triggers

    Triggers determine which items automatically sync based on conditions you define.

    1. Click "+ Add trigger" to create a new trigger.
    2. Add trigger conditions with platform-specific trigger syntax:
      1. Jira Query Language (JQL): project = SUPPORT AND priority in (High, Highest).
      2. Zendesk advanced search syntax: status<solved priority:high
    3. Activate triggers by toggling them on. Save changes by publishing.

    Troubleshoot with Aida

    1. Navigate to the “Troubleshooting” tab in your workspace.
    2. Hover over any error and click the Aida icon for immediate analysis. Aida shows affected systems, connections, and work items, plus a brief explanation of the error.
    3. For deeper investigation, click “Error Details” to view the impact level, stack trace, error type, and occurrence date. Aida diagnosis interface with error details
    4. Use “View Full Analysis” for complete context. Once you’ve resolved the issue, click “Resolve” to clear the error.

    Your integration is now active. Synchronization runs automatically based on your configured sync rules and triggers.

    Advanced Jira and Zendesk Integration Use Cases (Using Aida)

    Exalate supports AI-powered Jira integration with Zendesk thanks to the scripting engine in the configuration panel.

    It also provides several Script Helpers to reduce the effort of scripting connections from scratch.

    Here are some use cases for Zendesk integration with Jira.

    Use Case 1: Map and Sync Statuses between Jira and Zendesk

    If you want the status of a Jira work item to be reflected in the corresponding Zendesk ticket, you need a scripting rule to make sure the correct statuses are mapped on both sides.

    For instance, if the Jira status is To Do, the Zendesk ticket status changes to Pending. When the Jira status is In Progress, the Zendesk incident should be Open. When the Jira work item is Done, the Zendesk ticket should be marked Solved.

    Enter the code snippet or script mapping you want for your use case, or use Aida to generate the code by typing in a detailed prompt describing what you want to sync.

    The prompt to Aida can be something like this:

    "I want to map the statuses of a Jira work item and a Zendesk ticket so that when the Jira work item is "To Do", the Zendesk ticket will be "Pending", when the Jira work item status is "In Progress", the Zendesk ticket will have a status of "Open", and when the Jira work item is marked "Done", the Zendesk ticket will have a status of "Resolved". This should be on the incoming side of the Jira connection."

    Go through the generated output to confirm if it aligns with your expectations. You can continue refining the prompt until you nail down the requirements for your Zendesk and Jira integration.

    def statusMapping = [ "To Do" : "Pending", "In Progress" : "Open", "Done" : "Resolved"]def remoteStatusName = replica.status.nameissue.setStatus(statusMapping[remoteStatusName] ?: remoteStatusName)
    Click Discard if the generated code is incorrect. If the generated script is correct, click Insert Changes. Once you're satisfied with the scripting, click Publish to save and implement changes.

    Use Case 2: Sync Custom Fields to Merge Multiple Zendesk Tickets to One Jira Work Item (And Vice Versa)

    To sync multiple Zendesk tickets to one Jira work item, you need to set up a custom field in Jira to store the Jira work item key.

    Here is the code snippet generated by Aida for the Jira incoming sync.

    replica.customFields."Target Issue Key" = issue.customFields."Target Issue Key"
    You can discard, accept, or refine the prompt to nail down the specifics of your use case.

    Next, you need to write a script to fetch data from all linked tickets based on their respective keys stored in the custom field.

    The code snippet in the Jira outgoing sync should look like this:

    def remoteIssueUrn = replica.customFields."ABC-123"?.value if(remoteIssueUrn && firstSync){def localIssue = httpClient.get("/rest/api/2/issue/"+remoteIssueUrn) if(localIssue == null) throw new com.exalate.api.exception.IssueTrackerException("Issue with key "+remoteIssueUrn+" was not found") issue.id = localIssue?.idissue.key = localIssue?.keyreturn;}
    The Jira work item ID from the Zendesk custom field "Jira Ticket #" is saved in the remoteIssueUrn variable. The httpClient.get() method fetches the details of the Jira work item.

    If the Jira work item is not found, then an "Issue not found" exception is raised. However, if the Jira work item exists, then set the Jira work item ID to the localIssue ID.

    By the same token, you can sync multiple Jira work items to a single Zendesk instance. Say multiple teams are using a single Zendesk instance, but you want to sync with multiple Jira instances.

    Specify the fields from Zendesk to go to each Jira instance, as well as the automated triggers for the sync.

    Map ticket separately and set trigger conditions to control and automate the synchronization.

    Use Case 3: Sync Side Conversations between Jira and Zendesk

    Within a Zendesk ticket, the agent can start a side conversation with a developer on the Jira side, which will create a separate work item geared toward that specific topic. Subsequent replies will appear as comments under the newly created work item.

    To get this working, you need to set up macros and triggers in your Zendesk instance.

    Use Case 4: Sync Priority between Zendesk and Jira

    Your Zendesk Jira integration setup can help you automatically replicate the priority of tasks on both sides to convey the importance of the ticket or work item.

    Instead of manually changing the priority on both sides, a simple script can ensure that both systems obtain the updated priority level in real time.

    Here is a sample prompt:

    "I want to sync Jira work item priority to match the Zendesk priority so that the mapping will be "Critical" to "High", "Medium" to "Medium", and "Minor" to "Low"."

    Here is the code snippet generated by Aida for the Jira incoming side.

    def priorityMapping = [ "Critical" : "High", "Medium" : "Medium", "Minor" : "Low"]def remotePriorityName = replica.priority?.nameissue.priority = nodeHelper.getPriority(priorityMapping[remotePriorityName] ?: "Medium")

    You can discard, accept, or refine the prompt to nail down the specifics of your use case.

    If you have a specific use case to discuss, book a demo with our engineers.

    Note: The code snippet might not work precisely as intended due to changes to the environment or other reasons. If you encounter any problems, contact us for clarification.

    Supported Jira and Zendesk Entities

    Check out the comprehensive list of supported Zendesk entities as well as the comprehensive list of supported Jira Cloud and On-premise entities.

    This is a sample mapping between Zendesk incidents and Jira work items:

    Zendesk ticket <> Jira work item

    • summary/subject ↔ summary

    • description ↔ description

    • priority ↔ priority

    • state ↔ status

    • requester ↔ reporter

    • comments ↔ comments

    • attachments ↔ attachments

    • tags ↔ labels

    • custom fields ↔ custom fields

    • third-party plugin fields

    • any field available via REST APIs

    Other Resources

    • Start a free trial with Exalate here, or book a call with our integration engineers to discuss your use case. 

    • Using Exalate Classic? View its documentation here. Learn more about the difference between Exalate Classic and New Exalate. 

    • Visit our Trust Center for more security information.

    • Have configuration-related questions? Get answers on the Exalate Community.

    • Join our latest Webinar series: The Sync Room to get answers to your integration painpoints, the latest AI trends in the integration space, and much more.