Hi Hannan, As discussed yesterday, I need more info to investigate this issue.
Can you run the below queries in your upgraded database and send over the result. select count(*) from objecttranslation where property is null; select * from objecttranslation where value like 'UH & FWC/Union Sub Centers(New)'; On Thu, Jun 8, 2017 at 9:42 AM, Hannan Khan <hann...@gmail.com> wrote: > Thanks Viet. > > But there is no record in 'translation' with null value. II run the query > and outcome is null. > > But the problem persists. > > Need urgent help. > > Regards > > Hannan > > On Wed, Jun 7, 2017 at 3:10 PM, Viet Nguyen <v...@dhis2.org> wrote: > >> Hi Hannan, >> >> I think this is caused by some invalid translation records in your >> database. >> >> Can you try to run the below query with the old database and then run the >> upgrade procedures again. Meanwhile I will try to add some null check >> conditions to the upgrade query to make sure this issue won't happen again. >> >> delete from translation where objectproperty is null; >> >> >> Regards, >> >> On Wed, Jun 7, 2017 at 9:58 AM, Hannan Khan <hann...@gmail.com> wrote: >> >>> Thanks a lot Calle and Morten. But how can I solve this. >>> >>> I got some clue form your mail, will check and get back to you within >>> few hours (stupid meetings!!). >>> >>> Regards >>> >>> Hannan >>> >>> >>> On Tue, Jun 6, 2017 at 1:25 PM, Calle Hedberg <calle.hedb...@gmail.com> >>> wrote: >>> >>>> Hannan, >>>> >>>> That looks very much like the bug I picked up just before the Goa >>>> academy - it's caused by the fact that you have OrgUnit attributes with >>>> null values (if you have any other meta-data object with attribute records >>>> with null values it would be the same). I worked with Morten to track it >>>> down and fix it. If this is the same, it could be that update was lost, >>>> somehow (assuming your build is from ~30th April or later). >>>> >>>> Build version don't tell me anything - what is the DATE of the 2.26 >>>> build you are using? Have you tried to update to the latest 2.26 build? >>>> >>>> Regards >>>> Calle >>>> >>>> On 6 June 2017 at 05:34, Hannan Khan <hann...@gmail.com> wrote: >>>> >>>>> Dear All >>>>> >>>>> We just upgrade nation instance form 22 to 26. Now we are facing an >>>>> issue. >>>>> >>>>> When we trying to update a organization unit it cannot be saved. Log >>>>> is as follows. The build we are using is 8f9dc62 >>>>> >>>>> * WARN 2017-06-06 08:56:27,127 SQL Error: 0, SQLState: 23502 >>>>> (SqlExceptionHelper.java [http-nio-8080-exec-205]) >>>>> * ERROR 2017-06-06 08:56:27,128 ERROR: null value in column "property" >>>>> violates not-null constraint >>>>> Detail: Failing row contains (44356689, en_GB, null, UH & FWC/Union >>>>> Sub Centers(New)). (SqlExceptionHelper.java [http-nio-8080-exec-205]) >>>>> org.hibernate.exception.ConstraintViolationException: could not >>>>> execute statement >>>>> at org.hibernate.exception.internal.SQLStateConversionDelegate. >>>>> convert(SQLStateConversionDelegate.java:112) >>>>> at org.hibernate.exception.internal.StandardSQLExceptionConvert >>>>> er.convert(StandardSQLExceptionConverter.java:42) >>>>> at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(Sql >>>>> ExceptionHelper.java:111) >>>>> at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(Sql >>>>> ExceptionHelper.java:97) >>>>> at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.execu >>>>> teUpdate(ResultSetReturnImpl.java:207) >>>>> at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.ad >>>>> dToBatch(NonBatchingBatch.java:45) >>>>> at org.hibernate.persister.entity.AbstractEntityPersister.inser >>>>> t(AbstractEntityPersister.java:2947) >>>>> at org.hibernate.persister.entity.AbstractEntityPersister.inser >>>>> t(AbstractEntityPersister.java:3447) >>>>> at org.hibernate.action.internal.EntityInsertAction.execute(Ent >>>>> ityInsertAction.java:89) >>>>> at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQu >>>>> eue.java:582) >>>>> at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQu >>>>> eue.java:456) >>>>> at org.hibernate.event.internal.AbstractFlushingEventListener.p >>>>> erformExecutions(AbstractFlushingEventListener.java:337) >>>>> at org.hibernate.event.internal.DefaultFlushEventListener.onFlu >>>>> sh(DefaultFlushEventListener.java:39) >>>>> at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1295) >>>>> at org.hisp.dhis.dxf2.metadata.objectbundle.DefaultObjectBundle >>>>> Service.commit(DefaultObjectBundleService.java:167) >>>>> at sun.reflect.GeneratedMethodAccessor2719.invoke(Unknown Source) >>>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe >>>>> thodAccessorImpl.java:43) >>>>> at java.lang.reflect.Method.invoke(Method.java:498) >>>>> at org.springframework.aop.support.AopUtils.invokeJoinpointUsin >>>>> gReflection(AopUtils.java:333) >>>>> 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:282) >>>>> 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:213) >>>>> at com.sun.proxy.$Proxy175.commit(Unknown Source) >>>>> at org.hisp.dhis.dxf2.metadata.DefaultMetadataImportService.imp >>>>> ortMetadata(DefaultMetadataImportService.java:127) >>>>> at sun.reflect.GeneratedMethodAccessor2712.invoke(Unknown Source) >>>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe >>>>> thodAccessorImpl.java:43) >>>>> at java.lang.reflect.Method.invoke(Method.java:498) >>>>> at org.springframework.aop.support.AopUtils.invokeJoinpointUsin >>>>> gReflection(AopUtils.java:333) >>>>> 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:282) >>>>> 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:213) >>>>> at com.sun.proxy.$Proxy177.importMetadata(Unknown Source) >>>>> at org.hisp.dhis.webapi.controller.AbstractCrudController.putJs >>>>> onObject(AbstractCrudController.java:703) >>>>> at sun.reflect.GeneratedMethodAccessor2917.invoke(Unknown Source) >>>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe >>>>> thodAccessorImpl.java:43) >>>>> at java.lang.reflect.Method.invoke(Method.java:498) >>>>> at org.springframework.web.method.support.InvocableHandlerMetho >>>>> d.doInvoke(InvocableHandlerMethod.java:205) >>>>> at org.springframework.web.method.support.InvocableHandlerMetho >>>>> d.invokeForRequest(InvocableHandlerMethod.java:133) >>>>> at org.springframework.web.servlet.mvc.method.annotation.Servle >>>>> tInvocableHandlerMethod.invokeAndHandle(ServletInvocableHand >>>>> lerMethod.java:116) >>>>> at org.springframework.web.servlet.mvc.method.annotation.Reques >>>>> tMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHan >>>>> dlerAdapter.java:827) >>>>> at org.springframework.web.servlet.mvc.method.annotation.Reques >>>>> tMappingHandlerAdapter.handleInternal(RequestMappingHandlerA >>>>> dapter.java:738) >>>>> at org.springframework.web.servlet.mvc.method.AbstractHandlerMe >>>>> thodAdapter.handle(AbstractHandlerMethodAdapter.java:85) >>>>> at org.springframework.web.servlet.DispatcherServlet.doDispatch >>>>> (DispatcherServlet.java:963) >>>>> at org.springframework.web.servlet.DispatcherServlet.doService( >>>>> DispatcherServlet.java:897) >>>>> at org.springframework.web.servlet.FrameworkServlet.processRequ >>>>> est(FrameworkServlet.java:970) >>>>> at org.springframework.web.servlet.FrameworkServlet.doPut(Frame >>>>> workServlet.java:883) >>>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:651) >>>>> at org.springframework.web.servlet.FrameworkServlet.service(Fra >>>>> meworkServlet.java:846) >>>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) >>>>> at org.apache.catalina.core.ApplicationFilterChain.internalDoFi >>>>> lter(ApplicationFilterChain.java:292) >>>>> at org.apache.catalina.core.ApplicationFilterChain.doFilter(App >>>>> licationFilterChain.java:207) >>>>> at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilte >>>>> r.java:52) >>>>> at org.apache.catalina.core.ApplicationFilterChain.internalDoFi >>>>> lter(ApplicationFilterChain.java:240) >>>>> at org.apache.catalina.core.ApplicationFilterChain.doFilter(App >>>>> licationFilterChain.java:207) >>>>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>>>> terChain.doFilter(FilterChainProxy.java:330) >>>>> at org.springframework.security.web.access.intercept.FilterSecu >>>>> rityInterceptor.invoke(FilterSecurityInterceptor.java:118) >>>>> at org.springframework.security.web.access.intercept.FilterSecu >>>>> rityInterceptor.doFilter(FilterSecurityInterceptor.java:84) >>>>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>>>> terChain.doFilter(FilterChainProxy.java:342) >>>>> at org.springframework.security.web.access.ExceptionTranslation >>>>> Filter.doFilter(ExceptionTranslationFilter.java:113) >>>>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>>>> terChain.doFilter(FilterChainProxy.java:342) >>>>> at org.springframework.security.web.session.SessionManagementFi >>>>> lter.doFilter(SessionManagementFilter.java:103) >>>>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>>>> terChain.doFilter(FilterChainProxy.java:342) >>>>> at org.springframework.security.web.authentication.AnonymousAut >>>>> henticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) >>>>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>>>> terChain.doFilter(FilterChainProxy.java:342) >>>>> at org.springframework.security.web.servletapi.SecurityContextH >>>>> olderAwareRequestFilter.doFilter(SecurityContextHolderAwareR >>>>> equestFilter.java:154) >>>>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>>>> terChain.doFilter(FilterChainProxy.java:342) >>>>> at org.springframework.security.web.savedrequest.RequestCacheAw >>>>> areFilter.doFilter(RequestCacheAwareFilter.java:45) >>>>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>>>> terChain.doFilter(FilterChainProxy.java:342) >>>>> at org.springframework.security.web.authentication.www.BasicAut >>>>> henticationFilter.doFilter(BasicAuthenticationFilter.java:150) >>>>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>>>> terChain.doFilter(FilterChainProxy.java:342) >>>>> at org.hisp.dhis.security.filter.CorsFilter.doFilter(CorsFilter >>>>> .java:126) >>>>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>>>> terChain.doFilter(FilterChainProxy.java:342) >>>>> at org.springframework.security.web.authentication.AbstractAuth >>>>> enticationProcessingFilter.doFilter(AbstractAuthenticationPr >>>>> ocessingFilter.java:199) >>>>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>>>> terChain.doFilter(FilterChainProxy.java:342) >>>>> at org.springframework.security.web.authentication.AbstractAuth >>>>> enticationProcessingFilter.doFilter(AbstractAuthenticationPr >>>>> ocessingFilter.java:199) >>>>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>>>> terChain.doFilter(FilterChainProxy.java:342) >>>>> at org.hisp.dhis.security.filter.CustomAuthenticationFilter.doF >>>>> ilter(CustomAuthenticationFilter.java:64) >>>>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>>>> terChain.doFilter(FilterChainProxy.java:342) >>>>> at org.springframework.security.oauth2.provider.authentication. >>>>> OAuth2AuthenticationProcessingFilter.doFilter(OAuth2Authenti >>>>> cationProcessingFilter.java:140) >>>>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>>>> terChain.doFilter(FilterChainProxy.java:342) >>>>> at org.springframework.security.web.authentication.logout.Logou >>>>> tFilter.doFilter(LogoutFilter.java:110) >>>>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>>>> terChain.doFilter(FilterChainProxy.java:342) >>>>> at org.hisp.dhis.security.filter.AutomaticAccessFilter.doFilter >>>>> (AutomaticAccessFilter.java:115) >>>>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>>>> terChain.doFilter(FilterChainProxy.java:342) >>>>> at org.springframework.security.web.header.HeaderWriterFilter.d >>>>> oFilterInternal(HeaderWriterFilter.java:57) >>>>> at org.springframework.web.filter.OncePerRequestFilter.doFilter >>>>> (OncePerRequestFilter.java:107) >>>>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>>>> terChain.doFilter(FilterChainProxy.java:342) >>>>> at org.springframework.security.web.context.request.async.WebAs >>>>> yncManagerIntegrationFilter.doFilterInternal(WebAsyncManager >>>>> IntegrationFilter.java:50) >>>>> at org.springframework.web.filter.OncePerRequestFilter.doFilter >>>>> (OncePerRequestFilter.java:107) >>>>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>>>> terChain.doFilter(FilterChainProxy.java:342) >>>>> at org.springframework.security.web.context.SecurityContextPers >>>>> istenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) >>>>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>>>> terChain.doFilter(FilterChainProxy.java:342) >>>>> at org.springframework.security.web.FilterChainProxy.doFilterIn >>>>> ternal(FilterChainProxy.java:192) >>>>> at org.springframework.security.web.FilterChainProxy.doFilter(F >>>>> ilterChainProxy.java:160) >>>>> at org.springframework.web.filter.DelegatingFilterProxy.invokeD >>>>> elegate(DelegatingFilterProxy.java:346) >>>>> at org.springframework.web.filter.DelegatingFilterProxy.doFilte >>>>> r(DelegatingFilterProxy.java:262) >>>>> at org.apache.catalina.core.ApplicationFilterChain.internalDoFi >>>>> lter(ApplicationFilterChain.java:240) >>>>> at org.apache.catalina.core.ApplicationFilterChain.doFilter(App >>>>> licationFilterChain.java:207) >>>>> at org.hisp.dhis.servlet.filter.HttpUrlPatternFilter.doFilter(H >>>>> ttpUrlPatternFilter.java:120) >>>>> at org.apache.catalina.core.ApplicationFilterChain.internalDoFi >>>>> lter(ApplicationFilterChain.java:240) >>>>> at org.apache.catalina.core.ApplicationFilterChain.doFilter(App >>>>> licationFilterChain.java:207) >>>>> at org.springframework.web.filter.ShallowEtagHeaderFilter.doFil >>>>> terInternal(ShallowEtagHeaderFilter.java:105) >>>>> at org.hisp.dhis.servlet.filter.ExcludableShallowEtagHeaderFilt >>>>> er.doFilterInternal(ExcludableShallowEtagHeaderFilter.java:112) >>>>> at org.springframework.web.filter.OncePerRequestFilter.doFilter >>>>> (OncePerRequestFilter.java:107) >>>>> at org.apache.catalina.core.ApplicationFilterChain.internalDoFi >>>>> lter(ApplicationFilterChain.java:240) >>>>> at org.apache.catalina.core.ApplicationFilterChain.doFilter(App >>>>> licationFilterChain.java:207) >>>>> at org.springframework.orm.hibernate5.support.OpenSessionInView >>>>> Filter.doFilterInternal(OpenSessionInViewFilter.java:151) >>>>> at org.springframework.web.filter.OncePerRequestFilter.doFilter >>>>> (OncePerRequestFilter.java:107) >>>>> at org.apache.catalina.core.ApplicationFilterChain.internalDoFi >>>>> lter(ApplicationFilterChain.java:240) >>>>> at org.apache.catalina.core.ApplicationFilterChain.doFilter(App >>>>> licationFilterChain.java:207) >>>>> at org.springframework.web.filter.CharacterEncodingFilter.doFil >>>>> terInternal(CharacterEncodingFilter.java:197) >>>>> at org.springframework.web.filter.OncePerRequestFilter.doFilter >>>>> (OncePerRequestFilter.java:107) >>>>> at org.apache.catalina.core.ApplicationFilterChain.internalDoFi >>>>> lter(ApplicationFilterChain.java:240) >>>>> at org.apache.catalina.core.ApplicationFilterChain.doFilter(App >>>>> licationFilterChain.java:207) >>>>> at org.apache.catalina.core.StandardWrapperValve.invoke(Standar >>>>> dWrapperValve.java:213) >>>>> at org.apache.catalina.core.StandardContextValve.invoke(Standar >>>>> dContextValve.java:106) >>>>> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(A >>>>> uthenticatorBase.java:502) >>>>> at org.apache.catalina.core.StandardHostValve.invoke(StandardHo >>>>> stValve.java:141) >>>>> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo >>>>> rtValve.java:79) >>>>> at org.apache.catalina.valves.AbstractAccessLogValve.invoke(Abs >>>>> tractAccessLogValve.java:616) >>>>> at org.apache.catalina.core.StandardEngineValve.invoke(Standard >>>>> EngineValve.java:88) >>>>> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd >>>>> apter.java:522) >>>>> at org.apache.coyote.http11.AbstractHttp11Processor.process(Abs >>>>> tractHttp11Processor.java:1095) >>>>> at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler >>>>> .process(AbstractProtocol.java:672) >>>>> at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun >>>>> (NioEndpoint.java:1504) >>>>> at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(N >>>>> ioEndpoint.java:1460) >>>>> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool >>>>> Executor.java:1142) >>>>> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo >>>>> lExecutor.java:617) >>>>> at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.r >>>>> un(TaskThread.java:61) >>>>> at java.lang.Thread.run(Thread.java:745) >>>>> Caused by: org.postgresql.util.PSQLException: ERROR: null value in >>>>> column "property" violates not-null constraint >>>>> Detail: Failing row contains (44356689, en_GB, null, UH & FWC/Union >>>>> Sub Centers(New)). >>>>> at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorRespons >>>>> e(QueryExecutorImpl.java:2455) >>>>> at org.postgresql.core.v3.QueryExecutorImpl.processResults(Quer >>>>> yExecutorImpl.java:2155) >>>>> at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecut >>>>> orImpl.java:288) >>>>> at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement. >>>>> java:430) >>>>> at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:356) >>>>> at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgP >>>>> reparedStatement.java:168) >>>>> at org.postgresql.jdbc.PgPreparedStatement.executeUpdate(PgPrep >>>>> aredStatement.java:135) >>>>> at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUp >>>>> date(NewProxyPreparedStatement.java:105) >>>>> at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.execu >>>>> teUpdate(ResultSetReturnImpl.java:204) >>>>> ... 133 more >>>>> >>>>> Need urgent help. >>>>> >>>>> Regards >>>>> >>>>> Muhammad Abdul Hannan Khan >>>>> Team Leader >>>>> Support to the National HMIS >>>>> MIS, Director General of Health Service >>>>> Ministry of Health and Family Welfare >>>>> >>>>> T +880-2- 58816459 <+880%202-58816459>, 58816412 ext 118 >>>>> F +88 02 58813 875 >>>>> M+88 01819 239 241 >>>>> M+88 01534 312 066 >>>>> E hann...@gmail.com >>>>> S hannan.khan.dhaka >>>>> B hannan-tech.blogspot.com >>>>> L https://bd.linkedin.com/in/hannankhan >>>>> >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> Mailing list: https://launchpad.net/~dhis2-devs >>>>> Post to : dhis2-devs@lists.launchpad.net >>>>> Unsubscribe : https://launchpad.net/~dhis2-devs >>>>> More help : https://help.launchpad.net/ListHelp >>>>> >>>>> >>>> >>>> >>>> -- >>>> >>>> ******************************************* >>>> >>>> Calle Hedberg >>>> >>>> 46D Alma Road, 7700 Rosebank, SOUTH AFRICA >>>> >>>> Tel/fax (home): +27-21-685-6472 <+27%2021%20685%206472> >>>> >>>> Cell: +27-82-853-5352 <+27%2082%20853%205352> >>>> >>>> Iridium SatPhone: +8816-315-19119 <+881%206%20315%2019119> >>>> >>>> Email: calle.hedb...@gmail.com >>>> >>>> Skype: calle_hedberg >>>> >>>> ******************************************* >>>> >>>> >>> >>> >>> -- >>> Muhammad Abdul Hannan Khan >>> Team Leader >>> Support to the National HMIS >>> MIS, Director General of Health Service >>> Ministry of Health and Family Welfare >>> >>> T +880-2- 58816459 <+880%202-58816459>, 58816412 ext 118 >>> F +88 02 58813 875 >>> M+88 01819 239 241 >>> M+88 01534 312 066 >>> E hann...@gmail.com >>> S hannan.khan.dhaka >>> B hannan-tech.blogspot.com >>> L https://bd.linkedin.com/in/hannankhan >>> >>> >>> >>> >>> _______________________________________________ >>> Mailing list: https://launchpad.net/~dhis2-devs >>> Post to : dhis2-devs@lists.launchpad.net >>> Unsubscribe : https://launchpad.net/~dhis2-devs >>> More help : https://help.launchpad.net/ListHelp >>> >>> >> >> >> -- >> >> Viet Nguyen >> Software Developer, DHIS 2 >> University of Oslo >> http://www.dhis2.org >> >> >> > > > -- > Muhammad Abdul Hannan Khan > Team Leader > Support to the National HMIS > MIS, Director General of Health Service > Ministry of Health and Family Welfare > > T +880-2- 58816459, 58816412 ext 118 > F +88 02 58813 875 > M+88 01819 239 241 > M+88 01534 312 066 > E hann...@gmail.com > S hannan.khan.dhaka > B hannan-tech.blogspot.com > L https://bd.linkedin.com/in/hannankhan > > > > -- Viet Nguyen Software Developer, DHIS 2 University of Oslo http://www.dhis2.org
_______________________________________________ Mailing list: https://launchpad.net/~dhis2-devs Post to : dhis2-devs@lists.launchpad.net Unsubscribe : https://launchpad.net/~dhis2-devs More help : https://help.launchpad.net/ListHelp