Tested Request Type Defect: Didn’t work as expected - Performed end-to-end analysis and provided a detailed explanation below to support troubleshooting and ensure clarity of the issue.
Zendesk ticket was created with Request Type: Defect.
Expected Behavior:
A Jira issue should be created as Bug
No assignee should be set on the Jira side, and assignee sync should be disabled in both directions
Status sync between Jira and Zendesk is not required, only Jira Status → mapped to Zendesk custom field “Jira Status”
The following fields should sync:
Subject
Comments (Jira ↔ Zendesk, as Internal Comments only)
Priority, Severity, Tags
Fix Versions (if present)
Comments should continuously sync in both directions (as internal comments), for “Defect” type tickets regardless of status
Issue Observed:
A Zendesk ticket was created with requester and assignee set to Grishma (not part of DevOps/Cloud Services). After selecting Exalate, the sync status briefly showed “Waiting for remote”, then reverted to “Not synchronized”. No Jira issue was created, and no error was displayed.
/*
Uncomment these lines if you want to send the full list of versions and components of the source project.
replica.project.versions =
replica.project.components =
*/
/*
Custom Fields (CF)
How to send any field value from the source side to the destination side.
1/ Add the value to the replica object using the Display Name of the specific field.
2/ Uncomment this next statement out and change accordingly:
replica.customFields.“CF Name” = issue.customFields.“CF Name”
*/
In regards to the previous issue, A second test was performed with both reporter and assignee set to myself (DevOps team). This time, a Jira issue was created via manual Exalate, but:
Severity values in Jira did not match those in Zendesk
Fix Versions field (set to “na” in Jira) did not sync back to Zendesk
The Jira issue was manually assigned to Chris , and this update was synced back to Zendesk assigning the ticket to him. This is not expected behavior for Defect type tickets, where assignee sync should be disabled .
While attempting to close the Zendesk ticket, the following error was encountered, despite all required fields being present. I also tried using “Resolve & Retry”, but the error persisted.
This issue appears to be isolated to this specific ticket, as the error has not occurred with others. It may be a one-off glitch, but logging it here for investigation.
Issue: Linking Multiple Zendesk Tickets to One Jira Ticket:
I attempted to link multiple Zendesk tickets to a single Jira ticket using the “Connect” option under Exalate on the Zendesk side. I provided the Jira ticket number I wanted to link to, and the connection was established successfully.
However, I noticed that the Jira ticket number did not appear in the “Dev Reference” field on the Zendesk side after the link was created.
Initially, I thought entering a Jira ticket number directly into the “Dev Reference” field would automatically trigger Exalate and sync the ticket, but I understand now that it doesn’t. Manually using the Connect option works fine, but the Dev Reference field not updating is still an issue and needs to be looked into.
EET Issue - Tested Scenario:
“Enhancement” request type in Zendesk should create a ticket in the Jira project EET. Issue Observed:
This did not work as expected. A Zendesk ticket was created with the requester and assignee set to Grishma (not part of the DevOps/Cloud Services team). After selecting Exalate, the sync status briefly showed “Waiting for remote”, then quickly reverted to “Not synchronized”.
No Jira issue was created, and no error message was displayed.
I see that you have only shared the ‘Outgoing Sync rule’ from Jira cloud side.
Could you please also share ‘Incoming Sync rule’ from Zendesk, and ‘Outgoing Sync rule’ as well as ‘Incoming Sync rule’ from Jira cloud side?
I see that you have this code line into your Jira - Outgoing Sync rule and please ensure that the codeline for ‘Assignee’ is not provided into Incoming Sync rule on Zendesk side, and vice-versa.
//(Sample code snippet)
if (firstSync) {
issue.projectKey = "TP"
// Extract all labels as lowercase text
def labels = replica.labels.collect {
it.label?.toLowerCase()
}
// If one of the labels is 'defect', set issue type to Bug
if (labels.contains("defect")) {
issue.typeName = "Bug"
} else {
// Otherwise use mapped type or default to Task
issue.typeName = nodeHelper.getIssueType(replica.type?.name, issue.projectKey)?.name
?: "Task"
}
}
You can completely remove this codeline from:
Jcloud and Zendesk - Outgoing:-
replica.assignee = issue.assignee
Zendesk - Incoming:-
if (!closedStatus.contains(Jirastatus)) {
issue.assignee = nodeHelper.getUserByEmail(replica.assignee?.email)
}
And you also have this snippet that you can remove as you don’t want to sync ‘Assignee’ field in both direction and in any case.
Jira - Incoming:-
// This is to ignore the assignee if the type is Bug or Enhancement
List ignoreAssignee = [“Bug”, “Enhancement”]
if(!ignoreAssignee.contains(issue.typeName)){
// If it’s not a Bug or Enhancement, you can set the assignee from Zendesk
issue.assignee = nodeHelper.getUserByEmail(replica.assignee?.email) // Modify this logic if you want to apply specific assignee rules
}
I don’t find script rule for ‘Priority’ and ‘Severity’ fields. However, here are the relevant docs that can help you configure both the fields.
Please find these helpful thorough docs for how to synchronise and filter the comments between Zendesk and Jira cloud.