How can I configure Exalate so that comments from our Jira Software project sync into Jira Service Management as internal only, while ensuring that only internal JSM comments sync back to Jira Software (and public/customer-facing comments stay in JSM)?

How can I configure Exalate so that comments from our Jira Software project sync into Jira Service Management as internal only, while ensuring that only internal JSM comments sync back to Jira Software (and public/customer-facing comments stay in JSM)?

Context:

  • We’re syncing between a CareCubed Discovery board (JSM) and a Project board (Jira Software).

  • In JSM, agents add both internal notes and public replies to customers.

  • In JSW, there’s no concept of public vs. internal comments — all comments are just comments.

Our goals are:

  1. Discovery (JSM) → Project (JSW): Only internal JSM comments sync. Customer-visible comments should never leave JSM.

  2. Project (JSW) → Discovery (JSM): All dev comments sync, but they should always appear as internal in JSM, never public.

What’s the best way to set up the outgoing/incoming rules in Exalate to achieve this safely?

Great question! You can achieve this with Exalate’s Script mode by customizing your sync rules to filter and set comment visibility based on the direction of the sync and the type of comment. Here’s how you can set it up:

1. JSM → JSW: Only sync internal comments

In your JSM (Discovery) outgoing sync, filter comments so only internal ones are sent:

replica.comments = issue.comments.findAll { it.internal }

In your JSW (Project) incoming sync, just assign the comments as usual:

issue.comments = replica.comments

This ensures only internal JSM comments are ever sent to JSW.


2. JSW → JSM: All comments from JSW become internal in JSM

In your JSW (Project) outgoing sync, send all comments:

replica.comments = issue.comments

In your JSM (Discovery) incoming sync, set all incoming comments as internal:

issue.comments = replica.comments.collect { 
    def c = it.clone()
    c.internal = true
    return c
}

This way, every comment from JSW will always be added as an internal note in JSM, never visible to customers.


Summary of the flow:

  • JSM → JSW: Only internal comments sync.
  • JSW → JSM: All comments sync, but always as internal notes.

For more details on comment handling and scripting, check out the Exalate documentation on syncing comments between Jira instances and Script mode basics.

This setup keeps customer-facing comments private in JSM, while ensuring dev discussions flow both ways as internal notes.