Great! It is working now! Thanks Morten
On Fri, Aug 15, 2014 at 11:08 AM, Morten Olav Hansen <[email protected]> wrote: > Hi > > This file is working fine in 2.16/trunk, sorry for telling you something > wrong, but since you are using an old version, you do actually need the old > way of doing this.. which is: > > <events> > <events> > <event> ... </event> > </events> > </events> > > This is due to a missing feature in the library we used for 2.15, it was > fixed in 2.16 and version going forward does not require this double > <events /> element > > -- > Morten > > > On Fri, Aug 15, 2014 at 4:02 PM, Jose Garcia Muñoz <[email protected]> > wrote: > >> >> Here it goes... >> >> We can set up an account for you in our dev server in case you need some >> testing. >> >> Many thanks Morten >> >> >> On Fri, Aug 15, 2014 at 10:11 AM, Morten Olav Hansen <[email protected]> >> wrote: >> >>> Its hard to say exactly what's wrong here.. but can you send me the file >>> as an attachment? it is complaining about the format of the file, so there >>> must be something there.. probably something >>> >>> -- >>> Morten >>> >>> >>> On Thu, Aug 14, 2014 at 4:08 PM, Jose Garcia Muñoz <[email protected]> >>> wrote: >>> >>>> >>>> Here it goes. Thanks. I have added the namespace with the same result. >>>> >>>> C:\Program Files\cURL\bin>curl.exe -d @c:\Users\Jose\PSI\testTZ.xml " >>>> https://dev2.psi-mis.org/api/events?orgUnitIdScheme=code >>>> " -H "Content-Type:application/xml" -u myuser:mypass -v >>>> * Hostname was NOT found in DNS cache >>>> * Adding handle: conn: 0xe05248 >>>> * Adding handle: send: 0 >>>> * Adding handle: recv: 0 >>>> * Curl_addHandleToPipeline: length: 1 >>>> * - Conn 0 (0xe05248) send_pipe: 1, recv_pipe: 0 >>>> * Trying 107.170.109.182... >>>> * Connected to dev2.psi-mis.org (107.170.109.182) port 443 (#0) >>>> * successfully set certificate verify locations: >>>> * CAfile: C:\Program Files\cURL\bin\curl-ca-bundle.crt >>>> CApath: none >>>> * SSLv3, TLS handshake, Client hello (1): >>>> * SSLv3, TLS handshake, Server hello (2): >>>> * SSLv3, TLS handshake, CERT (11): >>>> * SSLv3, TLS handshake, Server finished (14): >>>> * SSLv3, TLS handshake, Client key exchange (16): >>>> * SSLv3, TLS change cipher, Client hello (1): >>>> * SSLv3, TLS handshake, Finished (20): >>>> * SSLv3, TLS change cipher, Client hello (1): >>>> * SSLv3, TLS handshake, Finished (20): >>>> * SSL connection using RC4-SHA >>>> * Server certificate: >>>> * subject: serialNumber=vXzmodpZ3BxUINTU1qnaoJo0cbAA/PpJ; >>>> OU=GT94607079; OU=See www.rapidssl.com/resources/cps (c)14; >>>> OU=Domain Control Validated - RapidSSL(R); CN=*.psi-mis.org >>>> * start date: 2014-05-10 14:40:48 GMT >>>> * expire date: 2015-06-13 11:02:37 GMT >>>> * subjectAltName: dev2.psi-mis.org matched >>>> * issuer: C=US; O=GeoTrust, Inc.; CN=RapidSSL CA >>>> * SSL certificate verify ok. >>>> * Server auth using Basic with user 'jose' >>>> > POST /api/events?orgUnitIdScheme=code HTTP/1.1 >>>> > Authorization: Basic am9zZTpKR00yMDE0eHg= >>>> > User-Agent: curl/7.34.0 >>>> > Host: dev2.psi-mis.org >>>> > Accept: */* >>>> > Content-Type:application/xml >>>> > Content-Length: 1484 >>>> > Expect: 100-continue >>>> > >>>> < HTTP/1.1 100 Continue >>>> < HTTP/1.1 500 Internal Server Error >>>> * Server nginx is not blacklisted >>>> < Server: nginx >>>> < Date: Thu, 14 Aug 2014 09:05:23 GMT >>>> < Content-Type: text/html;charset=utf-8 >>>> < Transfer-Encoding: chunked >>>> < Connection: keep-alive >>>> * HTTP error before end of send, stop sending >>>> < >>>> <html><head><title>Apache Tomcat/7.0.39 - Error >>>> report</title><style><!--H1 >>>> {font-family:Tahoma,Arial,sans-serif;color:white; >>>> background-color:#525D76;font-size:22px;} H2 >>>> {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-s >>>> ize:16px;} H3 >>>> {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} >>>> BODY {font-family:Ta >>>> homa,Arial,sans-serif;color:black;background-color:white;} B >>>> {font-family:Tahoma,Arial,sans-serif;color:white;background-colo >>>> r:#525D76;} P >>>> {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A >>>> {color : black;}A.name {col >>>> or : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP >>>> Status 500 - Can not deserialize instance of java.lang.Str >>>> ing out of START_OBJECT token</h1><HR size="1" >>>> noshade="noshade"><p><b>type</b> Exception report</p><p><b>message</b> >>>> <u>Can >>>> not deserialize instance of java.lang.String out of START_OBJECT >>>> token</u></p><p><b>description</b> <u>The server encountered >>>> an internal error that prevented it from fulfilling this >>>> request.</u></p><p><b>exception</b> <pre>com.fasterxml.jackson.data >>>> bind.JsonMappingException: Can not deserialize instance of >>>> java.lang.String out of START_OBJECT token >>>> at [Source: java.io.StringReader@372d828; line: 1, column: 71] >>>> (through reference chain: org.hisp.dhis.dxf2.events.event.Eve >>>> nt["event"]) >>>> >>>> com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:163) >>>> >>>> com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:588) >>>> >>>> com.fasterxml.jackson.databind.deser.std.JdkDeserializers$StringDeserializer.deserialize(JdkDeserializers.java:90) >>>> >>>> com.fasterxml.jackson.databind.deser.std.JdkDeserializers$StringDeserializer.deserialize(JdkDeserializers.java:59) >>>> >>>> com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:336) >>>> >>>> com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:89) >>>> >>>> com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:290) >>>> >>>> com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:112) >>>> >>>> com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2580) >>>> >>>> com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:1810) >>>> >>>> org.hisp.dhis.dxf2.events.event.JacksonEventService.fromXml(JacksonEventService.java:86) >>>> >>>> org.hisp.dhis.dxf2.events.event.JacksonEventService.addEventsXml(JacksonEventService.java:155) >>>> >>>> org.hisp.dhis.dxf2.events.event.JacksonEventService.addEventsXml(JacksonEventService.java:120) >>>> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>> >>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) >>>> >>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>> java.lang.reflect.Method.invoke(Method.java:606) >>>> >>>> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) >>>> >>>> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) >>>> >>>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) >>>> >>>> org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.jav >>>> a:96) >>>> >>>> org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport >>>> .java:260) >>>> >>>> org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94) >>>> >>>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) >>>> >>>> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) >>>> com.sun.proxy.$Proxy131.addEventsXml(Unknown Source) >>>> >>>> org.hisp.dhis.api.controller.event.EventController.postXmlEvent(EventController.java:259) >>>> >>>> org.hisp.dhis.api.controller.event.EventController$$FastClassByCGLIB$$e5ad859e.invoke(<generated>) >>>> >>>> org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) >>>> >>>> org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:701) >>>> >>>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) >>>> >>>> org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor. >>>> java:64) >>>> >>>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) >>>> >>>> org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:634) >>>> >>>> org.hisp.dhis.api.controller.event.EventController$$EnhancerByCGLIB$$6471438a.postXmlEvent(<generated>) >>>> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>> >>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) >>>> >>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>> java.lang.reflect.Method.invoke(Method.java:606) >>>> >>>> org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219) >>>> >>>> org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) >>>> >>>> org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableH >>>> andlerMethod.java:104) >>>> >>>> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingH >>>> andlerAdapter.java:745) >>>> >>>> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandl >>>> erAdapter.java:686) >>>> >>>> org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) >>>> >>>> org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) >>>> >>>> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) >>>> >>>> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936) >>>> >>>> org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838) >>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:647) >>>> >>>> org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) >>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:728) >>>> >>>> net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:202) >>>> >>>> net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:180) >>>> >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) >>>> >>>> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118 >>>> ) >>>> >>>> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:8 >>>> 4) >>>> >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> >>>> org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) >>>> >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> >>>> org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103) >>>> >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> >>>> org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter. >>>> java:113) >>>> >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> >>>> org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwa >>>> reRequestFilter.java:54) >>>> >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> >>>> org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) >>>> >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> >>>> org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java >>>> :201) >>>> >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> >>>> org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticatio >>>> nProcessingFilter.java:183) >>>> >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> >>>> org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticatio >>>> nProcessingFilter.java:183) >>>> >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> >>>> org.hisp.dhis.security.filter.CustomAuthenticationFilter.doFilter(CustomAuthenticationFilter.java:64) >>>> >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> >>>> org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105) >>>> >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> >>>> org.hisp.dhis.security.filter.AutomaticAccessFilter.doFilter(AutomaticAccessFilter.java:113) >>>> >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> >>>> org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.j >>>> ava:87) >>>> >>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> >>>> org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) >>>> >>>> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) >>>> >>>> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) >>>> >>>> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) >>>> >>>> org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:149) >>>> >>>> >>>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) >>>> >>>> org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) >>>> >>>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) >>>> </pre></p><p><b>note</b> <u>The full stack trace of the root cause is >>>> available in the Apache Tomcat/7.0.39 logs.</u></p><HR >>>> size="1" noshade="noshade"><h3>Apache Tomcat/7.0.39</h3></body></html>* >>>> Closing connection 0 >>>> * SSLv3, TLS alert, Client hello (1): >>>> >>>> >>>> On Thu, Aug 14, 2014 at 10:55 AM, Morten Olav Hansen < >>>> [email protected]> wrote: >>>> >>>>> Can you give me the full stack trace? also remember to add namespace >>>>> >>>>> -- >>>>> Morten >>>>> >>>>> >>>>> On Thu, Aug 14, 2014 at 3:54 PM, Jose Garcia Muñoz <[email protected] >>>>> > wrote: >>>>> >>>>>> >>>>>> Thanks Morten, >>>>>> >>>>>> This is the template I use >>>>>> >>>>>> <?xml version="1.0"?> >>>>>> <events> >>>>>> <event program="FurLapSaYy4" orgUnit="TZPSI_P-1563" >>>>>> eventDate="2014-01-01" status="COMPLETED" storedBy="jose"> >>>>>> <dataValues> >>>>>> <dataValue dataElement="sQdFlFQptCX" value="34"/> >>>>>> ................ >>>>>> </dataValues> >>>>>> </event> >>>>>> <event program="FurLapSaYy4" orgUnit="TZPSI_P-1563" >>>>>> eventDate="2014-01-01" status="COMPLETED" storedBy="jose"> >>>>>> <dataValues> >>>>>> <dataValue dataElement="sQdFlFQptCX" value="20"/> >>>>>> ................ >>>>>> </dataValues> >>>>>> </event> >>>>>> </events> >>>>>> >>>>>> Now I get the error: HTTP Status 500 - Can not deserialize instance >>>>>> of java.lang.String out of START_OBJECT token >>>>>> >>>>>> >>>>>> On Thu, Aug 14, 2014 at 10:38 AM, Morten Olav Hansen < >>>>>> [email protected]> wrote: >>>>>> >>>>>>> Sorry, the xml format has changed a bit.. you don't require a >>>>>>> eventList anymore.. >>>>>>> >>>>>>> You can just do: >>>>>>> <events> >>>>>>> <event> ... </event> >>>>>>> <event> ... </event> >>>>>>> <event> ... </event> >>>>>>> </events> >>>>>>> >>>>>>> -- >>>>>>> Morten >>>>>>> >>>>>>> >>>>>>> On Thu, Aug 14, 2014 at 3:35 PM, Jose Garcia Muñoz < >>>>>>> [email protected]> wrote: >>>>>>> >>>>>>>> >>>>>>>> Ups.... thanks Morten. Now it is working fine for one event. Thank >>>>>>>> you. >>>>>>>> >>>>>>>> what about sending multiple events? I am still getting " HTTP >>>>>>>> Status 500 - Unrecognized field "eventList" " >>>>>>>> >>>>>>>> >>>>>>>> On Thu, Aug 14, 2014 at 7:10 AM, Morten Olav Hansen < >>>>>>>> [email protected]> wrote: >>>>>>>> >>>>>>>>> Hi >>>>>>>>> >>>>>>>>> The id scheme must be added to the url, and not the actual >>>>>>>>> payload.. >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Morten >>>>>>>>> >>>>>>>>> >>>>>>>>> On Thu, Aug 14, 2014 at 4:58 AM, Jose Garcia Muñoz < >>>>>>>>> [email protected]> wrote: >>>>>>>>> >>>>>>>>>> >>>>>>>>>> Dear Dev community >>>>>>>>>> >>>>>>>>>> I am trying to import several events to DHIS2 (2.15) using the >>>>>>>>>> Web API. This is a template of the XML file (note I am using the >>>>>>>>>> org. unit >>>>>>>>>> code for matching): >>>>>>>>>> >>>>>>>>>> <?xml version="1.0"?> >>>>>>>>>> <event program="FurLapSaYy4" orgUnit="TZPSI_P-1563" >>>>>>>>>> eventDate="2014-01-01" status="COMPLETED" storedBy="jose"> >>>>>>>>>> <dataValues> >>>>>>>>>> <dataValue dataElement="sQdFlFQptCX" value="34"/> >>>>>>>>>> <dataValue dataElement="gVqInPr2eqC" value="30-34"/> >>>>>>>>>> <dataValue dataElement="hjy1KTANQbl" value="Unknown"/> >>>>>>>>>> <dataValue dataElement="es3zQNdcN7d" value="4"/> >>>>>>>>>> </dataValues> >>>>>>>>>> </event> >>>>>>>>>> >>>>>>>>>> When I call the API, I get the following error: "Event.orgUnit >>>>>>>>>> does not point to a valid organisation unit". So, following the >>>>>>>>>> documentation I added the attribute orgUnitIdScheme="code", >>>>>>>>>> something like >>>>>>>>>> the following: <event program="FurLapSaYy4" orgUnit="TZPSI_P-1563" >>>>>>>>>> eventDate="2014-01-01" status="COMPLETED" orgUnitIdScheme="code" >>>>>>>>>> storedBy="jose"> However, in this case I am getting: "HTTP Status >>>>>>>>>> 500 - >>>>>>>>>> Unrecognized field "orgUnitIdScheme". >>>>>>>>>> >>>>>>>>>> Also as I have to send multiple events, I am using the schema: >>>>>>>>>> >>>>>>>>>> <?xml version="1.0"?><events> >>>>>>>>>> <eventList> >>>>>>>>>> <event program="FurLapSaYy4" orgUnit="TZPSI_P-1563" >>>>>>>>>> eventDate="2014-01-01" status="COMPLETED" storedBy="jose"> >>>>>>>>>> <dataValues> >>>>>>>>>> ...... >>>>>>>>>> >>>>>>>>>> but in this case the error I got is "HTTP Status 500 - >>>>>>>>>> Unrecognized field "eventList" >>>>>>>>>> >>>>>>>>>> Am I missing something? I tried to use the Import/Export app as >>>>>>>>>> well, but nothing was imported. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> I am using the 2.15 with the build revision 15201 >>>>>>>>>> >>>>>>>>>> Many thanks >>>>>>>>>> Jose >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> _______________________________________________ >>>>>>>>>> Mailing list: https://launchpad.net/~dhis2-devs >>>>>>>>>> Post to : [email protected] >>>>>>>>>> Unsubscribe : https://launchpad.net/~dhis2-devs >>>>>>>>>> More help : https://help.launchpad.net/ListHelp >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> >
_______________________________________________ Mailing list: https://launchpad.net/~dhis2-devs Post to : [email protected] Unsubscribe : https://launchpad.net/~dhis2-devs More help : https://help.launchpad.net/ListHelp

