Metadata Sync Error referencing User ID "-1"

Dear DHIS2 Support Team,

I am writing to request assistance with an error I am encountering while using the Metadata Sync module in DHIS2.

Description of the Issue:
I am receiving an error that references a User object with the ID “-1”. To provide context on my process:

  1. I exported metadata from the datastore.
  2. I removed the escaping characters manually.
  3. I successfully imported this metadata via the Import/Export module (all items were imported without error).
  4. However, when I attempt to use the Metadata Sync module, I encounter the error regarding User ID “-1”.

Questions:

  • Has anyone else reported this specific error involving a “ghost” user ID?
  • Is there a known workaround to bypass this error or resolve the reference to User ID “-1”?

For your reference, I am using [DHIS2 Version Number]. I have attached a screenshot of the error and the relevant log entries for your review.

NB. there is no user with id= -1 in the file

Thank you for your time and assistance.

Error bellow
Cheers.

  • WARN 2026-10-19T10:50:20,489 Process aborted after 0.001s: aborted after error: Unable to find org.hisp.dhis.user.User with id -1 (RecordingJobProgress.java [pool-4-thread-91]) UID:PlNGMgCXnYi
  • ERROR 2026-10-19T10:50:20,489 failed after 0.001s: Unable to find org.hisp.dhis.user.User with id -1 (RecordingJobProgress.java [pool-4-thread-91]) UID:PlNGMgCXnYi
    jakarta.persistence.EntityNotFoundException: Unable to find org.hisp.dhis.user.User with id -1
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$JpaEntityNotFoundDelegate.handleEntityNotFound(EntityManagerFactoryBuilderImpl.java:177)
    at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:216)
    at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:327)
    at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:108)
    at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:74)
    at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:118)
    at org.hibernate.internal.SessionImpl.fireLoadNoChecks(SessionImpl.java:1231)
    at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1220)
    at org.hibernate.internal.SessionImpl.access$2100(SessionImpl.java:202)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.doGetReference(SessionImpl.java:2808)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.lambda$getReference$0(SessionImpl.java:2757)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.perform(SessionImpl.java:2781)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.getReference(SessionImpl.java:2757)
    at org.hibernate.internal.SessionImpl.getReference(SessionImpl.java:3504)
    at jdk.internal.reflect.GeneratedMethodAccessor1586.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:569)
    at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:320)
    at jdk.proxy3/jdk.proxy3.$Proxy165.getReference(Unknown Source)
    at org.hisp.dhis.dxf2.metadata.DefaultMetadataImportService.preCreateBundleObject(DefaultMetadataImportService.java:257)
    at org.hisp.dhis.dxf2.metadata.DefaultMetadataImportService.lambda$preCreateBundle$7(DefaultMetadataImportService.java:248)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
    at org.hisp.dhis.dxf2.metadata.DefaultMetadataImportService.preCreateBundle(DefaultMetadataImportService.java:248)
    at org.hisp.dhis.dxf2.metadata.DefaultMetadataImportService.lambda$importMetadata$0(DefaultMetadataImportService.java:103)
    at org.hisp.dhis.scheduling.JobProgress.lambda$runStage$4(JobProgress.java:494)
    at org.hisp.dhis.scheduling.JobProgress.runStage(JobProgress.java:529)
    at org.hisp.dhis.scheduling.JobProgress.runStage(JobProgress.java:490)
    at org.hisp.dhis.scheduling.JobProgress.runStage(JobProgress.java:474)
    at org.hisp.dhis.dxf2.metadata.DefaultMetadataImportService.importMetadata(DefaultMetadataImportService.java:103)
    at org.hisp.dhis.dxf2.metadata.DefaultMetadataImportService.importMetadata(DefaultMetadataImportService.java:89)
    at jdk.internal.reflect.GeneratedMethodAccessor2169.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:569)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:223)
    at jdk.proxy3/jdk.proxy3.$Proxy457.importMetadata(Unknown Source)
    at org.hisp.dhis.dxf2.metadata.sync.MetadataSyncImportHandler.importMetadata(MetadataSyncImportHandler.java:97)
    at org.hisp.dhis.dxf2.metadata.sync.DefaultMetadataSyncService.doMetadataSync(DefaultMetadataSyncService.java:122)
    at org.hisp.dhis.dxf2.metadata.jobs.MetadataSyncJob.handleMetadataSync(MetadataSyncJob.java:193)
    at org.hisp.dhis.dxf2.metadata.jobs.MetadataSyncJob.handleMetadataSync(MetadataSyncJob.java:159)
    at org.hisp.dhis.dxf2.metadata.jobs.MetadataSyncJob.runSyncTask(MetadataSyncJob.java:142)
    at org.hisp.dhis.dxf2.metadata.jobs.MetadataSyncJob.lambda$execute$0(MetadataSyncJob.java:112)
    at org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:329)
    at org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:225)
    at org.hisp.dhis.dxf2.metadata.jobs.MetadataSyncJob.execute(MetadataSyncJob.java:108)
    at org.hisp.dhis.scheduling.JobScheduler.runDueJob(JobScheduler.java:236)
    at org.hisp.dhis.scheduling.JobScheduler.lambda$runIfDue$2(JobScheduler.java:203)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:840)
  • ERROR 2026-10-19T10:50:20,489 Exception occurred while trying to import the metadata. Unable to find org.hisp.dhis.user.User with id -1 (MetadataSyncImportHandler.java [pool-4-thread-91]) UID:PlNGMgCXnYi
    jakarta.persistence.EntityNotFoundException: Unable to find org.hisp.dhis.user.User with id -1
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$JpaEntityNotFoundDelegate.handleEntityNotFound(EntityManagerFactoryBuilderImpl.java:177)
    at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:216)
    at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:327)
    at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:108)
    at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:74)
    at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:118)
    at org.hibernate.internal.SessionImpl.fireLoadNoChecks(SessionImpl.java:1231)
    at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1220)
    at org.hibernate.internal.SessionImpl.access$2100(SessionImpl.java:202)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.doGetReference(SessionImpl.java:2808)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.lambda$getReference$0(SessionImpl.java:2757)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.perform(SessionImpl.java:2781)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.getReference(SessionImpl.java:2757)
    at org.hibernate.internal.SessionImpl.getReference(SessionImpl.java:3504)
    at jdk.internal.reflect.GeneratedMethodAccessor1586.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:569)
    at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:320)
    at jdk.proxy3/jdk.proxy3.$Proxy165.getReference(Unknown Source)
    at org.hisp.dhis.dxf2.metadata.DefaultMetadataImportService.preCreateBundleObject(DefaultMetadataImportService.java:257)
    at org.hisp.dhis.dxf2.metadata.DefaultMetadataImportService.lambda$preCreateBundle$7(DefaultMetadataImportService.java:248)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
    at org.hisp.dhis.dxf2.metadata.DefaultMetadataImportService.preCreateBundle(DefaultMetadataImportService.java:248)
    at org.hisp.dhis.dxf2.metadata.DefaultMetadataImportService.lambda$importMetadata$0(DefaultMetadataImportService.java:103)
    at org.hisp.dhis.scheduling.JobProgress.lambda$runStage$4(JobProgress.java:494)
    at org.hisp.dhis.scheduling.JobProgress.runStage(JobProgress.java:529)
    at org.hisp.dhis.scheduling.JobProgress.runStage(JobProgress.java:490)
    at org.hisp.dhis.scheduling.JobProgress.runStage(JobProgress.java:474)
    at org.hisp.dhis.dxf2.metadata.DefaultMetadataImportService.importMetadata(DefaultMetadataImportService.java:103)
    at org.hisp.dhis.dxf2.metadata.DefaultMetadataImportService.importMetadata(DefaultMetadataImportService.java:89)
    at jdk.internal.reflect.GeneratedMethodAccessor2169.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:569)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:223)
    at jdk.proxy3/jdk.proxy3.$Proxy457.importMetadata(Unknown Source)
    at org.hisp.dhis.dxf2.metadata.sync.MetadataSyncImportHandler.importMetadata(MetadataSyncImportHandler.java:97)
    at org.hisp.dhis.dxf2.metadata.sync.DefaultMetadataSyncService.doMetadataSync(DefaultMetadataSyncService.java:122)
    at org.hisp.dhis.dxf2.metadata.jobs.MetadataSyncJob.handleMetadataSync(MetadataSyncJob.java:193)
    at org.hisp.dhis.dxf2.metadata.jobs.MetadataSyncJob.handleMetadataSync(MetadataSyncJob.java:159)
    at org.hisp.dhis.dxf2.metadata.jobs.MetadataSyncJob.runSyncTask(MetadataSyncJob.java:142)
    at org.hisp.dhis.dxf2.metadata.jobs.MetadataSyncJob.lambda$execute$0(MetadataSyncJob.java:112)
    at org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:329)
    at org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:225)
    at org.hisp.dhis.dxf2.metadata.jobs.MetadataSyncJob.execute(MetadataSyncJob.java:108)
    at org.hisp.dhis.scheduling.JobScheduler.runDueJob(JobScheduler.java:236)
    at org.hisp.dhis.scheduling.JobScheduler.lambda$runIfDue$2(JobScheduler.java:203)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:840)
  • WARN 2026-10-19T10:50:20,489 [META_DATA_SYNC PlNGMgCXnYi] Process aborted after 0.191s: aborted after error: Exception occurred while trying to import the metadata. Unable to find org.hisp.dhis.user.User with id -1 (RecordingJobProgress.java [pool-4-thread-91]) UID:PlNGMgCXnYi

