Confluence has been updated to version 6.15.9

JIRA SERVER JIRA CLOUDCONFLUENCE CLOUD

Watchers field is one of the standard fields of an issue. You can synchronize it as any other issue fields.

This article provides description and scripts that help you to synchronize issue watchers and create new users if they do not exist on the destination side.

The Exalate has a helper method to create users with no permissions. Use this method to sync the watchers list.

More details about watchers issue field.

Source side

 Outgoing sync

 Send watchers 

 replica.watchers = issue.watchers

Destination side  (Jira Server)

Add the code below to the Incoming sync to create users if they don't exist on the receiving side.

// WATCHERS SYNC
issue.watchers = replica.watchers.collect { w ->
    def _localW = nodeHelper.getUserByEmail(w.email)
    if (_localW == null) {
        // We create a user with no permissions, and with randomly generated password
        return nodeHelper.createUser(
            w.username,
            scala.util.Random$.MODULE$.alphanumeric().take(12).mkString(), 
            w.email, 
            w.displayName
        )
    }
    _localW
}
// END: WATCHERS SYNC 

Destination side  (Jira Cloud/Confluence Cloud)

There's no API on Jira Cloud to create users if they don't exist.

Exalate can lookup local users in different ways:

  • by email, if the user email is not hidden in the Atlassian account settings
  • by user accountID if the user email is hidden in the Atlassian account settings


Incoming sync

Set local watcher based on the received user data from the remote side. If the user is not found locally then don't set any value.

// WATCHERS SYNC
issue.watchers = replica.watchers
        .collect { w ->
    def _localW = nodeHelper.getUser(w.key)
    if (_localW == null) {
        throw new com.exalate.api.exception.IssueTrackerException(
                “Could not find user `${w.key}`”
        )
    }
}
// END: WATCHERS SYNC

Updating watchers on Jira Cloud does not trigger Exalate synchronization event. It means that watchers will sync with the next issue update like new comment, description or other fields update.