Hi all, Is there any update on this? I am back to square one as I only have access to MySQL databases on our live environment, hence the data entry functionality is not usable. Is PostgreSQL the only way?
Thanks for your help, Alex > On 19 Jan 2015, at 10:32, sumudu weerasinghe <sumudu...@gmail.com> wrote: > > Hi All, > > I am also having the same problem as mention above , ( log file and screen > shot are attached ) > My database is Mysql > version 2.17 R 17683 > According to above discussion changing to a PostgreSQL is the only solution. > > Do we have to change all DHIS2 instance to PostgreSQL? or any other way to > do it in Mysql? > > > > Regards > > Sumudu > > >> On Mon, Dec 1, 2014 at 8:25 PM, Alexandre Vanobberghen <alex5n...@gmail.com> >> wrote: >> Hi, >> I tried: >> - H2, it didn't work. >> - MySQL, it didn't work. >> - PostgreSQL, it worked. >> >> Thanks for your help! >> Alex >> >>> On 28 Nov 2014, at 15:39, Knut Staring <knu...@gmail.com> wrote: >>> >>> You could try Tomcat (alone or as part of xampp) >>> >>>> On 28 Nov 2014 19:40, "Alex Vano" <alex5n...@gmail.com> wrote: >>>> Dear users, >>>> >>>> I cannot enter any data in my forms, the error below appears for all >>>> values I input in the fields. >>>> I've tried the same on 3 different instances (1 tomcat and 2 DHIS2-live on >>>> Windows 7 and Mac OSX laptops) with: >>>> Version: 2.17 >>>> Build: 17561 >>>> Web browsers: IE, Firefox, Chrome >>>> >>>> In these 3 cases I have created the following test data: >>>> - Data element 1 >>>> - Data element 2 >>>> - 1 data set that contains the above data elements >>>> - 1 orgunit to which I assigned the above data set >>>> >>>> Then I try "Data Entry" for this data set. The below error occurs when I >>>> enter the value of any data element. >>>> It seems that I can't access the API, is there anything I should configure >>>> in particular? Clearly I am forgetting something as it happens on 3 >>>> different machines. Thanks for the help! >>>> >>>> Alex >>>> >>>> Error message: >>>> >>>> HTTP ERROR 500 >>>> >>>> Problem accessing /api/dataValues. Reason: could not execute statement >>>> >>>> Caused by: >>>> org.hibernate.exception.GenericJDBCException: could not execute statement >>>> at >>>> org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54) >>>> at >>>> org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) >>>> at >>>> org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) >>>> at >>>> org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:136) >>>> at >>>> org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:96) >>>> at >>>> org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:58) >>>> at >>>> org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2966) >>>> at >>>> org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3477) >>>> at >>>> org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:81) >>>> at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:362) >>>> at >>>> org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:203) >>>> at >>>> org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:183) >>>> at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:167) >>>> at >>>> org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:321) >>>> at >>>> org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:286) >>>> at >>>> org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:192) >>>> at >>>> org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:125) >>>> at >>>> org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:204) >>>> at >>>> org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55) >>>> at >>>> org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:189) >>>> at >>>> org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49) >>>> at >>>> org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90) >>>> at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:763) >>>> at org.hibernate.internal.SessionImpl.save(SessionImpl.java:755) >>>> at org.hibernate.internal.SessionImpl.save(SessionImpl.java:751) >>>> at >>>> org.hisp.dhis.hibernate.HibernateGenericStore.save(HibernateGenericStore.java:338) >>>> at >>>> org.hisp.dhis.common.hibernate.HibernateIdentifiableObjectStore.save(HibernateIdentifiableObjectStore.java:84) >>>> at >>>> org.hisp.dhis.period.hibernate.HibernatePeriodStore.addPeriod(HibernatePeriodStore.java:62) >>>> at >>>> org.hisp.dhis.period.hibernate.HibernatePeriodStore.reloadForceAddPeriod(HibernatePeriodStore.java:175) >>>> at >>>> org.hisp.dhis.period.DefaultPeriodService.reloadPeriod(DefaultPeriodService.java:278) >>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) >>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) >>>> at java.lang.reflect.Method.invoke(Unknown Source) >>>> at >>>> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) >>>> 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.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98) >>>> at >>>> org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262) >>>> at >>>> org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) >>>> at >>>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) >>>> at >>>> org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) >>>> at >>>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) >>>> at >>>> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) >>>> at com.sun.proxy.$Proxy58.reloadPeriod(Unknown Source) >>>> at >>>> org.hisp.dhis.dataset.hibernate.HibernateLockExceptionStore.getCount(HibernateLockExceptionStore.java:162) >>>> at >>>> org.hisp.dhis.dataset.DefaultDataSetService.isLocked(DefaultDataSetService.java:499) >>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) >>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) >>>> at java.lang.reflect.Method.invoke(Unknown Source) >>>> at >>>> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) >>>> 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.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98) >>>> at >>>> org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262) >>>> at >>>> org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) >>>> at >>>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) >>>> at >>>> org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) >>>> at >>>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) >>>> at >>>> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) >>>> at com.sun.proxy.$Proxy59.isLocked(Unknown Source) >>>> at >>>> org.hisp.dhis.de.action.GetDataValuesForDataSetAction.execute(GetDataValuesForDataSetAction.java:274) >>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) >>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) >>>> at java.lang.reflect.Method.invoke(Unknown Source) >>>> at >>>> com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450) >>>> at >>>> com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289) >>>> at >>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252) >>>> at >>>> org.hisp.dhis.webportal.interceptor.XWorkPortalUserInterceptor.intercept(XWorkPortalUserInterceptor.java:91) >>>> at >>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) >>>> at >>>> org.hisp.dhis.webportal.interceptor.XWorkPortalModuleInterceptor.intercept(XWorkPortalModuleInterceptor.java:92) >>>> at >>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) >>>> at >>>> org.hisp.dhis.webportal.interceptor.XWorkPortalMenuInterceptor.intercept(XWorkPortalMenuInterceptor.java:100) >>>> at >>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) >>>> at >>>> org.hisp.dhis.webportal.interceptor.XWorkPortalParamsInterceptor.intercept(XWorkPortalParamsInterceptor.java:150) >>>> at >>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) >>>> at >>>> org.hisp.dhis.interceptor.ContextInterceptor.intercept(ContextInterceptor.java:83) >>>> at >>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) >>>> at >>>> org.hisp.dhis.interceptor.UserSettingInterceptor.intercept(UserSettingInterceptor.java:84) >>>> at >>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) >>>> at >>>> org.hisp.dhis.security.intercept.LoginInterceptor.intercept(LoginInterceptor.java:85) >>>> at >>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) >>>> at >>>> org.hisp.dhis.security.intercept.XWorkSecurityInterceptor.intercept(XWorkSecurityInterceptor.java:116) >>>> at >>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) >>>> at >>>> org.hisp.dhis.interceptor.SystemSettingInterceptor.intercept(SystemSettingInterceptor.java:135) >>>> at >>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) >>>> at >>>> org.hisp.dhis.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:139) >>>> at >>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) >>>> at >>>> com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:254) >>>> at >>>> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) >>>> at >>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) >>>> at >>>> com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191) >>>> at >>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) >>>> at >>>> org.hisp.dhis.interceptor.ExceptionInterceptor.intercept(ExceptionInterceptor.java:113) >>>> at >>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) >>>> at >>>> org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) >>>> at >>>> org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:562) >>>> at >>>> org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) >>>> at >>>> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99) >>>> at >>>> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) >>>> at >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) >>>> at >>>> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118) >>>> at >>>> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84) >>>> at >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> at >>>> org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) >>>> at >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> at >>>> org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103) >>>> at >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> at >>>> org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) >>>> at >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> at >>>> org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154) >>>> at >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> at >>>> org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) >>>> at >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> at >>>> org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150) >>>> at >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> at >>>> org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199) >>>> at >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> at >>>> org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199) >>>> at >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> at >>>> org.hisp.dhis.security.filter.CustomAuthenticationFilter.doFilter(CustomAuthenticationFilter.java:64) >>>> at >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> at >>>> org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110) >>>> at >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> at >>>> org.hisp.dhis.security.filter.AutomaticAccessFilter.doFilter(AutomaticAccessFilter.java:115) >>>> at >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> at >>>> org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:57) >>>> at >>>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) >>>> at >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> at >>>> org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50) >>>> at >>>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) >>>> at >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> at >>>> org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) >>>> at >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> at >>>> org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) >>>> at >>>> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) >>>> at >>>> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344) >>>> at >>>> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261) >>>> at >>>> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) >>>> at >>>> org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:152) >>>> at >>>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) >>>> at >>>> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) >>>> at >>>> org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) >>>> at >>>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) >>>> at >>>> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) >>>> at >>>> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) >>>> at >>>> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) >>>> at >>>> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) >>>> at >>>> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) >>>> at >>>> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:440) >>>> at >>>> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) >>>> at org.mortbay.jetty.Server.handle(Server.java:326) >>>> at >>>> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) >>>> at >>>> org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:926) >>>> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549) >>>> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) >>>> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) >>>> at >>>> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410) >>>> at >>>> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) >>>> Caused by: org.h2.jdbc.JdbcSQLException: General error: >>>> "java.lang.NullPointerException"; SQL statement: >>>> insert into period (periodid, periodtypeid, startdate, enddate) values >>>> (null, ?, ?, ?) [50000-181] >>>> at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) >>>> at org.h2.message.DbException.get(DbException.java:168) >>>> at org.h2.message.DbException.convert(DbException.java:295) >>>> at org.h2.command.Command.executeUpdate(Command.java:262) >>>> at >>>> org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:157) >>>> at >>>> org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:143) >>>> at >>>> com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105) >>>> at >>>> org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:133) >>>> ... 157 more >>>> Caused by: java.lang.NullPointerException >>>> at org.h2.table.Column.validateConvertUpdateSequence(Column.java:285) >>>> at org.h2.table.Table.validateConvertUpdateSequence(Table.java:725) >>>> at org.h2.command.dml.Insert.insertRows(Insert.java:151) >>>> at org.h2.command.dml.Insert.update(Insert.java:114) >>>> at org.h2.command.CommandContainer.update(CommandContainer.java:78) >>>> at org.h2.command.Command.executeUpdate(Command.java:254) >>>> ... 161 more >>>> >>>> _______________________________________________ >>>> Mailing list: https://launchpad.net/~dhis2-users >>>> Post to : dhis2-users@lists.launchpad.net >>>> Unsubscribe : https://launchpad.net/~dhis2-users >>>> More help : https://help.launchpad.net/ListHelp >> >> _______________________________________________ >> Mailing list: https://launchpad.net/~dhis2-users >> Post to : dhis2-users@lists.launchpad.net >> Unsubscribe : https://launchpad.net/~dhis2-users >> More help : https://help.launchpad.net/ListHelp > > <period id.txt> > <period id.PNG>
_______________________________________________ Mailing list: https://launchpad.net/~dhis2-users Post to : dhis2-users@lists.launchpad.net Unsubscribe : https://launchpad.net/~dhis2-users More help : https://help.launchpad.net/ListHelp