Using Configuration Manager for Jira, I was able to restore from system snapshot the first time (rebuilding the sandbox), but if I want to merge or re-restore from a newer system snapshot, I get the following error:
Unsupported root class: class com.botronsoft.jira.rollout.model.jiraconfiguration.project.impl.JiraProjectComponentImpl
java.lang.IllegalArgumentException: Unsupported root class: class com.botronsoft.jira.rollout.model.jiraconfiguration.project.impl.JiraProjectComponentImpl
at com.botronsoft.jira.rollout.ui.diff.adapters.project.ProjectDiffAdapter.getReferenceType(ProjectDiffAdapter.java:1815)
at com.botronsoft.jira.rollout.ui.diff.adapters.project.ProjectDiffAdapter.describeObjectProperty(ProjectDiffAdapter.java:1715)
at com.botronsoft.jira.rollout.ui.diff.adapters.project.ProjectDiffAdapter.addReference(ProjectDiffAdapter.java:272)
at com.botronsoft.jira.rollout.ui.diff.ModelDetailsBuilder.addInTarget(ModelDetailsBuilder.java:92)
at com.botronsoft.jira.rollout.ui.diff.ModelDetailsBuilder.handleReferenceDiff(ModelDetailsBuilder.java:47)
at com.botronsoft.jira.rollout.ui.diff.ModelDetailsBuilder.build(ModelDetailsBuilder.java:33)
at com.botronsoft.jira.rollout.ui.diff.DiffModelBuilder.attachDiffDetails(DiffModelBuilder.java:446)
at com.botronsoft.jira.rollout.ui.diff.DiffModelBuilder.attachDiffNode(DiffModelBuilder.java:229)
at com.botronsoft.jira.rollout.ui.diff.DiffModelBuilder.build(DiffModelBuilder.java:149)
at com.botronsoft.jira.rollout.ui.DeployModelBuilder.buildDiffModel(DeployModelBuilder.java:130)
at com.botronsoft.jira.rollout.impl.ui.DeployModeBuilderServiceImpl.buildDiffModel(DeployModeBuilderServiceImpl.java:51)
... 3 filtered
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)
at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:56)
at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:60)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133)
at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:70)
at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:53)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:57)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133)
at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208)
at com.sun.proxy.$Proxy4297.buildDiffModel(Unknown Source)
at com.botronsoft.jira.rollout.rest.internal.snapshot.DeploymentResource.completeSnapshotModel(DeploymentResource.java:337)
... 3 filtered
at java.lang.reflect.Method.invoke(Method.java:498)
... 3 filtered
at com.botronsoft.jira.rollout.impl.rest.authorization.PermissionResourceInterceptor.checkPermissions(PermissionResourceInterceptor.java:43)
at com.botronsoft.jira.rollout.impl.rest.authorization.PermissionResourceInterceptor.intercept(PermissionResourceInterceptor.java:27)
... 15 filtered
at com.atlassian.plugins.rest.module.RestDelegatingServletFilter$JerseyOsgiServletContainer.doFilter(RestDelegatingServletFilter.java:154)
... 1 filtered
at com.atlassian.plugins.rest.module.RestDelegatingServletFilter.doFilter(RestDelegatingServletFilter.java:68)
... 32 filtered
at com.atlassian.servicedesk.internal.web.ExternalCustomerLockoutFilter.doFilter(ExternalCustomerLockoutFilter.java:56)
... 13 filtered
at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21)
... 53 filtered
at com.atlassian.jira.security.JiraSecurityFilter.lambda$doFilter$0(JiraSecurityFilter.java:66)
... 1 filtered
at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:64)
... 16 filtered
at com.atlassian.plugins.rest.module.servlet.RestSeraphFilter.doFilter(RestSeraphFilter.java:37)
... 19 filtered
at com.atlassian.jira.servermetrics.CorrelationIdPopulatorFilter.doFilter(CorrelationIdPopulatorFilter.java:30)
... 5 filtered
at com.valiantys.jira.plugins.sql.service.servletcontext.ContextListenerServletFilter.doFilter(ContextListenerServletFilter.java:24)
... 3 filtered
at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.lambda$invokeFilterChain$0(CustomerContextSettingFilter.java:181)
at com.atlassian.servicedesk.internal.api.util.context.ReentrantThreadLocalBasedCodeContext.rteInvoke(ReentrantThreadLocalBasedCodeContext.java:137)
at com.atlassian.servicedesk.internal.api.util.context.ReentrantThreadLocalBasedCodeContext.runOutOfContext(ReentrantThreadLocalBasedCodeContext.java:90)
at com.atlassian.servicedesk.internal.utils.context.CustomerContextServiceImpl.runOutOfCustomerContext(CustomerContextServiceImpl.java:47)
at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.outOfCustomerContext(CustomerContextSettingFilter.java:174)
at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilterImpl(CustomerContextSettingFilter.java:130)
at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilter(CustomerContextSettingFilter.java:121)
... 9 filtered
at com.atlassian.jwt.internal.servlet.JwtAuthFilter.doFilter(JwtAuthFilter.java:32)
... 3 filtered
at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21)
... 4 filtered
at com.atlassian.web.servlet.plugin.LocationCleanerFilter.doFilter(LocationCleanerFilter.java:36)
... 7 filtered
at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:201)
at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:178)
at net.bull.javamelody.PluginMonitoringFilter.doFilter(PluginMonitoringFilter.java:85)
at net.bull.javamelody.JiraMonitoringFilter.doFilter(JiraMonitoringFilter.java:105)
... 22 filtered
at com.atlassian.jira.servermetrics.MetricsCollectorFilter.doFilter(MetricsCollectorFilter.java:25)
... 24 filtered
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
I've tried googling this and searching KBs, but cannot find anything for "Unsupported root class: class com.botronsoft.jira.rollout.model.jiraconfiguration.project.impl.JiraProjectComponentImpl"
My only workaround at the moment is rebuilding the entire sandbox.