R

Wednesday, October 12th, 2022 9:00 PM

QlikSense to Collibra Integration - can it be used for QlikSense SaaS

Can the Springboot application be used for QlikSense SaaS ?

368 Messages

2 years ago

Hi @rudolf.kunkel,

The latest version of the QlikSense to Collibra Spring Boot integration (i.e. v2.0.0) communicates directly with the Qlik Engine using the WebSocket protocol (https://help.qlik.com/en-US/sense-developer/May2022/Subsystems/EngineAPI/Content/Sense_EngineAPI/introducing-engine-API.htm).

To be able to do so, the integration makes use of the provided tenant URL (set using configuration property “qlik.api.url”) and a token (set using configuration property “qlik.api.token”). Thanks

18 Messages

Hi @spring-team.collibra.com does it mean that the integration cannot be used for the Qlik Sense SaaS because it has a different API?
TY

368 Messages

2 years ago

Hi @rudolf.kunkel,

This QlikSense Spring Boot integration retrieves the metadata using the QlikSense Engine API which is a way of communication to QlikSense that exposes a specific set of endpoints.

The Spring Boot integration is capable of retrieving the metadata specified in the documentation (link below). Meanwhile, regarding whether the same metadata that is being retrieved from both the QlikSense SaaS API and QlikSense Engine API, it might be the case, however it would need to be tested. Would it be possible to try using the latest version of the QlikSense integration to confirm this please?. Thanks

18 Messages

I tested the Springboot with a trial version for QlikSense Saas. Here some information about it:
I tested it it with the mock data - it fails with an asset model issue (I have imported the CMA file beforehand in the instance).
{
“message”: “Internal error during execution.”,
“exceptionMessage”: “{“message”:“There are one or more validation errors.”,“details”:“The Relation Key (:TARGET) Asset ID ‘’ is not a valid UUID - it cannot be empty.”}”
}
2. with access to Madga’s trial QlikSense SaaS:
“message”: “Internal error during execution.”,
“exceptionMessage”: “com.collibra.marketplace.qliksense.engine.exception.QRisottoException: com.neovisionaries.ws.client.OpeningHandshakeException: The status code of the opening handshake response is not ‘101 Switching Protocols’. The status line is: HTTP/1.1 404 Not Found”
}
I did set the props

Properties to connect to Qlik Sense API.

qlik.api.url=https://pr2m333z32yl94w.ap.qlikcloud.com/api/v1/
qlik.api.token=eyJhbGciOiJFUzM4NCIsImtpZCI6IjM4ODIwMGRmLWQ2NWUtNDBiZS1hMDdmLTk5ODNjZmZiOTZmMCIsInR5cCI6IkpXVCJ9.eyJzdWJUeXBlIjoidXNlciIsInRlbmFudElkIjoidUI1M3h4V205b1dSX1NOdW94LVA2YXQ1T1pzS2FBX1giLCJqdGkiOiIzODgyMDBkZi1kNjVlLTQwYmUtYTA3Zi05OTgzY2ZmYjk2ZjAiLCJhdWQiOiJxbGlrLmFwaSIsImlzcyI6InFsaWsxxxxxxxx…

368 Messages

2 years ago

Hi @rudolf.kunkel,

Thanks for the information provided.

We are looking into this and will keep you updated. Thanks

368 Messages

2 years ago

Hi @rudolf.kunkel,

Can you please try the following?

  1. Ensure the property qlik.api.url has appropriate value (Secured WS connection to Tenant ID with no additional slash symbol at the end)
    e.g. wss://xxxxxxxxx2yl94w.xx.qlikcloud.com

  2. Open the source file src/main/java/com/collibra/marketplace/qliksense/engine/session/QSession.java and within the open Java method, update line 76 as follows:
    From: initConnection(url + docId);
    To/Updated line: initConnection(String.format("%s/app/%s", url, docId));

  3. Recompile and run the updated integration using an IDE or Apache Maven (mvn clean spring-boot:run)

Thanks

18 Messages

Hi - just tested it with the changed initConnection parameters.

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.7.4)

2022-10-24 20:06:46,841 [main] INFO  com.collibra.marketplace.qliksense.Application - Starting Application using Java 1.8.0_301 on MacBook-Pro-2.fritz.box with PID 84020 (/Users/rudolfkunkel/Documents/Integration/SpringBootIntegration/QlikSense/sbi-qlik-sense-2.0.0/sbi-qlik-sense-2.0.0/target/classes started by rudolfkunkel in /Users/rudolfkunkel/Documents/Integration/SpringBootIntegration/QlikSense/sbi-qlik-sense-2.0.0/sbi-qlik-sense-2.0.0)
2022-10-24 20:06:46,852 [main] INFO  com.collibra.marketplace.qliksense.Application - No active profile set, falling back to 1 default profile: "default"
2022-10-24 20:06:47,851 [main] INFO  com.ulisesbocchio.jasyptspringboot.configuration.EnableEncryptablePropertiesBeanFactoryPostProcessor - Post-processing PropertySource instances
2022-10-24 20:06:47,853 [main] INFO  com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter - Skipping PropertySource configurationProperties [class org.springframework.boot.context.properties.source.ConfigurationPropertySourcesPropertySource
2022-10-24 20:06:47,853 [main] INFO  com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter - Skipping PropertySource servletConfigInitParams [class org.springframework.core.env.PropertySource$StubPropertySource
2022-10-24 20:06:47,853 [main] INFO  com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter - Skipping PropertySource servletContextInitParams [class org.springframework.core.env.PropertySource$StubPropertySource
2022-10-24 20:06:47,854 [main] INFO  com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter - Converting PropertySource systemProperties [org.springframework.core.env.PropertiesPropertySource] to EncryptableMapPropertySourceWrapper
2022-10-24 20:06:47,854 [main] INFO  com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter - Converting PropertySource systemEnvironment [org.springframework.boot.env.SystemEnvironmentPropertySourceEnvironmentPostProcessor$OriginAwareSystemEnvironmentPropertySource] to EncryptableSystemEnvironmentPropertySourceWrapper
2022-10-24 20:06:47,854 [main] INFO  com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter - Converting PropertySource random [org.springframework.boot.env.RandomValuePropertySource] to EncryptablePropertySourceWrapper
2022-10-24 20:06:47,854 [main] INFO  com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter - Converting PropertySource Config resource 'class path resource [application.properties]' via location 'optional:classpath:/' [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper
2022-10-24 20:06:47,952 [main] INFO  com.ulisesbocchio.jasyptspringboot.filter.DefaultLazyPropertyFilter - Property Filter custom Bean not found with name 'encryptablePropertyFilter'. Initializing Default Property Filter
2022-10-24 20:06:47,960 [main] INFO  com.ulisesbocchio.jasyptspringboot.resolver.DefaultLazyPropertyResolver - Property Resolver custom Bean not found with name 'encryptablePropertyResolver'. Initializing Default Property Resolver
2022-10-24 20:06:47,962 [main] INFO  com.ulisesbocchio.jasyptspringboot.detector.DefaultLazyPropertyDetector - Property Detector custom Bean not found with name 'encryptablePropertyDetector'. Initializing Default Property Detector
2022-10-24 20:06:48,119 [main] INFO  org.springframework.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http)
2022-10-24 20:06:48,128 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8080"]
2022-10-24 20:06:48,128 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
2022-10-24 20:06:48,128 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.65]
2022-10-24 20:06:48,318 [main] INFO  org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
2022-10-24 20:06:48,318 [main] INFO  org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1412 ms
2022-10-24 20:06:48,503 [main] INFO  com.collibra.marketplace.library.integration.InternalSharedLibraryConnection - Authenticating with the Collibra Platform...
2022-10-24 20:06:49,343 [main] INFO  com.collibra.marketplace.library.integration.InternalSharedLibraryConnection - Successfully authenticated with the Collibra Platform.
2022-10-24 20:06:49,652 [main] INFO  org.springframework.security.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@21e484b, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@191f4d65, org.springframework.security.web.context.SecurityContextPersistenceFilter@333d44f6, org.springframework.security.web.header.HeaderWriterFilter@29c1249a, org.springframework.security.web.authentication.logout.LogoutFilter@72110818, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@7bfa1eb5, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@3c3e363, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@4f8659d0, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@7a2a7492, org.springframework.security.web.session.SessionManagementFilter@6d8b7ea9, org.springframework.security.web.access.ExceptionTranslationFilter@54b44879, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@33ebe4f0]
2022-10-24 20:06:50,637 [main] INFO  org.springframework.boot.actuate.endpoint.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/manage'
2022-10-24 20:06:50,672 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8080"]
2022-10-24 20:06:50,692 [main] INFO  org.springframework.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path ''
2022-10-24 20:06:50,694 [main] INFO  com.ulisesbocchio.jasyptspringboot.caching.RefreshScopeRefreshedEventListener - Refreshing cached encryptable property sources on ServletWebServerInitializedEvent
2022-10-24 20:06:50,694 [main] INFO  com.ulisesbocchio.jasyptspringboot.caching.CachingDelegateEncryptablePropertySource - Property Source systemProperties refreshed
2022-10-24 20:06:50,694 [main] INFO  com.ulisesbocchio.jasyptspringboot.caching.CachingDelegateEncryptablePropertySource - Property Source systemEnvironment refreshed
2022-10-24 20:06:50,695 [main] INFO  com.ulisesbocchio.jasyptspringboot.caching.CachingDelegateEncryptablePropertySource - Property Source random refreshed
2022-10-24 20:06:50,695 [main] INFO  com.ulisesbocchio.jasyptspringboot.caching.CachingDelegateEncryptablePropertySource - Property Source Config resource 'class path resource [application.properties]' via location 'optional:classpath:/' refreshed
2022-10-24 20:06:50,695 [main] INFO  com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter - Converting PropertySource server.ports [org.springframework.core.env.MapPropertySource] to EncryptableMapPropertySourceWrapper
2022-10-24 20:06:50,695 [main] INFO  com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter - Skipping PropertySource configurationProperties [class org.springframework.boot.context.properties.source.ConfigurationPropertySourcesPropertySource
2022-10-24 20:06:50,695 [main] INFO  com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter - Skipping PropertySource servletConfigInitParams [class org.springframework.core.env.PropertySource$StubPropertySource
2022-10-24 20:06:50,695 [main] INFO  com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter - Converting PropertySource servletContextInitParams [org.springframework.web.context.support.ServletContextPropertySource] to EncryptableEnumerablePropertySourceWrapper
2022-10-24 20:06:50,695 [main] INFO  com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter - Converting PropertySource Management Server [org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration$1] to EncryptablePropertySourceWrapper
2022-10-24 20:06:50,713 [main] INFO  com.collibra.marketplace.qliksense.Application - Started Application in 4.187 seconds (JVM running for 4.946)
2022-10-24 20:06:59,266 [http-nio-8080-exec-2] INFO  org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
2022-10-24 20:06:59,267 [http-nio-8080-exec-2] INFO  org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
2022-10-24 20:06:59,268 [http-nio-8080-exec-2] INFO  org.springframework.web.servlet.DispatcherServlet - Completed initialization in 1 ms
2022-10-24 20:06:59,480 [http-nio-8080-exec-2] INFO  com.collibra.marketplace.qliksense.controller.EntryPointController - Collibra Qlik Sense integration triggered via API request
2022-10-24 20:06:59,480 [http-nio-8080-exec-2] INFO  com.collibra.marketplace.qliksense.service.IntegrationService - Started Qlik Sense sync
2022-10-24 20:06:59,480 [http-nio-8080-exec-2] INFO  com.collibra.marketplace.qliksense.component.QDataRisottoExtraction - Retrieving list of documents from Qlik Sense.
2022-10-24 20:06:59,480 [http-nio-8080-exec-2] INFO  com.collibra.marketplace.qliksense.engine.QRisotto - QRisotto: Getting the documents to synchronize
2022-10-24 20:06:59,482 [http-nio-8080-exec-2] INFO  com.collibra.marketplace.qliksense.engine.session.QSession - Opening a new session
2022-10-24 20:06:59,482 [http-nio-8080-exec-2] INFO  com.collibra.marketplace.qliksense.engine.session.QSession - Init connection to 'wss://pr2m333z32yl94w.ap.qlikcloud.com'
2022-10-24 20:07:01,213 [http-nio-8080-exec-2] ERROR com.collibra.marketplace.qliksense.exception.GlobalExceptionHandler - Internal error during execution.
com.collibra.marketplace.qliksense.engine.exception.QRisottoException: com.collibra.marketplace.qliksense.engine.exception.QRisottoException: com.neovisionaries.ws.client.OpeningHandshakeException: The status code of the opening handshake response is not '101 Switching Protocols'. The status line is: HTTP/1.1 200 OK
	at com.collibra.marketplace.qliksense.engine.QRisotto.getDocList(QRisotto.java:60) ~[classes/:?]
	at com.collibra.marketplace.qliksense.component.QDataRisottoExtraction.getListOfDocumentIds(QDataRisottoExtraction.java:35) ~[classes/:?]
	at com.collibra.marketplace.qliksense.service.IntegrationService.startIntegration(IntegrationService.java:41) ~[classes/:?]
	at com.collibra.marketplace.qliksense.controller.EntryPointController.syncTriggeredByApiRequest(EntryPointController.java:47) ~[classes/:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_301]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_301]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_301]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_301]
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.23.jar:5.3.23]
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.23.jar:5.3.23]
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.23.jar:5.3.23]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.23.jar:5.3.23]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.23.jar:5.3.23]
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.23.jar:5.3.23]
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) ~[spring-webmvc-5.3.23.jar:5.3.23]
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.23.jar:5.3.23]
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.23.jar:5.3.23]
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.23.jar:5.3.23]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:681) ~[tomcat-embed-core-9.0.65.jar:4.0.FR]
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.23.jar:5.3.23]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.65.jar:4.0.FR]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.65.jar:9.0.65]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:198) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:112) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.7.3.jar:5.7.3]
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.23.jar:5.3.23]
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.23.jar:5.3.23]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.23.jar:5.3.23]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.23.jar:5.3.23]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96) ~[spring-boot-actuator-2.7.4.jar:2.7.4]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.23.jar:5.3.23]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
	at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_301]