Hi @yusuphk

The User ID “-1” doesn’t ring a bell for us as a known issue. Looking at the stack trace, though, there are several Hibernate errors, which usually point to something on the database side. Sometimes this kind of error comes from a one-off issue with a resource such as the database, so it would be worth running the sync again to see if it happens a second time.

To help us dig into it, could you share:

  1. Your DHIS2 version, on both the source and destination instances
  2. The version of the Metadata Sync app you’re using

We were also curious about the step where you removed the escaping characters manually. That shouldn’t be necessary as part of the process, so could you tell us a bit more about why you needed to do it and what the exported content looked like before and after? It might be related to what you’re seeing.

Once we have this, we’ll take a closer look.

Best,

Hello @EyeSeeTea, thanks for looking into this.

Yes — I tried removing the published version and publishing again, and I get the same error.

Both instances are running DHIS2 2.42.6, and I’m using the native Metadata Sync.

The reason I removed the escape characters is that the datastore stores the JSON like this:

"metadata": "{\"system\":{\"id\":\"cba40939-91d8-40c5-9a6b-dbfdcce5b679\",\"rev\":\"dd8bdbb\",\"version\":\"2.42.6\"

So I had to strip the backslashes. (NB: the file is too big to pull via the API.)

Let me know if you need any more details.

Hi again @yusuphk

Thanks for the details.

Just to make sure we’re talking about the same thing: Metadata Sync is not a native app, it is a custom app, and as such you can see it’s version under “app management” → “custom apps”. Could you check that?

If you need you can get the latest version from the app hub:

https://apps.dhis2.org/app/fd5f3f76-e306-477e-bcb6-3a28cdc784ddThat

Best,

Hi, Just an update on this.

All i had to do to make it work was to delete the Scheduled Job for metadata Sync and re-create it, and that solved the problem.

Cheers,

Hi @yusuphk, glad to read this! Best, :slightly_smiling_face: