Salesforce Outgoing Script - Salesforce Chatter Comments Not Syncing to Jira Comments

Originally asked by Kaleigh Garcia on 15 October 2024 (original question)


Hello Exalate Community**,**

I’m running into an issue where my Chatter posts from Salesforce aren’t syncing to Jira as comments, despite having set up an outgoing script in Salesforce and an incoming script in Jira. The strange part is that the reverse setup (syncing comments from Jira to Salesforce Chatter) works perfectly using the script and instructions provided here.

Setup Details

I’m using a Tech_Item__c custom object in Salesforce and am trying to sync Chatter comments to Jira. The Salesforce outgoing script includes logic to:

  • Pull Chatter comments with the author’s name
  • Filter attachments, adding them to the replica to sync with Jira

What I’ve Tried

  1. Active User Status: Confirmed that the Salesforce user creating Chatter comments is active.
  2. Exalate Logs: Checked Exalate logs on both sides (Salesforce and Jira) and found no errors.
  3. Jira Permissions: Verified that the project and issue permissions in Jira allow for comments to be created and viewed.
  4. Script Simplification: Tested a simplified script with basic text-only comments, but still didn’t see any results in Jira.

Working Example (Jira to Salesforce)

The comments sync from Jira to Salesforce without any issues using the example script provided in this guide.

Questions

  • Has anyone else encountered issues specifically with syncing comments from Salesforce to Jira?
  • Are there any specific configuration settings or additional fields that might need to be mapped for Chatter comments to appear correctly in Jira?

Any guidance would be greatly appreciated!

Here’s the Salesforce outgoing script excerpt:

if (entity.entityType == "Tech_Item__c") {
    replica.key         = entity.Id
    replica.summary     = entity.Name
    replica.description = entity.Description__c
    replica.attachments = entity.attachments
    replica.Status      = entity.Status__c

    replica.comments = entity.comments.inject([]) { result, comment ->
        // Retrieve and format the author's name
        def res = httpClient.get("/services/data/v54.0/query/?q=SELECT+Name+FROM+User+WHERE+Id='${comment.author.key}'")
        if (res && res.records && res.records.size() > 0) {
            def authorName = res.records[0].Name
            comment.body = nodeHelper.stripHtml("${authorName} commented: ${comment.body}")
            result += comment
        }

        // Retrieve replies to comments from Chatter feed
        def feedResponse = httpClient.getResponse("/services/data/v54.0/chatter/feed-elements/${comment.idStr}")
        if (feedResponse && feedResponse.body.capabilities?.comments?.page?.items) {
            feedResponse.body.capabilities.comments.page.items.each { reply ->
                def replyUserRes = httpClient.get("/services/data/v54.0/query/?q=SELECT+Name+FROM+User+WHERE+Id='${reply.user.id}'")
                if (replyUserRes && replyUserRes.records && replyUserRes.records.size() > 0) {
                    def replyAuthorName = replyUserRes.records[0].Name
                    def c = new com.exalate.basic.domain.hubobject.v1.BasicHubComment()
                    c.body = "${replyAuthorName} commented: ${reply.body.text}"
                    c.id = reply.id
                    result += c
                }
            }
        }
        result
    }
}



Answer by Kaleigh Garcia on 24 October 2024

Exalate may need to consider adding an optional paragraph as it mentions that an Incoming Script is not required to accept Jira comments into the Comment section. However, I found that I needed to add the script below for the configuration to work as expected.

issue.comments = replica.comments.collect {
    def comment = new com.exalate.basic.domain.hubobject.v1.BasicHubComment()
    comment.body = it.body
    comment.author = nodeHelper.getUser(it.author.key)
    return comment
}



This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.