For the complete documentation index, see llms.txt. This page is also available as Markdown.

Jira Salesforce Integration Guide

Learn how to set up a bi-directional Jira Salesforce integration in ZigiOps. Configure system instances, entity pairs, field mappings, and filters step by step.

This guide explains how to configure a bi-directional integration between Jira and Salesforce using ZigiOps. It covers adding system instances, selecting entity pairs, configuring correlation, building field mappings, applying filters, and testing the workflow. No scripting or coding is required at any stage.

For a full overview of the sync capabilities between the two platforms, see the Jira and Salesforce integration page on the ZigiWave website.

Overview

The Jira-Salesforce integration synchronizes records between your CRM platform (Salesforce) and your project tracking tool (Jira) automatically. When a record is created or updated in one system, ZigiOps reflects the change in the other system based on the workflow configuration.

Most common supported entity pairs:

Salesforce Entity
Jira Entity
Sync Direction

Case

Issue / Task

Bi-directional

Case

Bug

Bi-directional

Lead

Task

Salesforce to Jira

Opportunity

Task

Configurable

Custom Object

Task / Issue

Configurable

Case Comment

Comment

Configurable

Attachment

Attachment

Configurable

Priority

Priority

Mapped with conditions

Status

Status (text transition)

Mapped with conditions

Note: ZigiOps supports all standard and custom Salesforce objects. Contact support for entities not listed above or for more complex use cases: support@zigiwave.com.

Prerequisites

Before configuring this integration, confirm that the following requirements are met:

  • ZigiOps instance: installed and running. See the Installation guide.

  • Jira: a dedicated integration user account with API token access and project-level permissions.

  • Salesforce: an administrator account, or a user account with "Modify All Data" permission and API access enabled. The account must have access to all objects and fields included in the integration.

  • Salesforce Connected App: a Connected App must be configured in Salesforce to obtain the Client ID and Client Secret required for OAuth authentication. See the Salesforce system instance section below.

  • Custom fields: correlation fields must exist in both systems before configuring the workflow. See the Correlation section below.

  • Attachment sync (optional): Salesforce does not update the lastmodifieddate field when an attachment is added to a record. If attachment synchronization is required, a mechanism that updates lastmodifieddate on attachment creation must be implemented on the Salesforce side.

  • License: the ZigiOps license must include the Jira-Salesforce system pair.

1

Add System Instances

A system instance defines the connection between ZigiOps and a specific Jira or Salesforce environment. You must add one instance for each system before configuring a workflow.

Add a Salesforce System Instance

Salesforce uses OAuth 2.0 authentication. Before adding the system instance in ZigiOps, retrieve the Client ID and Client Secret from your Salesforce Connected App.

How to Find Your Client ID and Client Secret in Salesforce

  1. Log into your Salesforce instance.

  2. Navigate to Settings > Setup > Apps > App Manager.

  3. Click the View button for the desired Connected App.

  4. The Client ID and Client Secret are displayed in the Manage Application menu.