Caused by: com.collibra.marketplace.qliksense.engine.exception.QRisottoException: com.neovisionaries.ws.client.OpeningHandshakeException: The status code of the opening handshake response is not '101 Switching Protocols'. The status line is: HTTP/1.1 200 OK
	at com.collibra.marketplace.qliksense.engine.session.QSession.initConnection(QSession.java:90) ~[classes/:?]
	at com.collibra.marketplace.qliksense.engine.session.QSession.open(QSession.java:71) ~[classes/:?]
	at com.collibra.marketplace.qliksense.engine.QRisotto.getDocList(QRisotto.java:57) ~[classes/:?]
	... 98 more
Caused by: com.neovisionaries.ws.client.OpeningHandshakeException: The status code of the opening handshake response is not '101 Switching Protocols'. The status line is: HTTP/1.1 200 OK
	at com.neovisionaries.ws.client.HandshakeReader.validateStatusLine(HandshakeReader.java:232) ~[nv-websocket-client-2.14.jar:?]
	at com.neovisionaries.ws.client.HandshakeReader.readHandshake(HandshakeReader.java:54) ~[nv-websocket-client-2.14.jar:?]
	at com.neovisionaries.ws.client.WebSocket.readHandshake(WebSocket.java:3440) ~[nv-websocket-client-2.14.jar:?]
	at com.neovisionaries.ws.client.WebSocket.shakeHands(WebSocket.java:3319) ~[nv-websocket-client-2.14.jar:?]
	at com.neovisionaries.ws.client.WebSocket.connect(WebSocket.java:2354) ~[nv-websocket-client-2.14.jar:?]
	at com.collibra.marketplace.qliksense.engine.session.QSession.initConnection(QSession.java:86) ~[classes/:?]
	at com.collibra.marketplace.qliksense.engine.session.QSession.open(QSession.java:71) ~[classes/:?]
	at com.collibra.marketplace.qliksense.engine.QRisotto.getDocList(QRisotto.java:57) ~[classes/:?]
	... 98 more

368 Messages

2 years ago

Hi @rudolf.kunkel,

Thanks for the information provided.

Once the QlikSense integration is deployed, can you please try making the following request:

http://localhost:8080/risotto/doc/<qDocId>/serialize 

where:

  • <qDocId> should be replaced with the ID of an existing QlikSense application.
    As an example, when accessing QlikSense from a browser, the URL would have the following format: https://xxxxx.xx.qlikcloud.com/sense/app/c36b9270-543f-11ed-bdc3-0242ac120002/overview.
    the value that should be used is: c36b9270-543f-11ed-bdc3-0242ac120002.

Also, if possible, it would be helpful to confirm whether the QlikSense account being used is a trial version, as the full integration would not work. Thanks

2 Messages

2 years ago

Hi @spring-team.collibra.com Rudolf is OOO until November, 13th. We were testing with a Qlik cloud trial instance. Is there any way of confirming if this integration supports Qlik Cloud without needing Rudolf’s testing support?
Thanks,
Magda.

368 Messages

2 years ago

Hi @magda.llavallol,

Thanks for the update.

The full integration (i.e. getting all existing Document/App IDs and synchronizing them all) works only for Qlik Sense Enterprise users. Meanwhile, when using a trial account it is limited to only synchronize the specified Doc IDs. Thanks

6 Messages

Hi Springboot team/Magda

I’ve taken responsibility for taking this forward in Rudolph’s absence. To that end

  • Have built springboot code, and set application properties
  • Have modified code to change from URL + docID to URL/app/docID as requested
  • Have run serialization on http://localhost:8080/risotto/doc/81016fbc-a84c-42a1-8051-43b203438416/serialize as requested (where that doc exists on Magda’s instance and can confirm I get a successful JSON serialised response (e.g)

