This page describes how to keep internal comments internal and restrict synced comments' visibility.
Exalate allows handing comments visibility based on a user group or role restriction.
Outgoing Sync - Send Comments
Jira Software
Jira Software allows limiting comments to users with certain project roles/groups. By default, JIRA is configured to allow restricting comment visibility to project roles only. You can restrict comment visibility to a certain user group or based on the user role.
- Send all comments to the destination side
replica.comments = issue.comments
- Don't send comments which have the user group/role security set
You can use filterLocal comment helper to filter out comments that you want to synchronize.
// ensure that only public comments are sent over to the remote instance replica.comments = commentHelper.filterLocal(issue.comments)
- Send all comments except the ones created by a user with the group level dev
replica.comments = issue.comments.findAll { it.roleLevel != "dev" }Jira Service Management
In Jira Service Desk you can create comments as internal or public.
- Send all comments to the destination side
replica.comments = issue.comments
- Send only public comments to the destination side
replica.comments = issue.comments.findAll { !it.internal }Incoming Sync - Handle Received Comments
Jira Software
Jira Software allows limiting comments to users with certain project roles/groups. You can add the incoming comment with a certain group/role level and change the existing comment's group/role level.
- Create local comments based on the remote comment visibility
issue.comments = commentHelper.mergeComments(issue, replica, {
comment ->
if (comment.internal) {
// if the remote comment is internal make it visible to only users with role "team"
comment.roleLevel = "team"
} else {
// remove all restrictions
comment.roleLevel = null
comment.groupLevel = null
}
comment
}
)Jira Service Management
You can handle incoming comments in different ways:
-
Add all comments received from the remote side as internal comments
This approach also works for Zendesk comments.
issue.comments = commentHelper.mergeComments(issue, replica, {it.internal = true; it})- Add comments received from the remote side as internal comments based on a specific group role
issue.comments = commentHelper.mergeComments(issue, replica, {
// make the comment internal, if the comment is visible only to the user role "team"
comment ->
comment.internal = comment.roleLevel == "team"
// collect the comments
comment
}
)Zendesk
- Add all incoming comments as Internal notes to the Zendesk tickets
issue.comments = commentHelper.mergeComments(issue, replica, {
comment ->
comment.internal = true
comment
}
)