Hi there, In addition to the below import issues, now it seems that the passwords have not been imported correctly so nobody can log in. The password hashes in the old database are the same hashes that are contained in the password xml field in the exported file. However, when the file is imported into the system, the password hashes are not copied but are completely different in the user objects created.
Is it the import process maybe taking a hash of the hash? Is this expected behaviour? In order to fix this I had to do a sql dump of the old user table, copy it to the new database, then do a join to update the passwords of the users in the new database. Do you have any advice here of what I should be doing to export users from one instance to populate a new empty instance, without having to do all these workarounds? Thanks, Lorill On Thu, Mar 30, 2017 at 2:20 PM, Lorill Crees <[email protected]> wrote: > Hi, > > I have tracked this down. In the User xml object, within the embedded > UserCredentials object, there is an embedded User object. It appears this > "user" object is meant to be the user that created the UserCredentials. > > In some of the entries, it is the user itself that is contained in the > embedded instance. In other entries, it contains a user that is elsewhere > in the xml file to be imported. > > In order to allow the import to run without exceptions, I need to either > delete this embedded user object, or change it to a user that already > exists in the system prior to the import. > > I basically have to delete all the embedded User objects, import the file, > then revert the deletion, and import the file again as an update. > > Below is an example of what is being exported. > > Is this expected behaviour? Is there any way that these cases can be > handled by the app, and not throw an exception? I am doing a straight > export from one instance to another, both of which are running the same > DHIS 2 version and build. > > Thanks, > > Lorill > > > <?xml version='1.0' encoding='UTF-8'?> > <metaData xmlns="http://dhis2.org/schema/dxf/2.0" > created="2017-03-30T20:22:15.342+0000"> > <users> > <user name="xxx" created="2015-06-07T11:59:59.183+0000" > lastUpdated="2015-06-07T11:59:59.183+0000" > id="UomqXpvKh8M"> > <externalAccess>false</externalAccess> > <surname>xxx</surname> > <firstName>xxx</firstName> > <email>[email protected]</email> > <userCredentials code="xxx" name="xxx" > created="2015-06-07T11:59:59.033+0000" > lastUpdated="2016-04-04T21:06:22.000+0000" > id="B8sCr5nOWro"> > <externalAccess>false</externalAccess> > * <user name="xxx" created="2015-06-07T11:59:59.183+0000"* > * lastUpdated="2015-06-07T11:59:59.183+0000" > id="UomqXpvKh8M">* > * <externalAccess>false</externalAccess>* > * </user>* > <username>xxx</username> > <externalAuth>false</externalAuth> > <password>$2a$10$.nZpxupXABUpy3RNpAl. > 8uSg2OSsnZgxtSHKDTwjhTTPprSZ5W3vK</password> > <passwordLastUpdated>2015-06-07T11:59:59.034+0000</ > passwordLastUpdated> > <lastLogin>2015-12-22T13:35:41.507+0000</lastLogin> > <selfRegistered>false</selfRegistered> > <invitation>false</invitation> > <disabled>false</disabled> > <userRoles> > <userRole name="Superuser" > created="2015-05-04T13:43:25.507+0000" > lastUpdated="2017-03-08T22:03:03.771+0000" > id="cjBTUmG9C9K"> > <externalAccess>false</externalAccess> > <publicAccess>--------</publicAccess> > <user name="yyy" created="2015-05-29T06:54:42. > 002+0000" > lastUpdated="2015-06-02T20:16:52.617+0000" > id="BcLOMAHqNDV"> > <externalAccess>false</externalAccess> > </user> > </userRole> > </userRoles> > </userCredentials> > <organisationUnits> > <organisationUnit code="malawi" name="Malawi" > created="2013-06-10T18:34:22.000+0000" > lastUpdated="2016-02-18T21:28:15.763+0000" > id="lZsCb6y0KDX"> > <externalAccess>false</externalAccess> > </organisationUnit> > </organisationUnits> > <dataViewOrganisationUnits> > <dataViewOrganisationUnit code="malawi" name="Malawi" > created="2013-06-10T18:34:22.000+0000" > > lastUpdated="2016-02-18T21:28:15.763+0000" > id="lZsCb6y0KDX"> > <externalAccess>false</externalAccess> > </dataViewOrganisationUnit> > </dataViewOrganisationUnits> > </user> > </users> > </metaData> > > On Wed, Mar 29, 2017 at 1:42 AM, Marc Garnica <[email protected]> > wrote: > >> I assume you are not importing the user with which you are logged in, >> right? This might be the reason.. If not I don't have any clear idea. >> >> Marc Garnica >> >> 2017-03-29 0:56 GMT+02:00 Lorill Crees <[email protected]>: >> >>> Hi, >>> >>> I am attempting to set up a new empty 2.24 database and populate it with >>> an export of Org units and Users and User Roles from a different 2.24 >>> database. I exported in xml format, with 2 separate export files for: >>> >>> 1. Org units / Org Unit Groups / Org Unit Group Sets / Org Unit >>> Levels >>> 2. Users / User Groups / User Roles >>> >>> >>> I am able to import the org units just fine. However, when I attempt to >>> import the User/User Role xml file I get an exception and the metadata >>> import halts (stacktrace below). >>> >>> Both instances are running the exact same version of 2.24: >>> >>> Version: >>> 2.24 >>> Build revision: >>> 294f578 >>> Build date: >>> 2017-03-20 06:21 >>> >>> Note that doing a dry run import shows successfully importing 19 users >>> and 2 UserRoles. >>> >>> Also note that doing the export and import via json has the same result. >>> >>> Any help resolving this would be appreciated. >>> >>> Thanks, >>> >>> Lorill >>> >>> * INFO 2017-03-28 15:20:37,221 [Level: INFO, category: METADATA_IMPORT, >>> time: Tue Mar 28 15:20:37 PDT 2017, message: Importing 19 Users] >>> (InMemoryNotifier.java [taskScheduler-4]) >>> >>> * INFO 2017-03-28 15:20:37,259 'admin' create org.hisp.dhis.user.User, >>> name: xxx, uid: spw11k0SXjJ (AuditLogUtil.java [taskScheduler-4]) >>> >>> * INFO 2017-03-28 15:20:37,281 'admin' update org.hisp.dhis.user.User, >>> name: xxx, uid: spw11k0SXjJ (AuditLogUtil.java [taskScheduler-4]) >>> >>> * INFO 2017-03-28 15:20:37,445 'admin' update org.hisp.dhis.user.User, >>> name: xxx, uid: spw11k0SXjJ (AuditLogUtil.java [taskScheduler-4]) >>> >>> * ERROR 2017-03-28 15:20:37,460 Unexpected error occurred in scheduled >>> task. (TaskUtils.java [taskScheduler-4]) >>> >>> org.hibernate.TransientObjectException: object references an unsaved >>> transient instance - save the transient instance before flushing: >>> org.hisp.dhis.user.User >>> >>> at org.hibernate.engine.internal.ForeignKeys.getEntityIdentifie >>> rIfNotUnsaved(ForeignKeys.java:279) >>> >>> at org.hibernate.type.EntityType.getIdentifier(EntityType.java:455) >>> >>> at org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:281) >>> >>> at org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:291) >>> >>> at org.hibernate.type.TypeHelper.findDirty(TypeHelper.java:296) >>> >>> at org.hibernate.persister.entity.AbstractEntityPersister.findD >>> irty(AbstractEntityPersister.java:4126) >>> >>> at org.hibernate.event.internal.DefaultFlushEntityEventListener >>> .dirtyCheck(DefaultFlushEntityEventListener.java:528) >>> >>> at org.hibernate.event.internal.DefaultFlushEntityEventListener >>> .isUpdateNecessary(DefaultFlushEntityEventListener.java:215) >>> >>> at org.hibernate.event.internal.DefaultFlushEntityEventListener >>> .onFlushEntity(DefaultFlushEntityEventListener.java:142) >>> >>> at org.hibernate.event.internal.AbstractFlushingEventListener.f >>> lushEntities(AbstractFlushingEventListener.java:216) >>> >>> at org.hibernate.event.internal.AbstractFlushingEventListener.f >>> lushEverythingToExecutions(AbstractFlushingEventListener.java:85) >>> >>> at org.hibernate.event.internal.DefaultAutoFlushEventListener.o >>> nAutoFlush(DefaultAutoFlushEventListener.java:44) >>> >>> at org.hibernate.internal.SessionImpl.autoFlushIfRequired(Sessi >>> onImpl.java:1264) >>> >>> at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1332) >>> >>> at org.hibernate.internal.QueryImpl.list(QueryImpl.java:87) >>> >>> at org.hibernate.internal.AbstractQueryImpl.uniqueResult(Abstra >>> ctQueryImpl.java:964) >>> >>> at org.hisp.dhis.user.hibernate.HibernateCurrentUserStore.getUs >>> erCredentialsByUsername(HibernateCurrentUserStore.java:55) >>> >>> at org.hisp.dhis.user.DefaultCurrentUserService.getCurrentUser( >>> DefaultCurrentUserService.java:93) >>> >>> at sun.reflect.GeneratedMethodAccessor92.invoke(Unknown Source) >>> >>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe >>> thodAccessorImpl.java:43) >>> >>> at java.lang.reflect.Method.invoke(Method.java:483) >>> >>> at org.springframework.aop.support.AopUtils.invokeJoinpointUsin >>> gReflection(AopUtils.java:302) >>> >>> at org.springframework.aop.framework.ReflectiveMethodInvocation >>> .invokeJoinpoint(ReflectiveMethodInvocation.java:190) >>> >>> at org.springframework.aop.framework.ReflectiveMethodInvocation >>> .proceed(ReflectiveMethodInvocation.java:157) >>> >>> at org.springframework.transaction.interceptor.TransactionInter >>> ceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) >>> >>> at org.springframework.transaction.interceptor.TransactionAspec >>> tSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) >>> >>> at org.springframework.transaction.interceptor.TransactionInter >>> ceptor.invoke(TransactionInterceptor.java:96) >>> >>> at org.springframework.aop.framework.ReflectiveMethodInvocation >>> .proceed(ReflectiveMethodInvocation.java:179) >>> >>> at org.springframework.aop.framework.JdkDynamicAopProxy.invoke( >>> JdkDynamicAopProxy.java:208) >>> >>> at com.sun.proxy.$Proxy54.getCurrentUser(Unknown Source) >>> >>> at org.hisp.dhis.hibernate.HibernateGenericStore.getSharingCrit >>> eria(HibernateGenericStore.java:208) >>> >>> at org.hisp.dhis.hibernate.HibernateGenericStore.getSharingCrit >>> eria(HibernateGenericStore.java:202) >>> >>> at org.hisp.dhis.hibernate.HibernateGenericStore.getSharingCrit >>> eria(HibernateGenericStore.java:287) >>> >>> at org.hisp.dhis.hibernate.HibernateGenericStore.getSharingObje >>> ct(HibernateGenericStore.java:319) >>> >>> at org.hisp.dhis.common.hibernate.HibernateIdentifiableObjectSt >>> ore.getByUid(HibernateIdentifiableObjectStore.java:108) >>> >>> at org.hisp.dhis.common.hibernate.HibernateIdentifiableObjectSt >>> ore.getByUid(HibernateIdentifiableObjectStore.java:58) >>> >>> at org.hisp.dhis.common.DefaultIdentifiableObjectManager.get(De >>> faultIdentifiableObjectManager.java:244) >>> >>> at sun.reflect.GeneratedMethodAccessor465.invoke(Unknown Source) >>> >>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe >>> thodAccessorImpl.java:43) >>> >>> at java.lang.reflect.Method.invoke(Method.java:483) >>> >>> at org.springframework.aop.support.AopUtils.invokeJoinpointUsin >>> gReflection(AopUtils.java:302) >>> >>> at org.springframework.aop.framework.ReflectiveMethodInvocation >>> .invokeJoinpoint(ReflectiveMethodInvocation.java:190) >>> >>> at org.springframework.aop.framework.ReflectiveMethodInvocation >>> .proceed(ReflectiveMethodInvocation.java:157) >>> >>> at org.springframework.transaction.interceptor.TransactionInter >>> ceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) >>> >>> at org.springframework.transaction.interceptor.TransactionAspec >>> tSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) >>> >>> at org.springframework.transaction.interceptor.TransactionInter >>> ceptor.invoke(TransactionInterceptor.java:96) >>> >>> at org.springframework.aop.framework.ReflectiveMethodInvocation >>> .proceed(ReflectiveMethodInvocation.java:179) >>> >>> at org.springframework.aop.interceptor.ExposeInvocationIntercep >>> tor.invoke(ExposeInvocationInterceptor.java:92) >>> >>> at org.springframework.aop.framework.ReflectiveMethodInvocation >>> .proceed(ReflectiveMethodInvocation.java:179) >>> >>> at org.springframework.aop.framework.JdkDynamicAopProxy.invoke( >>> JdkDynamicAopProxy.java:208) >>> >>> at com.sun.proxy.$Proxy68.get(Unknown Source) >>> >>> at org.hisp.dhis.dxf2.metadata.DefaultObjectBridge.getUidMatch( >>> DefaultObjectBridge.java:723) >>> >>> at org.hisp.dhis.dxf2.metadata.DefaultObjectBridge.findMatches( >>> DefaultObjectBridge.java:527) >>> >>> at org.hisp.dhis.dxf2.metadata.DefaultObjectBridge.getObjects(D >>> efaultObjectBridge.java:422) >>> >>> at org.hisp.dhis.dxf2.metadata.importers.DefaultIdentifiableObj >>> ectImporter.validateIdentifiableObject(DefaultIdentifiableOb >>> jectImporter.java:690) >>> >>> at org.hisp.dhis.dxf2.metadata.importers.DefaultIdentifiableObj >>> ectImporter.importObjectLocal(DefaultIdentifiableObjectImpor >>> ter.java:566) >>> >>> at org.hisp.dhis.dxf2.metadata.importers.DefaultIdentifiableObj >>> ectImporter.importObjects(DefaultIdentifiableObjectImporter.java:191) >>> >>> at org.hisp.dhis.dxf2.metadata.DefaultImportService.doImport(De >>> faultImportService.java:261) >>> >>> at org.hisp.dhis.dxf2.metadata.DefaultImportService.importMetaD >>> ata(DefaultImportService.java:177) >>> >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>> >>> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce >>> ssorImpl.java:62) >>> >>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe >>> thodAccessorImpl.java:43) >>> >>> at java.lang.reflect.Method.invoke(Method.java:483) >>> >>> at org.springframework.aop.support.AopUtils.invokeJoinpointUsin >>> gReflection(AopUtils.java:302) >>> >>> at org.springframework.aop.framework.ReflectiveMethodInvocation >>> .invokeJoinpoint(ReflectiveMethodInvocation.java:190) >>> >>> at org.springframework.aop.framework.ReflectiveMethodInvocation >>> .proceed(ReflectiveMethodInvocation.java:157) >>> >>> at org.springframework.transaction.interceptor.TransactionInter >>> ceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) >>> >>> at org.springframework.transaction.interceptor.TransactionAspec >>> tSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) >>> >>> at org.springframework.transaction.interceptor.TransactionInter >>> ceptor.invoke(TransactionInterceptor.java:96) >>> >>> at org.springframework.aop.framework.ReflectiveMethodInvocation >>> .proceed(ReflectiveMethodInvocation.java:179) >>> >>> at org.springframework.aop.framework.JdkDynamicAopProxy.invoke( >>> JdkDynamicAopProxy.java:208) >>> >>> at com.sun.proxy.$Proxy241.importMetaData(Unknown Source) >>> >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>> >>> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce >>> ssorImpl.java:62) >>> >>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe >>> thodAccessorImpl.java:43) >>> >>> at java.lang.reflect.Method.invoke(Method.java:483) >>> >>> at org.springframework.aop.support.AopUtils.invokeJoinpointUsin >>> gReflection(AopUtils.java:302) >>> >>> at org.springframework.aop.framework.ReflectiveMethodInvocation >>> .invokeJoinpoint(ReflectiveMethodInvocation.java:190) >>> >>> at org.springframework.aop.framework.ReflectiveMethodInvocation >>> .proceed(ReflectiveMethodInvocation.java:157) >>> >>> at org.springframework.aop.support.DelegatingIntroductionInterc >>> eptor.doProceed(DelegatingIntroductionInterceptor.java:133) >>> >>> at org.springframework.aop.support.DelegatingIntroductionInterc >>> eptor.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.$Proxy193.importMetaData(Unknown Source) >>> >>> at org.hisp.dhis.importexport.action.util.ImportMetaDataTask.ca >>> ll(ImportMetaDataTask.java:103) >>> >>> at org.hisp.dhis.security.SecurityContextRunnable.run(SecurityC >>> ontextRunnable.java:57) >>> >>> at org.springframework.scheduling.support.DelegatingErrorHandli >>> ngRunnable.run(DelegatingErrorHandlingRunnable.java:54) >>> >>> at java.util.concurrent.Executors$RunnableAdapter.call(Executor >>> s.java:511) >>> >>> at java.util.concurrent.FutureTask.run(FutureTask.java:266) >>> >>> at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFu >>> tureTask.access$201(ScheduledThreadPoolExecutor.java:180) >>> >>> at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFu >>> tureTask.run(ScheduledThreadPoolExecutor.java:293) >>> >>> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool >>> Executor.java:1142) >>> >>> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo >>> lExecutor.java:617) >>> >>> at java.lang.Thread.run(Thread.java:745) >>> -- >>> Lorill Crees >>> Project Leader / Senior Developer >>> 2Paths Solutions Ltd. <http://www.2paths.com> >>> >>> [email protected] >>> skype: lorill2paths >>> (604) 689-4123 x 15 <(604)%20689-4123> >>> >>> _______________________________________________ >>> Mailing list: https://launchpad.net/~dhis2-devs >>> Post to : [email protected] >>> Unsubscribe : https://launchpad.net/~dhis2-devs >>> More help : https://help.launchpad.net/ListHelp >>> >>> >> > > > -- > Lorill Crees > Project Leader / Senior Developer > 2Paths Solutions Ltd. <http://www.2paths.com> > > [email protected] > skype: lorill2paths > (604) 689-4123 x 15 <(604)%20689-4123> > -- Lorill Crees Project Leader / Senior Developer 2Paths Solutions Ltd. <http://www.2paths.com> [email protected] skype: lorill2paths (604) 689-4123 x 15
_______________________________________________ Mailing list: https://launchpad.net/~dhis2-devs Post to : [email protected] Unsubscribe : https://launchpad.net/~dhis2-devs More help : https://help.launchpad.net/ListHelp