Add the Salesforce system instance in ZigiOps:

  1. Log into your ZigiOps instance.

  2. Navigate to Connected Systems > Add New System > Salesforce.

  3. Enter the following connection parameters:

    • URL: the base URL of your Salesforce instance (for example, https://example.lightning.force.com).

    • Username: the Salesforce integration user account.

    • Password: the password for the integration user.

    • Client ID: the Client ID from your Salesforce Connected App.

    • Client Secret: the Client Secret from your Salesforce Connected App.

    • Proxy Settings: configure if your environment requires routing traffic through a proxy.

  4. Click Save.

  5. Click Test Connection to verify that ZigiOps can reach the Salesforce API. If the test succeeds, available objects and fields are downloaded automatically.

ZigiOps UI - Adding Salesforce as a Connected System.

Add a Jira System Instance

  1. Log into your ZigiOps instance.

  2. Navigate to Connected Systems > Add New System > Jira.

  3. Enter the following connection parameters:

    • Server URL: the base URL of your Jira environment (for example, https://yourcompany.atlassian.net).

    • Username: the Jira user account ZigiOps will use for API calls.

    • API Token: generated in your Atlassian account settings under Security > API tokens.

    • Project Key: scopes the integration to the correct Jira project.

    • Proxy Settings: configure if your environment requires routing traffic through a proxy.

  4. Click Save.

  5. Click Test Connection to verify that ZigiOps can reach the Jira API. If the test succeeds, available fields and projects are downloaded automatically.

ZigiOps UI - Adding Jira as a Connected System.

Note: If the Test Connection fails for either system, verify that the integration user has the required API permissions and that the instance URL does not include a trailing slash.

2

Create or Load a Workflow

A workflow defines the complete configuration for your integration, including the entity pair, triggers, field mappings, filters, and correlation logic.

ZigiOps provides pre-built workflow templates for the most common Jira-Salesforce use cases. A template includes pre-configured field mappings for summary, description, and priority, as well as basic correlation and trigger settings. You can load a template and adjust it to match your environment, or create a custom workflow from scratch.

Option A: Load a Workflow Template

  1. Navigate to Configurator > Workflows > Add New Workflow.

  2. Select Load from Template.

  3. Locate the relevant Jira-Salesforce template. Commonly used templates include:

    • Salesforce Cases to Jira Tasks

    • Jira Tasks to Salesforce Cases

  4. Click Load and adjust the configuration as needed.

ZigiOps UI - Workflow template selection screen.

Option B: Create a Custom Workflow

  1. Navigate to Configurator > Workflows > Add New Workflow.

  2. Select Custom Integration.

  3. Assign a name to the workflow and proceed to configure each section as described in the steps below.

3

Select the Entity Pair

The entity pair defines which record types in each system will be synchronized. Select the combination that matches your use case.

Use Case
Salesforce Entity
Jira Entity

Customer issue tracking and development alignment

Case

Issue / Task

Bug tracking linked to customer reports

Case

Bug

Sales-driven feature or project requests

Opportunity

Task

Marketing or sales lead follow-up

Lead

Task

Custom business process synchronization

Custom Object

Task / Issue

For a fully bi-directional synchronization, configure at least two actions within the workflow: one to create and update Jira records from Salesforce records, and one to update Salesforce records when Jira records change.

ZigiOps UI - Entity pair selection screen.
4

Configure Correlation

Correlation is the mechanism ZigiOps uses to match existing records across systems during update cycles. It stores only unique identifiers, not business data. Without correlation, every sync cycle would create new records rather than updating existing ones.

You define which field in each system stores the unique identifier of its counterpart. Common patterns are:

  • Jira custom field (for example, "Salesforce Case ID"): stores the Salesforce Case ID or object ID of the linked record.

  • Salesforce field (for example, a custom field "Jira Reference"): stores the Jira issue key (for example, OPS-4512).

Create the required custom fields in each system before configuring correlation in ZigiOps. Once the fields exist, map them in the Correlation section of the workflow.

ZigiOps UI - Correlation configuration screen.

Note: ZigiOps supports one-to-one correlation by default. Each Jira record maps to exactly one Salesforce record. This prevents duplicate creation even if an event is processed more than once.

5

Configure Field Mappings

Field mappings define which fields are synchronized between the two systems and how their values are transformed. Mappings are configured separately for each action direction.

ZigiOps UI - Field Mapping table.

Minimum Required Field Mappings

Salesforce Field
Jira Field
Notes

Subject

summary

Direct text mapping

Description

description

Direct text mapping

Priority

priority

Requires conditional mapping if label names differ

Status

status (text transition)

Requires conditional mapping with Jira transition IDs

Case Comment

comment.body

Configure via Related Records. Apply author filter to prevent echo loops.

OwnerId

assignee

Map based on team structure

Id (Case ID)

Custom field: Salesforce Case ID

Used for correlation. Not displayed to end users.

CaseNumber

Custom field: Salesforce Reference

Human-readable cross-reference

Status Mapping

Salesforce Cases use a text-based Status field with values that are configurable per organization. Jira uses a Status field governed by workflow transitions. These must be mapped conditionally, not as a direct value copy.

Salesforce Case Status
Jira Status
Notes

New

To Do

Direct mapping

Working

In Progress

Direct mapping

Escalated

In Progress

Map to an Escalated status in Jira if available

On Hold

On Hold / Blocked

Map to custom Jira status if available

Closed

Done

Terminal state. Verify any required Jira resolution fields are sent.

Note: Salesforce status values are configurable per organization and may differ from the defaults above. Verify the exact status labels used in your Salesforce instance before configuring these mappings. When mapping Salesforce Closed to Jira Done, use the Jira transition ID rather than setting the status field directly to ensure workflow validators and required fields are respected.

ZigiOps UI - Status conditional mapping.

Priority Mapping

Salesforce uses a text-based priority field (High, Medium, Low). Jira also uses text-based priorities, but label names may vary between instances. Map values conditionally to ensure business impact is accurately represented.

Salesforce Priority
Jira Priority
Notes

High

High

Direct conditional mapping

Medium

Medium

Direct conditional mapping

Low

Low

Direct conditional mapping

Note: Verify the exact priority label names used in your Jira instance before configuring these mappings. Label names vary between Jira Cloud and Jira Data Center, and may differ per project. If your Jira instance includes a "Highest" priority level, map Salesforce High cases that are also marked Urgent or Critical to that value using a conditional mapping.

Comment Synchronization

Salesforce uses Case Comments for customer-facing and internal communication. Jira uses Comments. Syncing all Salesforce Case Comments to Jira without filtering may expose customer-visible notes to internal development teams, or vice versa.

Recommended comment mapping:

  • Salesforce Case Comment to Jira Comment: sync only comments relevant to the development team.

  • Jira Comment to Salesforce Case Comment: map developer updates back as Case Comments to keep customer-facing teams informed.

  • Author filter: exclude comments authored by the integration user to prevent echo loops.

  • Last Time expression: use {lasttimecomment} to collect only comments created after the last successful run.

Configure comment synchronization via the Related Records section of the field mapping configuration in ZigiOps.

6

Configure Triggers

Triggers define when ZigiOps collects data from the source system. ZigiOps supports two trigger types, which can be used together for the most reliable coverage.

Trigger Type
Mechanism
Recommended Use

Poller

ZigiOps queries the source system API on a configurable schedule (default: every 1 minute).

SLA monitoring, controlled sync cycles, systems without webhook support

Web Listener

ZigiOps registers an HTTP endpoint and waits for the source system to push data via webhook. Activated when the action is enabled.

Real-time status updates, case creation alerts, near-instant synchronization

Using both trigger types in combination is the recommended approach for production deployments. The Poller provides complete coverage; the Web Listener reduces latency for time-critical events.

ZigiOps UI - Trigger configuration.
7

Add Filters and Conditions

Filters control which records are collected and when. Without proper filtering, the integration may process records that should be excluded or miss records that need to be synced.

Common filter configurations for Jira-Salesforce workflows:

  • Last Time expression: collect only records created or updated since the previous run. Use the {lasttime} expression in the filter condition.

  • Environment scope: exclude records from sandbox or test Salesforce environments.

  • Priority threshold: sync High priority cases in real time; batch-sync lower priorities.

  • Author exclusion: filter out Case Comments authored by the integration user to prevent duplicate comment loops.

  • Record type scope: restrict collection to specific Salesforce record types or case origins (for example, only sync cases where Origin = Web or Email).

ZigiOps supports AND and OR logic, with operators including: is, is not, is one of, is not one of, is empty, is not empty, contains, does not contain, less than, greater than, and equals. Conditions can be applied to any field available from the connected system.

ZigiOps UI - Filter and Condition Builder.
8

Use Expressions for Data Transformation (Optional)

Expressions apply transformations to field values after data is collected from the source and before it is delivered to the target. They are configured in the Source and Target tabs of the workflow action and do not require any scripting.

ZigiOps UI - Expression configuration.
Expression
What It Does
Jira-Salesforce Example

Date and Time Format

Converts epoch timestamps to a human-readable string

Convert Salesforce CreatedDate to a readable format for a Jira custom field

First N Characters

Extracts the first N characters of a field value

Truncate long Salesforce case descriptions to fit Jira's 255-character summary limit

Pattern (RegEx)

Extracts a value matching a regular expression. Group 1 is returned if a capturing group is defined.

Extract a product version or error code from a Salesforce case subject line

Replace Text

Replaces a specific substring with another value

Replace internal account codes with product names before syncing to Jira

Replace Pattern (RegEx)

Replaces all matches of a RegEx pattern

Mask customer account numbers before syncing case descriptions

Build Array

Combines multiple values into a comma-separated array

Aggregate multiple Salesforce case tags into a Jira label array

Last Time

Stores the timestamp of the last successful run; auto-increments on each execution

Collect only records updated after {lasttime} to prevent duplication

To Lower Case / To Upper Case

Normalizes text casing

Align status or category values that differ only in casing between systems

9

Test and Activate the Workflow

Before activating the workflow in production, test each action individually using the built-in troubleshooting tools.

Testing Tools Available in ZigiOps

  • Real-time operation logs: show every record collected, processed, and delivered.

  • Payload inspector: displays the raw data sent to and received from each system, useful for debugging field mapping issues.

  • HTTP request and response data: provides API-level details for connectivity troubleshooting.

  • Error classification: distinguishes between mapping errors, connectivity issues, and API rejections.

To activate the workflow:

  1. Run the workflow in test mode against a non-production record.

  2. Verify that the target record is created with the correct field values.

  3. Check the Activity Log for any errors or unexpected field values.

  4. Once results are confirmed, set the workflow status to Active.

ZigiOps Dashboard - Monitoring view.

Advanced: Governance and Reliability

The following practices apply to production deployments and regulated environments.

Idempotency via Correlation Lookup

Before any write operation, ZigiOps checks whether a correlated record already exists in the target system. If one exists, it performs an update. If none exists, it creates a new record. This two-path logic prevents duplicate records when events are reprocessed after a failure or retry.

Retry Logic

Failed operations caused by transient API errors (rate limits, maintenance windows, network interruptions) are retried automatically. ZigiOps distinguishes between transient failures (retried) and permanent failures (logged and surfaced in the Activity Log). Retries do not create duplicate records due to the correlation lookup described above.

Governance Recommendations

Practice
Why It Matters
How ZigiOps Supports It

Define integration ownership

Someone must be accountable for mapping logic and change testing

ZigiOps provides user-level access control and admin roles

Test changes in staging first

Untested mapping changes can silently misbehave in production

ZigiOps supports multiple environments; test before activating

Export and version integration templates

Integration configurations should be treated like production code

Export templates and store in a version control system

Monitor operational health continuously

Silent failures are as damaging as loud ones

ZigiOps provides dashboards with real-time error tracking and operation metrics

Audit comment and attachment sync rules

Customer-visible notes may be exposed to internal teams if filters are missing

Use conditional mapping and author filters to enforce data classification

Troubleshooting

Issue
Likely Cause
Resolution

Fields are missing from mapping suggestions

The system schema was not refreshed after new fields were added

Navigate to Connected Systems, select the system, and click Save to re-download the schema

Duplicate Case Comments appear in Jira

Integration user exclusion filter is missing, or {lasttimecomment} expression is not configured

Add a trigger condition excluding the integration user as comment author; configure the {lasttimecomment} filter

Salesforce record fails to update when Jira changes

The correlation field in Salesforce is empty or not correctly mapped

Verify that the Respond Mapping writes the Jira issue key to the Salesforce correlation field after record creation

Jira status does not update after a Salesforce status change

The mapping is setting the status field directly rather than using a Jira workflow transition ID

Replace the status field value with the correct Jira transition ID in the mapping configuration

Attachments are not being collected from Salesforce

Salesforce does not update lastmodifieddate when attachments are added

Implement a Salesforce trigger or flow that updates lastmodifieddate on the parent record when an attachment is added

Workflow saves but fails to activate

A mandatory configuration field is missing, or the license does not include the Jira-Salesforce pair

Review the error message in the UI; verify the license status under Admin > About

OAuth authentication fails on Salesforce connection

Client ID or Client Secret is incorrect, or the Connected App does not have the required OAuth scopes

Verify the Connected App configuration in Salesforce and confirm that API access is enabled for the integration user

Last updated

Was this helpful?