Redmine importer does not handle Redmine groups properly

I tried to import all issues from a Redmine installation. The installation uses a group to assign issues to that group. The import process failed with the following error:

2013-01-08 12:10:01,180 ERROR - Unexpected failure occurred. Importer will stop immediately. Data maybe in an unstable state
com.atlassian.jira.plugins.importer.redmine.RedmineRemoteException: Unexpected exception while importing from redmine
	at com.atlassian.jira.plugins.importer.redmine.RedmineClient.translateException(RedmineClient.java:298)
	at com.atlassian.jira.plugins.importer.redmine.RedmineClient.getUserName(RedmineClient.java:247)
	at com.atlassian.jira.plugins.importer.redmine.RedmineClient.getUserName(RedmineClient.java:252)
	at com.atlassian.jira.plugins.importer.redmine.transformer.IssueTransformer.apply(IssueTransformer.java:69)
	at com.atlassian.jira.plugins.importer.redmine.transformer.IssueTransformer.apply(IssueTransformer.java:30)
	at com.google.common.collect.Iterators$8.next(Iterators.java:782)
	at com.atlassian.jira.plugins.importer.imports.importer.impl.DefaultJiraDataImporter.importIssues(DefaultJiraDataImporter.java:750)
	at com.atlassian.jira.plugins.importer.imports.importer.impl.DefaultJiraDataImporter.doImport(DefaultJiraDataImporter.java:354)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
	at org.springframework.osgi.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:58)
	at org.springframework.osgi.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:62)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
	at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
	at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
	at org.springframework.osgi.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:56)
	at org.springframework.osgi.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:39)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
	at org.springframework.osgi.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:59)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
	at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
	at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
	at $Proxy1558.doImport(Unknown Source)
	at com.atlassian.jira.plugins.importer.imports.importer.impl.ImporterCallable.call(ImporterCallable.java:27)
	at com.atlassian.jira.plugins.importer.imports.importer.impl.ImporterCallable.call(ImporterCallable.java:16)
	at com.atlassian.jira.task.TaskManagerImpl$TaskCallableDecorator.call(TaskManagerImpl.java:366)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at com.atlassian.multitenant.impl.DefaultMultiTenantManager.runForTenant(DefaultMultiTenantManager.java:61)
	at com.atlassian.multitenant.juc.MultiTenantExecutors$WrappedRunnable.run(MultiTenantExecutors.java:160)
	at com.atlassian.jira.task.ForkedThreadExecutor$ForkedRunnableDecorator.run(ForkedThreadExecutor.java:249)
	at java.lang.Thread.run(Thread.java:662)
Caused by: com.taskadapter.redmineapi.NotFoundException: Server returned '404 not found'. response body: 
	at com.taskadapter.redmineapi.internal.comm.redmine.RedmineErrorHandler.processContent(RedmineErrorHandler.java:45)
	at com.taskadapter.redmineapi.internal.comm.redmine.RedmineErrorHandler.processContent(RedmineErrorHandler.java:21)
	at com.taskadapter.redmineapi.internal.comm.ComposingHandler.processContent(ComposingHandler.java:25)
	at com.taskadapter.redmineapi.internal.comm.ComposingHandler.processContent(ComposingHandler.java:25)
	at com.taskadapter.redmineapi.internal.comm.BaseCommunicator.sendRequest(BaseCommunicator.java:83)
	at com.taskadapter.redmineapi.internal.comm.redmine.RedmineAuthenticator.sendRequest(RedmineAuthenticator.java:54)
	at com.taskadapter.redmineapi.internal.comm.FmapCommunicator.sendRequest(FmapCommunicator.java:26)
	at com.taskadapter.redmineapi.internal.comm.FmapCommunicator.sendRequest(FmapCommunicator.java:26)
	at com.taskadapter.redmineapi.internal.comm.BasicSimplifier.sendRequest(BasicSimplifier.java:24)
	at com.taskadapter.redmineapi.internal.Transport.getObject(Transport.java:269)
	at com.taskadapter.redmineapi.internal.Transport.getObject(Transport.java:330)
	at com.taskadapter.redmineapi.RedmineManager.getUserById(RedmineManager.java:363)
	at com.atlassian.jira.plugins.importer.redmine.manager.CachedJiraRedmineManager.getUserById(CachedJiraRedmineManager.java:123)
	at com.atlassian.jira.plugins.importer.redmine.RedmineClient.getUserName(RedmineClient.java:244)
	... 39 more

The importer requested /users/8.json?include=memberships which does not exist:

x.x.x.x - - [08/Jan/2013:12:10:01 +0100] "GET /users/8.json?include=memberships HTTP/1.1" 404 616 "-" "-"

Redmine user with id 8 is not an actual user, but the above-mentioned group. Therefore, the above request fails (not found). As a workaround, I created a new dummy user with id 12, that does not belong to any group or project, and set up the following redirect:

RewriteRule ^users/8\.json /users/12.json [L,R]

That way, the importer got the return value for user with id 12 instead. I assume this is a bug in the Redmine importer plugin, isn't it?

2 answers

1 accepted

0 vote

Hi Martin,

1. Redmine importer supports version 1.3 and above and 2.0 and above. So it supports version 1.4

2. The behavior described in your question is definitively a bug. I've raised a bug report for it https://ecosystem.atlassian.net/browse/JIM-915

The above stack-trace seems to be related to the incompatibility of the Redmine version. Please make sure that the Redmine version is 1.3+ or 2.0+.

It was Redmine 1.4.1.stable.9615.

Wait a minute - does this mean that the Redmine importer supports 1.3 but does not support 1.4?

Suggest an answer

Log in or Sign up to answer
How to earn badges on the Atlassian Community

How to earn badges on the Atlassian Community

Badges are a great way to show off community activity, whether you’re a newbie or a Champion.

Learn more
Community showcase
Posted Friday in Off-topic

Friday Fun: Riddle me this

Happy Friday, Funmakers! We had a Community Team offsite in Austin this week, and my mind feels primed for thinkin' from all the brainstorming we did!  So, this week's Friday Fun thread w...

121 views 14 3
Join discussion

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you