Details
-
Bug
-
Resolution: Fixed
-
Low
-
None
-
1
-
Severity 2 - Major
-
Description
Issue Summary
Import with Cloud Migration Assistant for Confluence fails if user cannot be invited
Environment
- Confluence Server with Cloud Migration Assistant for Source
- Confluence Cloud for Destination
Steps to Reproduce
- Create content on Confluence Server with a user that has an invalid e-mail for Cloud (Missing TLD for example)
- Use Cloud Migration Assistant for Confluence app to migrate
- Select option to migrate no users or groups
Expected Results
Migration assistant performs pre-transfer checks and warns about user with invalid e-mail
Actual Results
Migration assistant allows the migration plan to be ran which eventually fails.
Error logs show:
stack: com.atlassian.confluence.importexport.ImportExportException: Unable to complete import: Error while importing backup: Failed to call to IDP to invite user com.atlassian.confluence.importexport.xmlimport.DefaultXmlImporter.doImport(DefaultXmlImporter.java:101) com.atlassian.confluence.importexport.xmlimport.BackupImporter.importEntities(BackupImporter.java:390) com.atlassian.confluence.importexport.xmlimport.BackupImporter.importEverything(BackupImporter.java:359) com.atlassian.confluence.importexport.xmlimport.FileBackupImporter.importEverything(FileBackupImporter.java:165) com.atlassian.confluence.importexport.xmlimport.BackupImporter.doImportInternal(BackupImporter.java:218) com.atlassian.confluence.importexport.Importer.doImport(Importer.java:68) .... java.lang.Thread.run(Thread.java:748) Caused by: org.xml.sax.SAXException: Error while importing backup: Failed to call to IDP to invite user com.atlassian.confluence.importexport.xmlimport.parser.BackupParser.endElement(BackupParser.java:45) org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source) org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) org.apache.xerces.parsers.XMLParser.parse(Unknown Source) org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) com.atlassian.security.xml.RestrictedXMLReader.parse(RestrictedXMLReader.java:103) com.atlassian.confluence.importexport.xmlimport.DefaultXmlImporter.parseBackup(DefaultXmlImporter.java:122) com.atlassian.confluence.importexport.xmlimport.DefaultXmlImporter.doImport(DefaultXmlImporter.java:88) ... 83 more Caused by: java.lang.RuntimeException: Failed to call to IDP to invite user com.atlassian.confluence.importexport.impl.DefaultEmailAaidMapper.invite(DefaultEmailAaidMapper.java:113) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26) com.sun.proxy.$Proxy463.invite(Unknown Source) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333) org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:56) org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:60) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133) org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor$1.run(ServiceTCCLInterceptor.java:61) org.eclipse.gemini.blueprint.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:130) org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokePrivileged(ServiceTCCLInterceptor.java:58) org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:50) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:57) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133) org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) com.sun.proxy.$Proxy2216.invite(Unknown Source) com.atlassian.studio.confluence.importexport.UserEmailPreProcessor.lambda$setAidByEmail$3(UserEmailPreProcessor.java:181) java.util.Optional.ifPresent(Optional.java:159) com.atlassian.studio.confluence.importexport.UserEmailPreProcessor.setAidByEmail(UserEmailPreProcessor.java:177) com.atlassian.studio.confluence.importexport.UserEmailPreProcessor.process(UserEmailPreProcessor.java:101) com.atlassian.confluence.importexport.ChainedImportedObjectPreProcessor.process(ChainedImportedObjectPreProcessor.java:52) com.atlassian.confluence.importexport.ChainedImportedObjectPreProcessor.process(ChainedImportedObjectPreProcessor.java:52) com.atlassian.confluence.importexport.xmlimport.DefaultImportProcessor.processObject(DefaultImportProcessor.java:31) com.atlassian.confluence.importexport.xmlimport.parser.BackupParser.endElement(BackupParser.java:43) ... 95 more Caused by: com.netflix.hystrix.exception.HystrixRuntimeException: InviteUserIdentityPlatformCommand failed and no fallback available. com.netflix.hystrix.AbstractCommand$22.call(AbstractCommand.java:822) com.netflix.hystrix.AbstractCommand$22.call(AbstractCommand.java:807) rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4.onError(OperatorOnErrorResumeNextViaFunction.java:140) rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onError(OnSubscribeDoOnEach.java:87) rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onError(OnSubscribeDoOnEach.java:87) com.netflix.hystrix.AbstractCommand$DeprecatedOnFallbackHookApplication$1.onError(AbstractCommand.java:1472) com.netflix.hystrix.AbstractCommand$FallbackHookApplication$1.onError(AbstractCommand.java:1397) rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onError(OnSubscribeDoOnEach.java:87) rx.observers.Subscribers$5.onError(Subscribers.java:230) rx.internal.operators.OnSubscribeThrow.call(OnSubscribeThrow.java:44) rx.internal.operators.OnSubscribeThrow.call(OnSubscribeThrow.java:28) rx.Observable.unsafeSubscribe(Observable.java:10151) rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:51) rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35) rx.Observable.unsafeSubscribe(Observable.java:10151) rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41) rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30) rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48) rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48) rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) rx.Observable.unsafeSubscribe(Observable.java:10151) rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41) rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30) rx.Observable.unsafeSubscribe(Observable.java:10151) rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41) rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30) rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48) rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) rx.Observable.unsafeSubscribe(Observable.java:10151) rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41) rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30) rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48) rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) rx.Observable.unsafeSubscribe(Observable.java:10151) rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4.onError(OperatorOnErrorResumeNextViaFunction.java:142) rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onError(OnSubscribeDoOnEach.java:87) rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onError(OnSubscribeDoOnEach.java:87) com.netflix.hystrix.AbstractCommand$HystrixObservableTimeoutOperator$3.onError(AbstractCommand.java:1194) rx.internal.operators.OperatorSubscribeOn$1$1.onError(OperatorSubscribeOn.java:59) rx.observers.Subscribers$5.onError(Subscribers.java:230) rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onError(OnSubscribeDoOnEach.java:87) rx.observers.Subscribers$5.onError(Subscribers.java:230) com.netflix.hystrix.AbstractCommand$DeprecatedOnRunHookApplication$1.onError(AbstractCommand.java:1431) com.netflix.hystrix.AbstractCommand$ExecutionHookApplication$1.onError(AbstractCommand.java:1362) rx.observers.Subscribers$5.onError(Subscribers.java:230) rx.observers.Subscribers$5.onError(Subscribers.java:230) rx.internal.operators.OnSubscribeThrow.call(OnSubscribeThrow.java:44) rx.internal.operators.OnSubscribeThrow.call(OnSubscribeThrow.java:28) rx.Observable.unsafeSubscribe(Observable.java:10151) rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:51) rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35) rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48) rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48) rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48) rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) rx.Observable.unsafeSubscribe(Observable.java:10151) rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:51) rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35) rx.Observable.unsafeSubscribe(Observable.java:10151) rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41) rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30) rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48) rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) rx.Observable.unsafeSubscribe(Observable.java:10151) rx.internal.operators.OperatorSubscribeOn$1.call(OperatorSubscribeOn.java:94) com.netflix.hystrix.strategy.concurrency.HystrixContexSchedulerAction$1.call(HystrixContexSchedulerAction.java:56) com.netflix.hystrix.strategy.concurrency.HystrixContexSchedulerAction$1.call(HystrixContexSchedulerAction.java:47) com.atlassian.workcontext.api.WorkContextFunctionWrapper.lambda$withContext$2(WorkContextFunctionWrapper.java:65) com.atlassian.workcontext.api.WorkContextFunctionWrapper.lambda$withContext$7(WorkContextFunctionWrapper.java:117) com.atlassian.workcontext.api.WorkContextFunctionWrapper.lambda$withContext$3(WorkContextFunctionWrapper.java:74) com.netflix.hystrix.strategy.concurrency.HystrixContexSchedulerAction.call(HystrixContexSchedulerAction.java:69) rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55) java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) java.util.concurrent.FutureTask.run(FutureTask.java:266) ... 3 more Caused by: com.atlassian.idp.client.exceptions.BadRequestException: {"errorType":"InvalidSchema","message":"Invalid email address"} com.atlassian.idp.client.IdentityPlatformClientImpl.mapStatusCodeException(IdentityPlatformClientImpl.java:706) com.atlassian.idp.client.IdentityPlatformClientImpl.mapInputStream(IdentityPlatformClientImpl.java:621) com.atlassian.idp.client.IdentityPlatformClientImpl.makeRequestWithJsonEntityBody(IdentityPlatformClientImpl.java:606) com.atlassian.idp.client.IdentityPlatformClientImpl.inviteUser(IdentityPlatformClientImpl.java:418) com.atlassian.confluence.internal.idp.InviteUserIdentityPlatformCommand.run(InviteUserIdentityPlatformCommand.java:32) com.atlassian.confluence.internal.idp.InviteUserIdentityPlatformCommand.run(InviteUserIdentityPlatformCommand.java:17) com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:302) com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:298) rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:46) ... 29 more
Workaround
Edit e-mail address for users so they are valid before attempting another migration using the app.