Uploaded image for project: 'Migration Platform'
  1. Migration Platform
  2. MIG-1120

Jira Site Import hits into Duplicate email address or UserAlreadyExists

    XMLWordPrintable

Details

    • 126
    • Minor
    • 2

    Description

      Summary

      When we perform a site restoration on Jira, it would wipe out all data, including the users

      Please note that this process will delete all existing Jira data in your site and replace it with data from the selected file.

      However, we found the existing users are not deleted. Hence, it shows "UserAlreadyExists" when Jira tries to create the account for the same user who exists on both source and destination instance (especially the default add-on users).

      Environment

      • Cloud -> Cloud restoration
      • Server -> Cloud restoration

      Steps to Reproduce

      1. Take a backup of a Jira Cloud
      2. Restore it on the same instance

      Expected Results

      Restoration completes successfully.

      Actual Results

      It shows error:

      Error importing data: com.atlassian.jira.log.clean.PrivacySafeException: Privacy-safe boxing of a com.atlassian.jira.bc.dataimport.identity.UsersAndGroupsImportHelper$WrappingCrowdException
      

      Application logs:

      com.atlassian.jira.bc.dataimport.identity.UsersAndGroupsImportHelper$WrappingCrowdException: {"schemas":["urn:ietf:params:scim:api:messages:2.0:Error"],"status":"409","scimType":"uniqueness","detail":"Duplicate email address: add-on@connect.atlassian.com","errorType":"UserAlreadyExists","message":"Duplicate email address: add-on@connect.atlassian.com","data":"add-on@connect.atlassian.com"} at com.atlassian.jira.bc.dataimport.identity.UsersAndGroupsImportHelper.transferUsersToCrowd(UsersAndGroupsImportHelper.java:338) at com.atlassian.jira.bc.dataimport.identity.UsersAndGroupsImportHelper.transferUsersToCrowd(UsersAndGroupsImportHelper.java:255) at com.atlassian.jira.bc.dataimport.identity.IdentityImportHelper.performMigration(IdentityImportHelper.java:134) at com.atlassian.jira.bc.dataimport.CloudImportTaskRunner.performTasksOnImportDb(CloudImportTaskRunner.java:397) at com.atlassian.jira.bc.dataimport.CloudImportTaskRunner.performTasksOnImportDb(CloudImportTaskRunner.java:485) at com.atlassian.jira.bc.dataimport.CloudImportTaskRunner.lambda$null$1(CloudImportTaskRunner.java:223) at com.atlassian.connpool.impl.AbstractConnectionPoolProvider.withPrivatePool(AbstractConnectionPoolProvider.java:133) at com.atlassian.jira.connpool.JiraViburConnectionPoolProvider.withPrivatePool(JiraViburConnectionPoolProvider.java:131) at com.atlassian.jira.bc.dataimport.AbstractBackupTaskRunner.lambda$null$0(AbstractBackupTaskRunner.java:63) at java.util.Optional.map(Optional.java:215) at com.atlassian.jira.bc.dataimport.AbstractBackupTaskRunner.lambda$runWithSeparateContextAsync$1(AbstractBackupTaskRunner.java:62) at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: com.atlassian.crowd.exception.runtime.OperationFailedException: com.atlassian.idp.client.exceptions.UserAlreadyExistsException: {"schemas":["urn:ietf:params:scim:api:messages:2.0:Error"],"status":"409","scimType":"uniqueness","detail":"Duplicate email address: add-on@connect.atlassian.com","errorType":"UserAlreadyExists","message":"Duplicate email address: add-on@connect.atlassian.com","data":"add-on@connect.atlassian.com"} at com.atlassian.jira.bc.dataimport.identity.DefaultIdpSafeOperations.withRetry(DefaultIdpSafeOperations.java:167) at com.atlassian.jira.bc.dataimport.identity.DefaultIdpSafeOperations.importUser(DefaultIdpSafeOperations.java:150) at com.atlassian.jira.bc.dataimport.identity.UsersAndGroupsImportHelper.createNewUserWithGroupMemberships(UsersAndGroupsImportHelper.java:377) at com.atlassian.jira.bc.dataimport.identity.UsersAndGroupsImportHelper.transferUsersToCrowd(UsersAndGroupsImportHelper.java:331) ... 14 more Caused by: com.atlassian.idp.client.exceptions.UserAlreadyExistsException: {"schemas":["urn:ietf:params:scim:api:messages:2.0:Error"],"status":"409","scimType":"uniqueness","detail":"Duplicate email address: add-on@connect.atlassian.com","errorType":"UserAlreadyExists","message":"Duplicate email address: add-on@connect.atlassian.com","data":"add-on@connect.atlassian.com"} at com.atlassian.idp.client.IdentityPlatformClientImpl.mapStatusCodeException(IdentityPlatformClientImpl.java:681) at com.atlassian.idp.client.IdentityPlatformClientImpl.mapInputStream(IdentityPlatformClientImpl.java:602) at com.atlassian.idp.client.IdentityPlatformClientImpl.makeRequestWithEntityBody(IdentityPlatformClientImpl.java:576) at com.atlassian.idp.client.IdentityPlatformClientImpl.importUser(IdentityPlatformClientImpl.java:418) at com.atlassian.jira.bc.dataimport.identity.DefaultIdpSafeOperations.lambda$importUser$2(DefaultIdpSafeOperations.java:150) at com.atlassian.jira.util.retry.Retryer$Retriable.call(Retryer.java:80) at com.atlassian.jira.bc.dataimport.identity.DefaultIdpSafeOperations.withRetry(DefaultIdpSafeOperations.java:160) ... 17 more
      

      Notes

      • The bug most likely to happen on Cloud -> Cloud restoration because all Jira Cloud instances come some default add-on users. Eg: Trello user
      • This bug also happens to normal users if the user is already invited to the destination instance.

      Workaround

      1. Remove the add-on users and/or user who exists on destination Cloud instance from the backup file; OR
      2. Contact Atlassian Support to manually delete the add-on users

      Attachments

        Issue Links

          Activity

            People

              c0733332e5b9 Hemant Bhoyar
              cteh Ting (Chiou Ting Teh)
              Votes:
              7 Vote for this issue
              Watchers:
              30 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: