Problem

 User fields don't sync: assignee, reporter, watchers, voters, custom fields of type user.

Synchronization works, no specific errors raised by Exalate. When syncing issue remain unassigned, the reporter field is empty.

Cause

 Due to major changes to Jira Cloud REST APIs which improve user privacy, we updated getUser nodeHelper method. Now it relies on the accountId for Jira Cloud.

Solution

You need to replace nodeHelper methods in the Sync Rules.

For Jira Cloud 

Replace nodeHelper.getUserByUsername to nodeHelper.getUser

If the source side is Jira Cloud

Add the code below into the  Incoming sync(create/change processor) on your side.

// set local assignee the same as remote using remote user accountId
issue.assignee = nodeHelper.getUser(replica.assignee.key)

Add the code below into the  Incoming sync(create/change processor) on your side.

// set local reporter the same as remote using remote user accountId
issue.reporter = nodeHelper.getUser(replica.reporter.key)


If the source side is Jira server

Add the code below into the  Incoming sync(create/change processor) on your side.

final def userMapping = [
      “admin@admin.com” : “557358:bda57a72g56a9-4219-9c29-7d666481388f”,
//  “557358:bda57a72g56a9-4219-9c29-7d666481388f” - accountId of the Jira Cloud user
]
//set local assignee same as remote based on the user mapping specified above
issue.assignee = nodeHelper.getUser(userMapping[replica.assignee.email])

See also

REST exception while getting user by username `null` on Jira Cloud