{"bookmarks":[],"loadScript":"\/\/\/$tab Main\r\nSET ThousandSep=',';\r\nSET DecimalSep='.';\r\nSET MoneyThousandSep=',';\r\nSET MoneyDecimalSep='.';\r\nSET MoneyFormat='$ ###0.00;-$ ###0.00';\r\nSET TimeFormat='h:mm:ss TT';\r\nSET DateFormat='M\/D\/YYYY';\r\nSET TimestampFormat='M\/D\/YYYY h:mm:ss[.fff] TT';\r\nSET FirstWeekDay=6;\r\nSET BrokenWeeks=1;\r\nSET ReferenceDay=0;\r\nSET FirstMonthOfYear=1;\r\nSET CollationLocale='en-US';\r\nSET CreateSearchIndexOnReload=1;\r\nSET MonthNames='Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec';\r\nSET LongMonthNames='January;February;March;April;May;June;July;August;September;October;November;December';\r\nSET DayNames='Mon;Tue;Wed;Thu;Fri;Sat;Sun';\r\nSET LongDayNames='Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;Sunday';\r\nSET NumericalAbbreviation='3:k;6:M;9:G;12:T;15:P;18:E;21:Z;24:Y;-3:m;-6:μ;-9:n;-12:p;-15:f;-18:a;-21:z;-24:y';\r\n\r\n\r\n\/\/\/$tab QCS.Common.Script.Section.AutoGenerated\r\n\/\/\/$autogenerated\r\nSet dataManagerTables = '','ProductSalesReporting';\n\/\/This block renames script tables from non generated section which conflict with the names of managed tables\n\nFor each name in $(dataManagerTables) \n Let index = 0;\n Let currentName = name; \n Let tableNumber = TableNumber(name); \n Let matches = 0; \n Do while not IsNull(tableNumber) or (index > 0 and matches > 0)\n index = index + 1; \n currentName = name & '-' & index; \n tableNumber = TableNumber(currentName) \n matches = Match('$(currentName)', $(dataManagerTables));\n Loop \n If index > 0 then \n Rename Table '$(name)' to '$(currentName)'; \n EndIf; \nNext; \nSet dataManagerTables = ;\n\r\n\r\nUnqualify *;\r\n\r\nLIB CONNECT TO [Microsoft_SQL_Server_35.208.75.7];\r\n\r\n[ProductSalesReporting]:\r\nSELECT\r\n ListPrice,\r\n EnglishProductName,\r\n TotalProductCost,\r\n UnitPrice,\r\n OrderQuantity\r\nFROM Consumption.dbo.ProductSalesReporting;\r\n\r\n\r\n\r\n\r\n","sheets":[{"qProperty":{"qInfo":{"qId":"5ecae8cf-533f-4cf0-b03b-f15e927adbf3","qType":"sheet"},"qMetaDef":{"title":"Revenue vs COGS","description":""},"rank":1,"thumbnail":{"qStaticContentUrlDef":{}},"columns":24,"rows":12,"cells":[{"bounds":{"x":0,"y":0,"width":100,"height":100},"col":0,"colspan":24,"name":"hkLmM","row":0,"rowspan":12,"smartGrid":{"rowIdx":0,"itemIdx":0,"item":{"width":1}},"type":"combochart"}],"qChildListDef":{"qData":{"title":"\/title"}},"gridMode":"simpleEdit","layoutOptions":{"extendable":false}},"qChildren":[{"qProperty":{"qInfo":{"qId":"hkLmM","qType":"combochart"},"qMetaDef":{},"qHyperCubeDef":{"qDimensions":[{"qDef":{"qGrouping":"N","qFieldDefs":["EnglishProductName"],"qFieldLabels":[""],"qSortCriterias":[{"qSortByNumeric":1,"qSortByAscii":1,"qSortByLoadOrder":1,"qExpression":{}}],"qNumberPresentations":[],"qActiveField":0,"autoSort":true,"cId":"pmKKpPG","othersLabel":"Others"},"qOtherTotalSpec":{"qOtherMode":"OTHER_OFF","qOtherCounted":{"qv":"10"},"qOtherLimit":{"qv":"0"},"qOtherLimitMode":"OTHER_GE_LIMIT","qForceBadValueKeeping":true,"qApplyEvenWhenPossiblyWrongResult":true,"qOtherSortMode":"OTHER_SORT_DESCENDING","qTotalMode":"TOTAL_OFF","qReferencedExpression":{}},"qOtherLabel":{"qv":"Others"},"qTotalLabel":{},"qCalcCond":{},"qAttributeExpressions":[],"qAttributeDimensions":[],"qCalcCondition":{"qCond":{},"qMsg":{}}}],"qMeasures":[{"qDef":{"qTags":[],"qGrouping":"N","qDef":"Sum(ListPrice)","qNumFormat":{"qType":"U","qnDec":10,"qUseThou":0},"qAccumulate":0,"qActiveExpression":0,"qExpressions":[],"autoSort":true,"cId":"fCwLMc","numFormatFromTemplate":true,"series":{"type":"bar","axis":0},"color":{"on":false,"mode":"primary","paletteColor":{"index":6}}},"qSortBy":{"qSortByNumeric":-1,"qSortByLoadOrder":1,"qExpression":{}},"qAttributeExpressions":[],"qAttributeDimensions":[],"qCalcCond":{},"qCalcCondition":{"qCond":{},"qMsg":{}},"qTrendLines":[],"qMiniChartDef":{"qSortBy":{"qExpression":{}},"qOtherTotalSpec":{"qOtherMode":"OTHER_OFF","qOtherCounted":{},"qOtherLimit":{},"qOtherLimitMode":"OTHER_GT_LIMIT","qForceBadValueKeeping":true,"qApplyEvenWhenPossiblyWrongResult":true,"qOtherSortMode":"OTHER_SORT_DESCENDING","qTotalMode":"TOTAL_OFF","qReferencedExpression":{}},"qMaxNumberPoints":-1,"qAttributeExpressions":[]}},{"qDef":{"qTags":[],"qGrouping":"N","qDef":"Sum(TotalProductCost)","qNumFormat":{"qType":"U","qnDec":10,"qUseThou":0},"qAccumulate":0,"qActiveExpression":0,"qExpressions":[],"autoSort":true,"cId":"FKYTXx","numFormatFromTemplate":true,"series":{"type":"line","axis":1},"color":{"on":false,"mode":"primary","paletteColor":{"index":6}}},"qSortBy":{"qSortByNumeric":-1,"qSortByLoadOrder":1,"qExpression":{}},"qAttributeExpressions":[],"qAttributeDimensions":[],"qCalcCond":{},"qCalcCondition":{"qCond":{},"qMsg":{}},"qTrendLines":[],"qMiniChartDef":{"qSortBy":{"qExpression":{}},"qOtherTotalSpec":{"qOtherMode":"OTHER_OFF","qOtherCounted":{},"qOtherLimit":{},"qOtherLimitMode":"OTHER_GT_LIMIT","qForceBadValueKeeping":true,"qApplyEvenWhenPossiblyWrongResult":true,"qOtherSortMode":"OTHER_SORT_DESCENDING","qTotalMode":"TOTAL_OFF","qReferencedExpression":{}},"qMaxNumberPoints":-1,"qAttributeExpressions":[]}}],"qInterColumnSortOrder":[1,0,2],"qSuppressMissing":true,"qInitialDataFetch":[{"qLeft":0,"qTop":0,"qWidth":17,"qHeight":500}],"qReductionMode":"N","qMode":"S","qPseudoDimPos":-1,"qNoOfLeftDims":-1,"qMaxStackedCells":5000,"qCalcCond":{},"qTitle":{},"qCalcCondition":{"qCond":{},"qMsg":{}},"qColumnOrder":[],"qExpansionState":[],"qDynamicScript":[],"qLayoutExclude":{"qHyperCubeDef":{"qDimensions":[],"qMeasures":[],"qInterColumnSortOrder":[],"qInitialDataFetch":[],"qReductionMode":"N","qMode":"S","qPseudoDimPos":-1,"qNoOfLeftDims":-1,"qMaxStackedCells":5000,"qCalcCond":{},"qTitle":{},"qCalcCondition":{"qCond":{},"qMsg":{}},"qColumnOrder":[],"qExpansionState":[],"qDynamicScript":[]}}},"script":"","showTitles":true,"title":"","subtitle":"","footnote":"","disableNavMenu":false,"showDetails":false,"showDetailsExpression":false,"visualization":"combochart","refLine":{"refLines":[],"refLines2":[],"dimRefLines":[]},"components":[],"barGrouping":{"grouping":"grouped"},"orientation":"horizontal","scrollStartPos":0,"nullMode":"gap","dataPoint":{"show":false,"showLineLabels":false,"showBarLabels":false},"color":{"auto":true,"mode":"primary","formatting":{"numFormatFromTemplate":true},"useBaseColors":"off","paletteColor":{"index":6},"useDimColVal":true,"useMeasureGradient":true,"persistent":false,"expressionIsColor":true,"expressionLabel":"","measureScheme":"sg","reverseScheme":false,"dimensionScheme":"12","autoMinMax":true,"measureMin":0,"measureMax":10},"legend":{"show":true,"dock":"auto","showTitle":true},"dimensionAxis":{"continuousAuto":true,"show":"all","label":"auto","dock":"near","axisDisplayMode":"auto","maxVisibleItems":10},"preferContinuousAxis":true,"showMiniChartForContinuousAxis":true,"measureAxes":[{"show":"all","dock":"near","spacing":1,"autoMinMax":true,"minMax":"min","min":0,"max":10},{"show":"all","dock":"far","spacing":1,"autoMinMax":true,"minMax":"min","min":0,"max":10}],"tooltip":{"auto":true,"hideBasic":false,"chart":{"style":{"size":"medium"}},"title":"","description":""},"version":"1.18.2","qLayoutExclude":{"disabled":{"qExtendsId":"","qUndoExclude":{}},"quarantine":{}}},"qChildren":[]}]},{"qProperty":{"qInfo":{"qId":"4373c496-7b31-4fcd-a3af-cd0dec0d07a0","qType":"sheet"},"qMetaDef":{"title":"Sales per product","description":""},"rank":null,"thumbnail":{"qStaticContentUrlDef":{}},"columns":24,"rows":12,"cells":[{"bounds":{"x":0,"y":0,"width":100,"height":100},"col":0,"colspan":24,"name":"bFVRAv","row":0,"rowspan":12,"smartGrid":{"rowIdx":0,"itemIdx":0,"item":{"width":1}},"type":"combochart"}],"qChildListDef":{"qData":{"title":"\/title"}},"gridMode":"simpleEdit","layoutOptions":{"extendable":false}},"qChildren":[{"qProperty":{"qInfo":{"qId":"bFVRAv","qType":"combochart"},"qMetaDef":{},"qHyperCubeDef":{"qDimensions":[{"qDef":{"qGrouping":"N","qFieldDefs":["EnglishProductName"],"qFieldLabels":[""],"qSortCriterias":[{"qSortByNumeric":1,"qSortByAscii":1,"qSortByLoadOrder":1,"qExpression":{}}],"qNumberPresentations":[],"qActiveField":0,"autoSort":true,"cId":"VqEgAN","othersLabel":"Others"},"qOtherTotalSpec":{"qOtherMode":"OTHER_OFF","qOtherCounted":{"qv":"10"},"qOtherLimit":{"qv":"0"},"qOtherLimitMode":"OTHER_GE_LIMIT","qForceBadValueKeeping":true,"qApplyEvenWhenPossiblyWrongResult":true,"qOtherSortMode":"OTHER_SORT_DESCENDING","qTotalMode":"TOTAL_OFF","qReferencedExpression":{}},"qOtherLabel":{"qv":"Others"},"qTotalLabel":{},"qCalcCond":{},"qAttributeExpressions":[],"qAttributeDimensions":[],"qCalcCondition":{"qCond":{},"qMsg":{}}}],"qMeasures":[{"qDef":{"qTags":[],"qGrouping":"N","qDef":"Sum(OrderQuantity)","qNumFormat":{"qType":"U","qnDec":10,"qUseThou":0},"qAccumulate":0,"qActiveExpression":0,"qExpressions":[],"autoSort":true,"cId":"jrJuTg","numFormatFromTemplate":true,"series":{"type":"bar","axis":0},"color":{"on":false,"mode":"primary","paletteColor":{"index":6}}},"qSortBy":{"qSortByNumeric":-1,"qSortByLoadOrder":1,"qExpression":{}},"qAttributeExpressions":[],"qAttributeDimensions":[],"qCalcCond":{},"qCalcCondition":{"qCond":{},"qMsg":{}},"qTrendLines":[],"qMiniChartDef":{"qSortBy":{"qExpression":{}},"qOtherTotalSpec":{"qOtherMode":"OTHER_OFF","qOtherCounted":{},"qOtherLimit":{},"qOtherLimitMode":"OTHER_GT_LIMIT","qForceBadValueKeeping":true,"qApplyEvenWhenPossiblyWrongResult":true,"qOtherSortMode":"OTHER_SORT_DESCENDING","qTotalMode":"TOTAL_OFF","qReferencedExpression":{}},"qMaxNumberPoints":-1,"qAttributeExpressions":[]}}],"qInterColumnSortOrder":[0,1],"qSuppressMissing":true,"qInitialDataFetch":[{"qLeft":0,"qTop":0,"qWidth":17,"qHeight":500}],"qReductionMode":"N","qMode":"S","qPseudoDimPos":-1,"qNoOfLeftDims":-1,"qMaxStackedCells":5000,"qCalcCond":{},"qTitle":{},"qCalcCondition":{"qCond":{},"qMsg":{}},"qColumnOrder":[],"qExpansionState":[],"qDynamicScript":[],"qLayoutExclude":{"qHyperCubeDef":{"qDimensions":[],"qMeasures":[],"qInterColumnSortOrder":[],"qInitialDataFetch":[],"qReductionMode":"N","qMode":"S","qPseudoDimPos":-1,"qNoOfLeftDims":-1,"qMaxStackedCells":5000,"qCalcCond":{},"qTitle":{},"qCalcCondition":{"qCond":{},"qMsg":{}},"qColumnOrder":[],"qExpansionState":[],"qDynamicScript":[]}}},"script":"","showTitles":true,"title":"","subtitle":"","footnote":"","disableNavMenu":false,"showDetails":false,"showDetailsExpression":false,"visualization":"combochart","refLine":{"refLines":[],"refLines2":[],"dimRefLines":[]},"components":[],"barGrouping":{"grouping":"grouped"},"orientation":"horizontal","scrollStartPos":0,"nullMode":"gap","dataPoint":{"show":false,"showLineLabels":false,"showBarLabels":false},"color":{"auto":true,"mode":"primary","formatting":{"numFormatFromTemplate":true},"useBaseColors":"off","paletteColor":{"index":6},"useDimColVal":true,"useMeasureGradient":true,"persistent":false,"expressionIsColor":true,"expressionLabel":"","measureScheme":"sg","reverseScheme":false,"dimensionScheme":"12","autoMinMax":true,"measureMin":0,"measureMax":10},"legend":{"show":true,"dock":"auto","showTitle":true},"dimensionAxis":{"continuousAuto":true,"show":"all","label":"auto","dock":"near","axisDisplayMode":"auto","maxVisibleItems":10},"preferContinuousAxis":true,"showMiniChartForContinuousAxis":true,"measureAxes":[{"show":"all","dock":"near","spacing":1,"autoMinMax":true,"minMax":"min","min":0,"max":10},{"show":"all","dock":"far","spacing":1,"autoMinMax":true,"minMax":"min","min":0,"max":10}],"tooltip":{"auto":true,"hideBasic":false,"chart":{"style":{"size":"medium"}},"title":"","description":""},"version":"1.18.2","qLayoutExclude":{"disabled":{"qExtendsId":"","qUndoExclude":{}},"quarantine":{}}},"qChildren":[]}]}],"variables":[{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"ErrorMode","qMetaDef":{},"qInfo":{"qId":"d9b2d5e0-e86a-42d7-9a2f-52f74765f9d0","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":"1","qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"StripComments","qMetaDef":{},"qInfo":{"qId":"4d7decab-6d38-45a9-b8d5-8cdfac65e305","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":"1","qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"OpenUrlTimeout","qMetaDef":{},"qInfo":{"qId":"27041642-368e-42d1-be81-f4d3c4f5ee73","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":"86400","qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"ScriptError","qMetaDef":{},"qInfo":{"qId":"4b02fe29-9803-4d61-a513-ce126c8097ad","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"ScriptErrorCount","qMetaDef":{},"qInfo":{"qId":"58304a31-32ca-4591-b9b9-fd4b32b939a6","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":"0","qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"ScriptErrorList","qMetaDef":{},"qInfo":{"qId":"63e8d9a0-af31-41ce-9dc9-ac0326b462a9","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"ThousandSep","qMetaDef":{},"qInfo":{"qId":"231ddd20-0839-4b02-a035-e26ea7f59734","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":",","qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"DecimalSep","qMetaDef":{},"qInfo":{"qId":"0bf877d4-766c-4687-a415-64e1e4a20fcb","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":".","qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"MoneyThousandSep","qMetaDef":{},"qInfo":{"qId":"fad4ab09-14d7-4cdf-8c2d-53d958fb39de","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":",","qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"MoneyDecimalSep","qMetaDef":{},"qInfo":{"qId":"cc44f9c7-cf01-4285-bd06-5cd7bcd33d5d","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":".","qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"MoneyFormat","qMetaDef":{},"qInfo":{"qId":"d6ee67da-29de-49f4-ba11-2a15ff3d313e","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":"$ ###0.00;-$ ###0.00","qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"TimeFormat","qMetaDef":{},"qInfo":{"qId":"968190a3-213d-47b8-af63-2b19166cd88f","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":"h:mm:ss TT","qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"DateFormat","qMetaDef":{},"qInfo":{"qId":"ddf507f7-bca1-44d0-be3b-c6b1331c1308","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":"M\/D\/YYYY","qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"TimestampFormat","qMetaDef":{},"qInfo":{"qId":"c4eeb89c-c8f7-41c4-8631-c3a80e534af9","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":"M\/D\/YYYY h:mm:ss[.fff] TT","qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"FirstWeekDay","qMetaDef":{},"qInfo":{"qId":"37fc7bce-664b-4f84-9b86-693b793debb7","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":"6","qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"BrokenWeeks","qMetaDef":{},"qInfo":{"qId":"da830401-8835-4eee-addd-5edf576d3fe4","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":"1","qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"ReferenceDay","qMetaDef":{},"qInfo":{"qId":"97a02c89-1078-44c4-81bc-081d8502e9dd","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":"0","qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"FirstMonthOfYear","qMetaDef":{},"qInfo":{"qId":"b3de8d9e-665e-4e5e-afc2-d46a2c373255","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":"1","qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"CollationLocale","qMetaDef":{},"qInfo":{"qId":"384fb002-68d6-4a42-b74f-90a214241c63","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":"en-US","qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"CreateSearchIndexOnReload","qMetaDef":{},"qInfo":{"qId":"ca695716-fdd1-4d2a-b7f5-3b33c02db8a6","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":"1","qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"MonthNames","qMetaDef":{},"qInfo":{"qId":"5b587f02-7ad5-4e74-85cf-f36a216ad31e","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":"Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec","qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"LongMonthNames","qMetaDef":{},"qInfo":{"qId":"aa5356c7-7806-41e0-96db-9d6f652de8d3","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":"January;February;March;April;May;June;July;August;September;October;November;December","qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"DayNames","qMetaDef":{},"qInfo":{"qId":"73e1a147-1d40-40ea-80d1-9148a74eef0d","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":"Mon;Tue;Wed;Thu;Fri;Sat;Sun","qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"LongDayNames","qMetaDef":{},"qInfo":{"qId":"2f476822-c8dd-47b4-ae9b-2c9e3330b998","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":"Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;Sunday","qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"NumericalAbbreviation","qMetaDef":{},"qInfo":{"qId":"39ed86be-f02d-4d5a-8d84-05274e922d9a","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":"3:k;6:M;9:G;12:T;15:P;18:E;21:Z;24:Y;-3:m;-6:μ;-9:n;-12:p;-15:f;-18:a;-21:z;-24:y","qIsReserved":true},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"name","qMetaDef":{},"qInfo":{"qId":"8f522edd-a2e7-415f-bbb5-e310b455a883","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":"ProductSalesReporting","qIsReserved":false},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"index","qMetaDef":{},"qInfo":{"qId":"b53168b9-ed13-475b-8ada-e44348e46bb5","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":"0","qIsReserved":false},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"currentName","qMetaDef":{},"qInfo":{"qId":"d1e69002-8b62-4005-85c7-09483eba6ff0","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":"ProductSalesReporting","qIsReserved":false},{"qNumberPresentation":{"qType":"U","qnDec":10,"qUseThou":0},"qName":"matches","qMetaDef":{},"qInfo":{"qId":"60f22b04-2e28-44d4-9769-816f2c98d523","qType":"variable"},"qIsConfig":false,"qIsScriptCreated":true,"qDefinition":"0","qIsReserved":false}],"measures":[],"stories":[],"dataconnections":[{"qId":"2be37848-e13a-401f-94c8-de304bf1ff0b","qName":"Microsoft_SQL_Server_35.208.75.7","qConnectionString":"CUSTOM CONNECT TO \"provider=QvOdbcConnectorPackage.exe;driver=mssql;host=35.208.75.7;port=2018;database=Consumption;Encrypt=false;TrustServerCertificate=false;Min_TLS=1.0;Trusted_Connection=false;Use_NTLM=false;Integrated Security=false;separateCredentials=false;allowNonSelectQueries=false;useBulkReader=false;bulkFetchSize=50;rowBatchSize=1;bulkFetchColumnMode=true;maxStringLength=4096;EnableQuotedIdentifiers=1;ReturnSpecificTypeAsOdbcType=yes;\"","qType":"QvOdbcConnectorPackage.exe","qMeta":{"privileges":["change_owner","change_space","delete","list","read","update"]},"qLogOn":"LOG_ON_CURRENT_USER"},{"qId":"ee6a390c-5d33-11e8-9c2d-fa7ae01bbebc","qName":"MyDataFiles","qConnectionString":"CUSTOM CONNECT TO \"provider=qix-datafiles.exe;path=mydatafiles;\"","qType":"qix-datafiles.exe","qMeta":{"privileges":["read"]},"qLogOn":"LOG_ON_SERVICE_USER"},{"qId":"6f93cda1-15c4-4321-94e7-ac3cdcab5e4c","qName":"DataFiles","qConnectionString":"CUSTOM CONNECT TO \"provider=qix-datafiles.exe;path=datafiles;\"","qType":"qix-datafiles.exe","qMeta":{"privileges":["read"]},"qLogOn":"LOG_ON_SERVICE_USER"},{"qId":"91030040-c91a-4c59-913f-2d8e89e3df88","qName":"DataPrepAppCache","qConnectionString":"CUSTOM CONNECT TO \"provider=qix-datafiles.exe;path=dataprepappcache;\"","qType":"qix-datafiles.exe","qMeta":{"privileges":["read"]},"qLogOn":"LOG_ON_SERVICE_USER"}],"masterobjects":[],"appprops":[{"qProperty":{"qInfo":{"qId":"9e6037c1-5cf3-45b0-8f8c-07e515f54bfe","qType":"appprops"},"qMetaDef":{},"sheetTitleBgColor":{"color":"#ffffff","index":1},"sheetTitleGradientColor":{"color":"#ffffff","index":1},"sheetTitleColor":"","sheetLogoThumbnail":{"qStaticContentUrlDef":{}},"sheetLogoPosition":"","rtl":false,"theme":"sense","disableCellNavMenu":true,"enableHcModifiers":false},"qChildren":[]}],"properties":{"qTitle":"ProductSalesReporting Qlik","qLastReloadTime":"2022-10-05T08:37:11.758Z","qSavedInProductVersion":"12.1490.0","qThumbnail":{},"description":"Testing with Rudi review","encrypted":true,"id":"81016fbc-a84c-42a1-8051-43b203438416","published":false,"owner":"auth0|83dfa29c6f4ebeb1e98bb60c0f93ec4c539ac0e6889b1239a717ca229a30d9f6","ownerId":"633a3beb06e41c4c2077c3db","createdDate":"2022-10-05T08:36:59.850Z","modifiedDate":"2022-10-05T08:37:12.777Z","hassectionaccess":false,"_resourcetype":"app","privileges":["read","update","delete","reload","export","duplicate","change_owner","change_space","export_reduced","source"],"create":[{"resource":"sheet","canCreate":true},{"resource":"bookmark","canCreate":true},{"resource":"snapshot","canCreate":true},{"resource":"story","canCreate":true},{"resource":"dimension","canCreate":true},{"resource":"measure","canCreate":true},{"resource":"masterobject","canCreate":true},{"resource":"variable","canCreate":true}]},"dimensions":[]}

6 Messages

Will investigate further on Monday, but to your earlier point, given its the trial and trial users are ‘Professinal’ rather than ‘Enterprise’ I’d imagine the enterprise only endpoints you refer to will fail.

If so next step will be to chase the customer for Enterprise QlikSense cloud access and token. Will advise on Monday

Regards
-Roger

6 Messages

To close this out

Running POST on localhost:8080/sync produces same as said by Rudi, namely

{ "message": "Internal error during execution.", "exceptionMessage": "com.collibra.marketplace.qliksense.engine.exception.QRisottoException: com.neovisionaries.ws.client.OpeningHandshakeException: The status code of the opening handshake response is not '101 Switching Protocols'. The status line is: HTTP/1.1 200 OK" }

Unsure if this is due to lack of enterprise licencing, next step would be to try on an enterprise environemnt. Yes?

368 Messages

2 years ago

Hi @roger.lockerbie.collibra.com,

Thanks for the update.

Regarding the minor code modification, just to let you know that the fix will be released as part of v2.0.1.

Meanwhile, yes, it might be related to the account type (i.e. an Enterprise account being required). This is due to the /sync endpoint that makes a request to retireve a list of documents, which is only available to Enterprise users.

Currently, since a trial account is being used, you can try using the other endpoint that is exposed by the QlikSense integration. Thanks

Request:

http://localhost:8080/synchronize?documentIds=xxxx-xxxx,xxxx-xxxx

where:

  • the value of the query parameter documentIds should be set to a comma-separated list of document IDs that should be synchronized. (Example: 5982f10f-0c40-40b2-bcd8-e602ba5352d9,5a2820bc-52b3-4d1c-92c8-22a8f4617b3a)

6 Messages

Hi Springboot team

I was getting same error as Rudi earlier, but then saw the part in the docs around having to map the assets/relations etc to ID’s is the custom constants enum and re-compile/deply. Filled all those out and progressed further.

Can confirm synchronize itself works, in terms of generating POJO objects but the subsequent Import of the assets via the springoot collibra 1.19 integration API is failing.

Rather than explaining, please see attached log from the integration. showing the progress/current failure point. dgcjobs.log contains similar info on dcs-poc.collibra.com

I’ve added some debugging, and can confirm that the qlik community and qlik domain UUIDS exist and point to the community created by the CMA import and the QlikSense Data Dictionary (domain) as per screenshots below, I’ve added logging to print the community and domain uuids that are being used just to double check - and all is correct

Hence I don’t know what the errors in the import mean (or even if they’re red-herrings to the actual issue) .

So we’re close, but something is still awry or misconfigured

The qlik trial our end is running out shortly, so if you could respond with next steps quickly, it would be greatly appreciated. Thanks

qliksense-to-collibra-integration.txt (241.6 KB)





368 Messages

2 years ago

Hi @roger.lockerbie.collibra.com,

Thanks for the update.

It seems that respective IDs are set for the following properties, while the names are required.

collibra.domain.qlik
collibra.community.qlik 

Therefore, can you please try replacing the resource IDs with the respective community/domain name? Thanks

6 Messages

2 years ago

Oh dear.

I’d got Asset Reference UUIDs in my head, and it clearly says, name, and after changing hem to name, I can confirm it works.

Thanks very much for your ongoing and prompt help

368 Messages

2 years ago

Hi @roger.lockerbie.collibra.com,

No worries and thanks for the update.

6 Messages

Hi @spring-team.collibra.com

as a FYI - we imported a second QlikSense report, and it blew up on import citing the inability to create a relationship for a dimension asset - I hacked some code to ignore this one dimension asset and then the report imported ok.

Attached is a JSON of the report and the offending dimension “Licence Number” is line number 17334. I couldn’t see anything obviously different about it - it processes the POJO fine, but fails import as per the screenshot below - once ignored the rest of the report including other dimensions imports fine. (have renamed extension from json to txt to get past the allowed types for attachments) -

failedQlikDoc.txt (805.5 KB)

368 Messages

2 years ago

Hi @roger.lockerbie.collibra.com ,

The integration does not contain a relationship with the ‘Contains Business Dimension’ role/co-role. Is this a custom relation, or could it be a misconfiguration in the customconstants.java class file? Have you used the CMA file to import the correct IDs into your Collibra instance?

Regarding the modifications you mentioned, are the modifications only related to fixing the import bug, or did you add any additional logic to the current marketplace version?

The following are all of the relations that the integration uses:

  • SHEET_IS_PART_OF_REPORT,
  • CELL_IS_PART_OF_SHEET,
  • DIMENSION_IS_PART_OF_REPORT,
  • DIMENSION_FIELD_IS_PART_OF_DIMENSION,
  • MEASURE_IS_PART_OF_REPORT,
  • MEASURE_EXPRESSION_IS_EXPRESSION_FOR_MEASURE,
  • VARIABLE_IS_PART_OF_REPORT,
  • BOOKMARK_IS_SNAPSHOT_OF_SHEET,
  • BOOKMARK_IS_PART_OF_REPORT,
  • BOOKMARK_STATE_IS_STATE_FOR_BOOKMARK,
  • BOOKMARK_STATE_FIELD_IS_PART_OF_BOOKMARK_STATE,
  • DATA_CONNECTION_IS_PART_OF_REPORT

The most similar relation is Dimension is part of report.

You can ensure that the correct IDs are set between your Collibra instance and the integration. Also, do you know the asset types of the ‘Licence Number’ asset?

Thanks

Loading...