Confluence has been updated to version 6.15.9

JIRA SERVERJIRA CLOUDZENDESK

This article describes how you to impersonate a comment received from the remote instance. 

By default, Exalate adds a comment, received from the other side on behalf of the proxy user

The comment will look like the following:

You can change this behavior. For example, create the received comment with the original comment author. 

The comment object has a field Executor which can be set to any user. This is how you can impersonate synced comments.

Source side

Outgoing sync 

Send comments to the other side

replica.comments = issue.comments

Destination side

Jira

You can apply the received comment in different ways:

1. Assign original comment author if exists in the local system and create a new user if not found

This method works only for Jira Server.


Incoming sync

  • Check if the author of the comment exists in the local system by doing a user lookup
  • If the author does not exist in the local JIRA, create a new user
  • Assign this user as a comment executor

issue.comments = commentHelper.mergeComments(issue, replica, {
  comment ->
  
  def authorUser = userHelper.getByEmail(comment.author.email)
  
  // set the executor, optionally create the user if the local user is not found
  comment.executor = authorUser ?: userHelper.createUser(comment.author.username, 
                                                     "changeme", //password !
                                                     comment.author.email,
                                                     comment.author.displayName
                                                   )
  comment
})

2. Assign original comment author if exists in the local system, use the proxy user if not found

This method works for Jira Server and Jira Cloud.

Incoming sync

  • Change the comment executor from the proxy user to the original comment author 
  • If the author does not exist in the local JIRA, use the proxy user as an author

replica.addedComments.each { it.executor = nodeHelper.getUserByEmail(it.author?.email) }
replica.changedComments.each { it.executor = nodeHelper.getUserByEmail(it.updateAuthor?.email) }
issue.comments = commentHelper.mergeComments(issue, replica, { it })
Result

The first comment was created by the proxy user, while the second comment was impersonated and the local administrator is the comment executor.


 Zendesk 

Incoming sync 

replica.addedComments.each { it.executor = nodeHelper.getUser("361777654679") } // replace "361777654679" with the zendesk user id
issue.comments     += replica.addedComments

Check user fields sync for more details.