Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Qlik offers a wide range of channels to assist you in troubleshooting, answering frequently asked questions, and getting in touch with our technical experts. In this article, we guide you through all available avenues to secure your best possible experience.
For details on our terms and conditions, review the Qlik Support Policy.
Index:
We're happy to help! Here's a breakdown of resources for each type of need.
| Support | Professional Services (*) | |
| Reactively fixes technical issues as well as answers narrowly defined specific questions. Handles administrative issues to keep the product up-to-date and functioning. | Proactively accelerates projects, reduces risk, and achieves optimal configurations. Delivers expert help for training, planning, implementation, and performance improvement. | |
|
|
(*) reach out to your Account Manager or Customer Success Manager
Your first line of support: https://community.qlik.com/
Looking for content? Type your question into our global search bar:
Leverage the enhanced and continuously updated Knowledge Base to find solutions to your questions and best practice guides. Bookmark this page for quick access!
Subscribe to maximize your Qlik experience!
The Support Updates Blog
The Support Updates blog delivers important and useful Qlik Support information about end-of-product support, new service releases, and general support topics. (click)
The Qlik Design Blog
The Design blog is all about product and Qlik solutions, such as scripting, data modelling, visual design, extensions, best practices, and more! (click)
The Product Innovation Blog
By reading the Product Innovation blog, you will learn about what's new across all of the products in our growing Qlik product portfolio. (click)
Q&A with Qlik
Live sessions with Qlik Experts in which we focus on your questions.
Techspert Talks
Techspert Talks is a free webinar to facilitate knowledge sharing held on a monthly basis.
Technical Adoption Workshops
Our in depth, hands-on workshops allow new Qlik Cloud Admins to build alongside Qlik Experts.
Qlik Fix
Qlik Fix is a series of short video with helpful solutions for Qlik customers and partners.
Suggest an idea, and influence the next generation of Qlik features!
Search & Submit Ideas
Ideation Guidelines
Get the full value of the community.
Register a Qlik ID:
Incidents are supported through our Chat, by clicking Chat Now on any Support Page across Qlik Community.
To raise a new issue, all you need to do is chat with us. With this, we can:
Log in to manage and track your active cases in the Case Portal. (click)
Before you can access the Support Portal, please complete your Community account setup. See First time access to the Qlik Customer Support Portal fails with: Unauthorized Access Please try signing out and sign in again.
Please note: to create a new case, it is easiest to do so via our chat (see above). Our chat will log your case through a series of guided intake questions.
When creating a case, you will be prompted to enter problem type and issue level. Definitions shared below:
Select Account Related for issues with your account, licenses, downloads, or payment.
Select Product Related for technical issues with Qlik products and platforms.
If your issue is account related, you will be asked to select a Priority level:
Select Medium/Low if the system is accessible, but there are some functional limitations that are not critical in the daily operation.
Select High if there are significant impacts on normal work or performance.
Select Urgent if there are major impacts on business-critical work or performance.
If your issue is product related, you will be asked to select a Severity level:
Severity 1: Qlik production software is down or not available, but not because of scheduled maintenance and/or upgrades.
Severity 2: Major functionality is not working in accordance with the technical specifications in documentation or significant performance degradation is experienced so that critical business operations cannot be performed.
Severity 3: Any error that is not Severity 1 Error or Severity 2 Issue. For more information, visit our Qlik Support Policy.
If you require a support case escalation, you have two options:
When other Support Channels are down for maintenance, please contact us via phone for high severity production-down concerns.
A collection of useful links.
Qlik Cloud Status Page
Keep up to date with Qlik Cloud's status.
Support Policy
Review our Service Level Agreements and License Agreements.
Live Chat and Case Portal
Your one stop to contact us.
To create a CICD environment without an internet connection:
The version must patch your Studio version.
Ever wanted to brand or customize the default Qlik Sense Login page?
The functionality exists, and it's really as simple as just designing your HTML page and 'POSTing' it into your environment.
We've all seen the standard Qlik Sense Login page, this article is all about customizing this page.
This customization is provided as is. Qlik Support cannot provide continued support of the solution. For assistance, reach out to our Professional Services or engage in our active Integrations forum.
To customize the page:
{
"id": "8817d7ab-e9b2-4816-8332-f8cb869b27c2",
"createdDate": "2020-03-23T15:39:33.540Z",
"modifiedDate": "2020-05-20T18:46:13.995Z",
"modifiedByUserName": "INTERNAL\\sa_api",
"customProperties": [],
"settings": {
"id": "8817d7ab-e9b2-4816-8332-f8cb869b27c2",
"createdDate": "2020-03-23T15:39:33.540Z",
"modifiedDate": "2020-05-20T18:46:13.995Z",
"modifiedByUserName": "INTERNAL\\sa_api",
"listenPort": 443,
"allowHttp": true,
"unencryptedListenPort": 80,
"authenticationListenPort": 4244,
"kerberosAuthentication": false,
"unencryptedAuthenticationListenPort": 4248,
"sslBrowserCertificateThumbprint": "e6ee6df78f9afb22db8252cbeb8ad1646fa14142",
"keepAliveTimeoutSeconds": 10,
"maxHeaderSizeBytes": 16384,
"maxHeaderLines": 100,
"logVerbosity": {
"id": "8817d7ab-e9b2-4816-8332-f8cb869b27c2",
"createdDate": "2020-03-23T15:39:33.540Z",
"modifiedDate": "2020-05-20T18:46:13.995Z",
"modifiedByUserName": "INTERNAL\\sa_api",
"logVerbosityAuditActivity": 4,
"logVerbosityAuditSecurity": 4,
"logVerbosityService": 4,
"logVerbosityAudit": 4,
"logVerbosityPerformance": 4,
"logVerbositySecurity": 4,
"logVerbositySystem": 4,
"schemaPath": "ProxyService.Settings.LogVerbosity"
},
"useWsTrace": false,
"performanceLoggingInterval": 5,
"restListenPort": 4243,
"virtualProxies": [
{
"id": "58d03102-656f-4075-a436-056d81144c1f",
"prefix": "",
"description": "Central Proxy (Default)",
"authenticationModuleRedirectUri": "",
"sessionModuleBaseUri": "",
"loadBalancingModuleBaseUri": "",
"useStickyLoadBalancing": false,
"loadBalancingServerNodes": [
{
"id": "f1d26a45-b0dd-4be1-91d0-34c698e18047",
"name": "Central",
"hostName": "qlikdemo",
"temporaryfilepath": "C:\\Users\\qservice\\AppData\\Local\\Temp\\",
"roles": [
{
"id": "2a6a0d52-9bb4-4e74-b2b2-b597fa4e4470",
"definition": 0,
"privileges": null
},
{
"id": "d2c56b7b-43fd-44ad-a12f-59e778ce575a",
"definition": 1,
"privileges": null
},
{
"id": "37244424-96ae-4fe5-9522-088a0e9679e3",
"definition": 2,
"privileges": null
},
{
"id": "b770516e-fe8a-43a8-a7a4-318984ee4bd6",
"definition": 3,
"privileges": null
},
{
"id": "998b7df8-195f-4382-af18-4e0c023e7f1c",
"definition": 4,
"privileges": null
},
{
"id": "2a5325f4-649b-4147-b0b1-f568be1988aa",
"definition": 5,
"privileges": null
}
],
"serviceCluster": {
"id": "b07fc5f2-f09e-4676-9de6-7d73f637b962",
"name": "ServiceCluster",
"privileges": null
},
"privileges": null
}
],
"authenticationMethod": 0,
"headerAuthenticationMode": 0,
"headerAuthenticationHeaderName": "",
"headerAuthenticationStaticUserDirectory": "",
"headerAuthenticationDynamicUserDirectory": "",
"anonymousAccessMode": 0,
"windowsAuthenticationEnabledDevicePattern": "Windows",
"sessionCookieHeaderName": "X-Qlik-Session",
"sessionCookieDomain": "",
"additionalResponseHeaders": "",
"sessionInactivityTimeout": 30,
"extendedSecurityEnvironment": false,
"websocketCrossOriginWhiteList": [
"qlikdemo",
"qlikdemo.local",
"qlikdemo.paris.lan"
],
"defaultVirtualProxy": true,
"tags": [],
"samlMetadataIdP": "",
"samlHostUri": "",
"samlEntityId": "",
"samlAttributeUserId": "",
"samlAttributeUserDirectory": "",
"samlAttributeSigningAlgorithm": 0,
"samlAttributeMap": [],
"jwtAttributeUserId": "",
"jwtAttributeUserDirectory": "",
"jwtAudience": "",
"jwtPublicKeyCertificate": "",
"jwtAttributeMap": [],
"magicLinkHostUri": "",
"magicLinkFriendlyName": "",
"samlSlo": false,
"privileges": null
},
{
"id": "a8b561ec-f4dc-48a1-8bf1-94772d9aa6cc",
"prefix": "header",
"description": "header",
"authenticationModuleRedirectUri": "",
"sessionModuleBaseUri": "",
"loadBalancingModuleBaseUri": "",
"useStickyLoadBalancing": false,
"loadBalancingServerNodes": [
{
"id": "f1d26a45-b0dd-4be1-91d0-34c698e18047",
"name": "Central",
"hostName": "qlikdemo",
"temporaryfilepath": "C:\\Users\\qservice\\AppData\\Local\\Temp\\",
"roles": [
{
"id": "2a6a0d52-9bb4-4e74-b2b2-b597fa4e4470",
"definition": 0,
"privileges": null
},
{
"id": "d2c56b7b-43fd-44ad-a12f-59e778ce575a",
"definition": 1,
"privileges": null
},
{
"id": "37244424-96ae-4fe5-9522-088a0e9679e3",
"definition": 2,
"privileges": null
},
{
"id": "b770516e-fe8a-43a8-a7a4-318984ee4bd6",
"definition": 3,
"privileges": null
},
{
"id": "998b7df8-195f-4382-af18-4e0c023e7f1c",
"definition": 4,
"privileges": null
},
{
"id": "2a5325f4-649b-4147-b0b1-f568be1988aa",
"definition": 5,
"privileges": null
}
],
"serviceCluster": {
"id": "b07fc5f2-f09e-4676-9de6-7d73f637b962",
"name": "ServiceCluster",
"privileges": null
},
"privileges": null
}
],
"authenticationMethod": 1,
"headerAuthenticationMode": 1,
"headerAuthenticationHeaderName": "userid",
"headerAuthenticationStaticUserDirectory": "QLIKDEMO",
"headerAuthenticationDynamicUserDirectory": "",
"anonymousAccessMode": 0,
"windowsAuthenticationEnabledDevicePattern": "Windows",
"sessionCookieHeaderName": "X-Qlik-Session-Header",
"sessionCookieDomain": "",
"additionalResponseHeaders": "",
"sessionInactivityTimeout": 30,
"extendedSecurityEnvironment": false,
"websocketCrossOriginWhiteList": [
"qlikdemo",
"qlikdemo.local"
],
"defaultVirtualProxy": false,
"tags": [],
"samlMetadataIdP": "",
"samlHostUri": "",
"samlEntityId": "",
"samlAttributeUserId": "",
"samlAttributeUserDirectory": "",
"samlAttributeSigningAlgorithm": 0,
"samlAttributeMap": [],
"jwtAttributeUserId": "",
"jwtAttributeUserDirectory": "",
"jwtAudience": "",
"jwtPublicKeyCertificate": "",
"jwtAttributeMap": [],
"magicLinkHostUri": "",
"magicLinkFriendlyName": "",
"samlSlo": false,
"privileges": null
}
],
"formAuthenticationPageTemplate": "",
"loggedOutPageTemplate": "",
"errorPageTemplate": "",
"schemaPath": "ProxyService.Settings"
},
"serverNodeConfiguration": {
"id": "f1d26a45-b0dd-4be1-91d0-34c698e18047",
"name": "Central",
"hostName": "qlikdemo",
"temporaryfilepath": "C:\\Users\\qservice\\AppData\\Local\\Temp\\",
"roles": [
{
"id": "2a6a0d52-9bb4-4e74-b2b2-b597fa4e4470",
"definition": 0,
"privileges": null
},
{
"id": "d2c56b7b-43fd-44ad-a12f-59e778ce575a",
"definition": 1,
"privileges": null
},
{
"id": "37244424-96ae-4fe5-9522-088a0e9679e3",
"definition": 2,
"privileges": null
},
{
"id": "b770516e-fe8a-43a8-a7a4-318984ee4bd6",
"definition": 3,
"privileges": null
},
{
"id": "998b7df8-195f-4382-af18-4e0c023e7f1c",
"definition": 4,
"privileges": null
},
{
"id": "2a5325f4-649b-4147-b0b1-f568be1988aa",
"definition": 5,
"privileges": null
}
],
"serviceCluster": {
"id": "b07fc5f2-f09e-4676-9de6-7d73f637b962",
"name": "ServiceCluster",
"privileges": null
},
"privileges": null
},
"tags": [],
"privileges": null,
"schemaPath": "ProxyService"
}
If your login page does not work and you need to revert back to the default, simply do a GET call on your proxy service, and set formAuthenticationPageTemplate back to an empty string:
formAuthenticationPageTemplate": ""
The distribution of QlikView apps from QlikView Distribution Service to Qlik Cloud fails with the error "TestCloudLicense: Failed - Unauthorized. Failed to retrieve qv_nodes tag."
Please, reach out to your account manager to have that fixed.
This article gives an overview of how to analyse failed app reloads with OpenAI using Qlik Automate, which is now available as a template.
This template is triggered when a Qlik Cloud app reload fails. It then analyzes the reload error with OpenAI and sends a Slack message with the app, space, reload details, and AI diagnosis. Session app and data preparation reloads are filtered out to focus on user-created script issues, keeping your alerts relevant and actionable.
This template is a good starting point if you want to:
The template is available on the template picker. You can find it by navigating to Add new -> New automation -> Search templates, searching for Diagnose failed app reloads with AI and notify your team on Slack in the search bar, and clicking the Use template option.
You will find a version of this automation attached to this article: "Diagnose-failed-app-reloads-with -AI-and-notify-your-team-on-Slack.json".
Content
When an analytics app reload fails, the automation:
The Slack message includes:
Before using this template, make sure you have access to:
This is the first block in the automation. It acts as the listener that starts the entire workflow.
How it works:
The block runs in webhook mode and listens for the App Reload Finished webhook event from the Qlik Cloud Services connector. The template uses an App ID guard in the event filter to prevent unnecessary webhook triggers: (App Ids eq "Specify_Your_App_Id_Here")
What you need to configure:
Event Filter: Pre-set to Reload status (A) as Failed (error) and Usage (B) as Analytics. Replace Specify_Your_App_Id_Here in the App Ids (C) parameter with your actual app Id during development.
When moving to production, either:
This block provides a second layer of filtering, specifically for session apps.
How it works:
Even though the App Reload Finished webhook event filter only includes analytics app reloads, session apps can still slip through because they share the Analytics usage type. This condition checks the app ID for the SessionApp_ prefix.
Session apps are temporary apps, primarily used by background system processes rather than front-end user consumption, so including them usually adds noise and low-value alerts.
Only include session app events if you intentionally create session apps through Qlik Cloud APIs. In that case, you should filter on the actor so that only your own generated events are processed.
Yes branch:
If the app is a session app, the automation stops early. The run title is updated to Analysis skipped (SessionApp) so the automation history clearly shows why no alert was sent.
No branch:
If the app is not a session app, the automation continues to the next blocks, where it gathers tenant, space, and user details before sending the failure analysis to OpenAI and posting the result to Slack.
What you need to configure:
This block retrieves the hostname and other details about your Qlik Cloud tenant.
How it works:
The tenant hostname is later used to build a direct link to the failed app in the Slack message. Without this step, the link would be incomplete.
This block checks whether the failed analytics app reload came from an app that belongs to a space.
How it works:
It checks whether the space ID in the event payload is empty.
Yes branch:
If a space exists, the automation continues to the Get Space block. This block retrieves the name and type of the space where the analytics app lives. It uses the space ID from the App Reload Finished webhook event to look up the full space details, and it's stored in an object variable. The space name and type are included in the Slack message so your team immediately knows where the failed app is located.
No branch:
If no space exists, which means the app resides in the user's personal space, the automation creates a default object with the name Personal and type personal. This ensures the Slack message still has a space value to display, even when the app is in the user’s personal space.
What you need to configure:
Nothing. This condition is pre-configured and requires no changes.
This block retrieves details about the user whose app reload failed.
How it works:
It uses the user ID from the App Reload Finished webhook event to look up user details. This information can be referenced in the Slack message and is useful if you want to escalate directly to the app owner or expand the notification with owner's contact information later.
This block constructs the prompt that is sent to OpenAI.
How it works:
It formats the app reload error details from the App Reload Finished webhook event payload into a structured message and passes it to the OpenAI Chat Completion block.
The pre-written prompt instructs OpenAI to act as a senior Qlik Cloud Analytics engineer, identify the root cause of the app load script error, explain why it happened, and suggest the exact changes needed to fix it. Responses are capped at 800 characters and formatted as plain numbered paragraphs so they fit cleanly into a Slack message.
What you need to configure:
The role field is empty by default. The automation will fail at this step if you do not provide a role before running.
This block bridges the prompt builder and the OpenAI Chat Completion block.
How it works:
The OpenAI Chat Completion block expects messages to be passed as a list, not a single object. This block first empties the chatList variable to make sure there is no leftover data from a previous run, then adds the response from the Chat Completion Message block as a new item in the list. The result is a properly formatted list that can be sent directly to the Chat Completion block.
What you need to configure:
Nothing. This block is pre-configured and works automatically based on the output of the previous step.
This block sends the prompt to OpenAI and receives the analysis response.
How it works:
It calls the OpenAI Chat Completion API using the message built in the previous step.
The token limit is pre-set to 300 to keep responses concise. It prevents the model from rambling, helps cap output length to reduce cost, and remains bounded by the selected model's own architectural limits. The model field is intentionally left blank so you can choose the model that suits your subscription.
We tested this template with the gpt-5.4-mini model, and it performed very well for reload-failure diagnosis. In most cases, lower-cost models are generally very effective at diagnosing.
What you need to configure:
The model field is empty by default. The automation will fail at this step if you do not provide a model name before running.
This block checks whether the AI response fits within the Slack message size limit before sending.
How it works:
It measures the character length of the OpenAI response. If the response is 2800 characters or more, the message is too long to be posted cleanly in Slack, so the automation takes a fallback path.
Yes branch, response is too long (≥ 2800 characters):
The output variable is set to a fallback message: "Generated message was too long. Refer to [link] for full response."
The link points directly to this automation run in the history page so the team can still access the full AI diagnosis.
No branch, response fits (< 2800 characters):
The output variable is set to the full AI response from OpenAI. This value is then used in the Slack message in the next step.
What you need to configure:
Nothing. This condition is pre-configured. You can adjust the 2800-character threshold if needed.
This block posts the App Reload failure notification along with AI diagnosis to your Slack channel.
How it works:
It formats all collected details into a single Slack message. The message contains:
What you need to configure:
The channel field is empty by default. The automation will fail at this step if you do not provide a channel before running.
This block writes the full Slack message content to the automation run output so it is visible directly in the Output section of the automation run history.
How it works:
It captures and displays the exact same formatted message that was sent to Slack — including the app link, reload ID, space details, error code, and AI diagnosis. This means you can review what was sent without opening Slack, which is useful when debugging or auditing past runs.
These two blocks make automation run history easy to scan without opening every run.
How it works:
Why this matters:
What you need to configure:
You can modify this automation to match your specific requirement:
The automation does not send a Slack message:
The AI response is too long:
A reload you expected to see was not processed:
This template gives you a focused, low-noise starting point for AI-assisted analytics app reload failure handling in Qlik Cloud. By filtering to analytics app errors only and excluding both session apps and data preparation reloads, it keeps alerts relevant and actionable. Teams can respond faster to app load script issues by receiving a clear Slack notification with context and an AI diagnosis the moment something goes wrong. You can modify the automation by adjusting the AI prompt, changing the destination channel, or adding escalation steps such as email or Microsoft Teams alerts.
This article is provided as-is and to be used at own discretion. Depending on tool(s) used, customization(s), and/or other factors ongoing support on the solution below may not be provided by Qlik Support.
The Qlik Sense Repository Database (QSR) can be moved to a dedicated standalone PostgreSQL instance not hosted on the same machine as other Qlik Sense Services. It is also possible to move an already existing QSR from a local Sense install, to a dedicated PostgresSQL database.
Content:
Instructions for this might vary slightly. Please refer to the Qlik Online Help for details. We recommend watching this video.
Qlik Sense Enterprise server has a set of five databases. For more details visit Installing and configuring PostgreSQL on help.qlik.com.
1. The Qlik Sense repository database (QSR):
The QSR is the primary database in your Qlik Sense deployment.
2. The Qlik Sense services database (SenseServices):
The SenseServices database contains schemas for each of the Qlik Sense services and allows growth independently of the Qlik Sense Repository Database, while still sharing the same PostgreSQL instance and login role.
3. The Qlik Sense message queue database (QSMQ):
The QSMQ database provides a light-weight method of passing messages internally between services in Qlik Sense Enterprise. The NOTIFY and LISTEN functionality in PostgreSQL allows services to be notified about new messages that have been written to the messaging table.
4. The Qlik Sense logging database (QLogs): No longer supported after May 2021
The QLogs database centralizes logging by collecting log messages from all Qlik Sense nodes in your deployment and stores them in a PostgreSQL database.
5. The Qlik Sense license service database (Licenses):
The Licenses database is used to sync the assignments between the Qlik license backend and the local installation.
Follow How to change the shared path in Qlik Sense
Depending on the version, you need to backup different databases, on the current Qlik Sense central node hosting the Qlik Sense Repository Database service, follow the backup instructions to obtain a database copy of each Qlik Sense Database Present .
Example for February 2021 you need to backup the databases reported in section "Installing and configuring PostgreSQL"; referring to the Help site these are :
QSR , QSMQ , SenseServices , Licenses , if configured QLogs
On the dedicated remote postgresSQL host, perform a restore of the backed up Databases of previous point.
Execute steps in Moved Postgress database to new host, but some qliksense is still accessing the SenseServices old database; check if different version of article are present for different Qlik Sense version .
Starting from April 2019 new License Service implementation is using this database.
It will look like this:
repeat this for:
C:\Program Files\Qlik\Sense\NotifierService\install\Configure-Service.ps1
C:\Program Files\Qlik\Sense\AppDistributionService\Configure-Service.ps1
C:\Program Files\Qlik\Sense\HybridDeploymentService\Configure-Service.ps1
C:\Program Files\Qlik\Sense\MobilityRegistrarService\install\Configure-Service.ps1
C:\Program Files\Qlik\Sense\PrecedentsService\install\Configure-Service.ps1
C:\Program Files\Qlik\Sense\NLAppSearch\install\Configure-Service.ps1
there might come new services or disappear with new releases, please check in the C:\Program Files\Qlik\Sense\ folder for "Configure-Service.ps1" to find additional one in your version of Qlik Sense.
Note: If you have installed Qlik Sense in a different directory the Configure-Service.ps1 would have to be updated as in this example:
File: Configure-Service.ps1 Folders: Various (9 microservices)
Before:
11 | [string] $senseInstallPath
"$env:ProgramFiles\Qlik Sense",
After:
11
[string] $senseInstallPath = "D:\Qlik",
After successfully verifying your new setup, remove the Qlik Sense Repository service dependencies and the old Postgres database. This is done to avoid issues with future Upgrade of Environment.
In Multi-node scenario you need to repeat steps "Changing the Connection Strings to Databases" on all Rim nodes (QlikSenseUtil for Repository.exe.config and Configure-Service.ps1 for the micro services), and if required configure "Update the Qlik Logging Service Connection String" (note that is EOL with Qlik Sense Enterprise on Windows February 2022) .
After the Talend Remote Engine goes down, the Remote Engine logs repeatedly show the same message in TalendRemoteEngine/data/log/karaf.log:
org.apache.karaf.main.lock.SimpleFileLock lock INFO: Lock failed
To resolve this, verify ownership and permissions of the application files, remove stale lock files, and restart the Talend Remote Engine:
sudo chown talenduser:talendgroup /opt/talend/TalendRemoteEngine -RAdjust the absolute path `/opt/talend/` if your installation directory differs.
sudo systemctl stop talend-remote-engine.service
rm /opt/talend/TalendRemoteEngine/lock
sudo systemctl start talend-remote-engine.service
An unexpected downtime or sudden disconnection of the Talend Remote Engine (RE) left the application's file lock (TalendRemoteEngine/lock) in an unsynced or stale state. Because the container detected this pre-existing lock file upon recovery, it assumed another process was already running, subsequently blocking all other dependent modules and services from initializing.
A security issue has been identified in Qlik NPrinting, and patches have been made available. If the vulnerability is successfully exploited, the issue could lead to a compromise of the server running the Qlik NPrinting software, including unauthenticated remote code execution (RCE).
All versions of Qlik NPrinting prior to and including these releases are impacted:
Using the CVSS V3.1 scoring system (https://nvd.nist.gov/vuln-metrics/cvss), these issues are rated HIGH.
(CVE-pending) OP-1018, Remote Code Execution (RCE) via Insecure Deserialization (TypeNameHandling.Auto)
Severity: CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:H/I:H/A:N 7.7(High)
Authenticated developers and administrators with network access may be able to execute arbitrary OS commands in Qlik NPrinting.
(CVE-2024-55580) QB-29586, QB-29864, QB-30007, QB-29802 - Broken Access Control (BAC)
Customers should upgrade Qlik NPrintings to a version containing the necessary fix. The fix is available for the following versions:
All Qlik software can be downloaded from our official Qlik Download page (customer login required).
Qlik Talend Studio was successfully set up on a virtual machine (VM). After cloning the VM, opening Qlik Talend Studio fails to open projects, instead erroring out with:
An error occured:
'void org.talend.repository.gitprovider.core.GitBaseRepositoryFactory.updateLockStatus()'
To fix the error, shut down Qlik Talend Studio first, then delete all .lock files found inside the .git directories.
The git lock files are found in the workspace for Qlik Talend Studio:
The GitBaseRepositoryFactory.updateLockStatus() error commonly occurs due to stale Git lock files that were copied along with the VM snapshot.
When the VM was snapshotted or copied, Qlik Talend (or its embedded Git) was likely mid-operation or simply had lock files present. These .lock Files are now orphaned on the cloned VM, and Git thinks a process is holding a lock, but no such process exists.
[Paragraph format. Link to related content, such as articles, community posts, Help articles, etc...]
[Paragraph format with internal investigation IDs (e.g Jira case ID(s)) ]
The Qlik Replicate Endpoint Server fails to start. The error may occur after an upgrade or initial installation and presents with the following error:
Failed to curl_easy_perform: curl status = 3, URL using bad/illegal format or missing URL ()
To resolve this issue, redirect the Java temporary directory to an alternative location that allows execution:
mkdir -p /att_tmp
chmod 755 /att_tmp
chown attunity:attunity /att_tmp
cd /opt/attunity/replicate/endpoint_srv/bin
cp rependctl.sh rependctl.sh.bak
vi rependctl.sh
"${AT_JAVA}" -XX:+UseG1GC -Djava.io.tmpdir=/att_tmp -Dfile.encoding=UTF-8 ${AT_JVM_OPT} -cp "${AT_CP}" "${AT_MAIN}" -d "${AT_DATA}" -plugins "${AT_PLUGIN_LIST}" "${@:1}"
The Qlik Replicate Endpoint Server utilizes the default system /tmp directory to unpack and execute temporary binary files or scripts during startup. If the /tmp filesystem is mounted with the noexec parameter (typically for security hardening in /etc/fstab), or if there are restrictive permissions on the /tmp folder, the application will be blocked from executing these files, causing the initialization to fail.
00397473
Qlik Replicate tasks fail to capture primary keys with a numeric value in a string datatype.
The problem occurs if the following criteria are met:
This leads to numeric records missing inserts during CDC replication. An upgrade to a later patch is required to resolve this issue.
Patch Qlik Replicate to (at least) 2025.11 SP04. Download the patch from the Qlik download page.
Qlik Replicate patches can be made available before their official release. Contact Qlik Support for details.
This article documents how to update the Qlik Talend Data Catalog repository password, which can be achieved either through the Talend Data Catalog user interface or the configuration files.
The application must be stopped completely before making changes to configuration files.
cd /opt/<TDC_HOME>/TalendDataCatalog sudo ./RestartServerApplication.sh exit
db.connection.password=
Avoid extra spaces when updating the value.
Qlik Talend Data Catalog login fails with the following error written to the logs:
General error during service initialization: The Scheduler has been shut down.
A complete error stack trace:
(System) MIRWEB_F0004 General error during service initialization: The Scheduler has been shutdown.
(System) MIRWEB_E0115 Application Exception for request: MITI.web.mm.actions.auth.InitLicense.
Browser URL:
Parameters:
username: Administrator
password: ********
MITI.web.common.exceptions.CommandFaultException: The Scheduler has been shutdown.
at MITI.web.mm.actions.auth.InitLicense.runJsonCommand(InitLicense.java:81) ~[1-MM.war:?]
at MITI.web.mm.actions.AbstractJsonAction.doExecute(AbstractJsonAction.java:27) ~[1-MM.war:?]
Restart the Qlik Talend Data Catalog application server using the RestartServerApplication script.
Linux:
Navigate to the software home directory and run the RestartServerApplication.sh script:
cd /opt/<TDC_HOME>/TalendDataCatalog sudo ./RestartServerApplication.sh exit
Windows:
Go to the software home directory and run the RestartServerApplication.bat file to start the Talend Data Catalog Application Server.
Alternatively, restart the service using the Windows Services applet.
The error indicates that the internal scheduler service (Quartz scheduler) is not running or has already been terminated when the web service tries to initialize. Because the application attempted to use the scheduler service, which had already been stopped when the server shut down due to license expiration. When the InitLicense request was executed, it attempted to access scheduled events, but the scheduler was not running or properly initialized.
Common root causes are:
If you want to submit a new idea or improvement request for Qlik's products, our Ideas section in the Qlik Community is open to all registered customers. The Ideation portal covers ideas and suggestions for all Qlik Products, such as Qlik Cloud Analytics, Qlik Sense Enterprise on Windows, Qlik Talend, Qlik Stitch, and more.
Content:
Ideas are qualified and prioritized based on their value to improving and enhancing the Qlik product. For a successful request, please consider including a strong business case on why you think the change would be beneficial, including:
A valid Qlik ID (log in to the Community) is required.
Before you get started, review Ideation Guidelines: How to Submit an Idea for submission guidelines and eligibility information.
A valid Qlik ID (log in to the Community) is required.
Ideas and Improvement requests are reviewed by our product teams. While we strive to provide answers, we cannot guarantee a specific response time.
Ideation on Community
Ideation Platform Updates
Ideation Guidelines: How to Submit an Idea
This article documents an example of how to configure MAM control of the Qlik Analytics Mobile app.
The example is provided as is. Qlik does not offer guidance on configuring Entra Conditional Access policies or broader Intune deployments. For those details, see Learn about Conditional Access and Intune in the Microsoft documentation.
As per Securing and configuring the Qlik Analytics mobile app with Microsoft Intune and the section titled Conditional Access scope considerations, the authentication flow for the mobile app follows the Qlik Cloud IDP OIDC progression.
The pattern and steps outlined in this article are the working example Qlik used in verification testing of the Conditional Access control for the Qlik Analytics mobile app policy deployment. Your own policy and configuration definitions may vary, and Microsoft documentation or support should be contacted for further help that is specific to your Entra and Intune environments.
On the test device:
High target latency is observed when replicating to an Azure Data Lake Storage (ADLS) target.
Because ADLS is a file-based storage system rather than a traditional relational database, such high latency is unexpected.
Additionally, even though the File size reaches (KB) and Elapsed time reaches (Sec) thresholds are properly configured under the ADLS endpoint's Change Processing settings, Qlik Replicate fails to upload or transfer any CSV files to the target.
This behavior makes the replication task appear completely stuck or frozen.
To resolve this issue, enable the internal parameter splitTransactionOverFiles on the endpoint. This forces Qlik Replicate to split large single transactions across multiple smaller files, allowing your file size and elapsed time thresholds to trigger properly and restoring normal file delivery.
The field is case-sensitive.
By default, Qlik Replicate writes an entire source transaction into a single target file.
If the source system executes a massive transaction (for example, updating 1 million records in a single commit), Qlik Replicate must process and write all 1 million records into the same CSV file and upload it.
This causes the file transfer to hold indefinitely until the entire transaction is written, resulting in high latency.
The HostInfo.xml file in Talend Data Catalog is used for license management. It contains your server's hardware and host identity information and is required whenever you need a new license generated by Qlik.
Submit the HostInfo.xml file to the Qlik Customer Portal as part of your license request.
Qlik will use the host information to generate a license file tied to your server.
For active-passive cluster setups, you can get a license that works for both servers by providing two HostInfo.xml files, one for each server in your license request.
Beginning on April 14, 2026, QlikView customers experienced outages and intermittent disruptions within their QlikView environments. These incidents coincided with the deployment of Microsoft’s April 2026 security patches to Domain Controllers, which affected QlikView Server Service (QVS) communications over port 4747.
The Microsoft patches introduced changes targeting Kerberos authentication and RC4 encryption. As a result, QlikView environments where RC4 remained enabled (such as at the domain account or Windows server level) became unstable or non-functional.
The impact on QlikView may include, but is not limited to:
This article documents the steps to reconfigure the environment to comply with the RC4 cipher suite deprecation.
Information in this article is based on Microsoft's remediation steps and has been adjusted and expanded to include QlikView-specific instructions. For the original, see Detect and remediate RC4 usage in Kerberos | learn.microfot.com.
There are three stages; not all may be required. Always start at the first one.
These steps require you to remove the computer from the domain and then re-add it. Before proceeding, ensure you have a Local Administrator account and its password for each of the QlikView servers.
It may be necessary to clear the Kerberos ticket on the affected QlikView server(s).
It may be necessary to reset the Domain password for the QlikView service account.
If the QlikView service account was used for any data connection(s), they will need to be updated with the new password.
Microsoft Patches:
This article explains how to connect the Qlik MCP (Model Context Protocol) server to Snowflake Intelligence, enabling Snowflake Cortex Agents to query and interact with Qlik Cloud resources, such as apps, data assets, and analytics, directly from the Snowflake AI interface.
Content
The OAuth2 client provides Snowflake with the credentials it needs to authenticate against the Qlik MCP server on behalf of users. For details on creating OAuth clients, see Creating and managing OAuth clients.
Copy the Client ID and Client Secret immediately after creation. The secret cannot be retrieved later — if lost, you must generate a new one.
The mcp:execute scope is required to allow Snowflake to invoke tools on the Qlik MCP server. The user_default scope grants access to resources the authenticated user can already access in Qlik Cloud.
For details on the Qlik MCP server endpoint and supported tools, see Connecting to the Qlik MCP server.
Using the OAuth client credentials previously retrieved, run the following Snowflake SQL script to:
-- ============================================================
-- Parameters — update these values before running
-- ============================================================
SET TENANT = '<your-tenant>.us.qlikcloud.com'; -- Do not include https://
SET CLIENT_ID = '<your-oauth-client-id>';
SET CLIENT_SECRET = '<your-oauth-client-secret>';
SET ALLOWED_ROLE = 'PUBLIC'; -- The Snowflake role that should have access.
-- ⚠️ PUBLIC grants access to all users in the account.
-- For production, replace with a more restrictive role.
-- ============================================================
-- Derived values — no changes needed below this point
-- ============================================================
SET MCP_URL = 'https://' || $TENANT || '/api/ai/mcp';
-- Create the API Integration with OAuth2 configuration
DROP API INTEGRATION IF EXISTS qlik_mcp_integration;
EXECUTE IMMEDIATE
$$
DECLARE
v_tenant VARCHAR;
v_client_id VARCHAR;
v_client_secret VARCHAR;
v_mcp_url VARCHAR;
sql_stmt VARCHAR;
BEGIN
SELECT GETVARIABLE('TENANT') INTO v_tenant;
SELECT GETVARIABLE('CLIENT_ID') INTO v_client_id;
SELECT GETVARIABLE('CLIENT_SECRET') INTO v_client_secret;
v_mcp_url := 'https://' || v_tenant || '/api/ai/mcp';
sql_stmt :=
'CREATE API INTEGRATION qlik_mcp_integration'
|| ' API_PROVIDER = external_mcp'
|| ' API_ALLOWED_PREFIXES = (''' || v_mcp_url || ''')'
|| ' API_USER_AUTHENTICATION = ('
|| ' TYPE = OAUTH2'
|| ' OAUTH_CLIENT_ID = ''' || v_client_id || ''''
|| ' OAUTH_CLIENT_SECRET = ''' || v_client_secret || ''''
|| ' OAUTH_TOKEN_ENDPOINT = ''https://' || v_tenant || '/oauth/token'''
|| ' OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_POST'
|| ' OAUTH_AUTHORIZATION_ENDPOINT = ''https://' || v_tenant || '/oauth/authorize'''
|| ' OAUTH_REFRESH_TOKEN_VALIDITY = 86400'
|| ' OAUTH_ALLOWED_SCOPES = (''user_default'', ''mcp:execute'')'
|| ' )'
|| ' ENABLED = TRUE';
EXECUTE IMMEDIATE sql_stmt;
END;
$$;
SHOW API INTEGRATIONS LIKE '%qlik%';
SET DISPLAY = 'Qlik MCP server ' || $TENANT;
DROP EXTERNAL MCP SERVER IF EXISTS qlik_mcp_server;
CREATE EXTERNAL MCP SERVER qlik_mcp_server
WITH DISPLAY_NAME = $DISPLAY
API_INTEGRATION = qlik_mcp_integration;
ALTER EXTERNAL MCP SERVER qlik_mcp_server
SET URL = $MCP_URL;
-- Grant access to the specified role
GRANT USAGE ON INTEGRATION qlik_mcp_integration TO ROLE IDENTIFIER($ALLOWED_ROLE);
GRANT USAGE ON MCP SERVER qlik_mcp_server TO ROLE IDENTIFIER($ALLOWED_ROLE);
-- ============================================================
-- Verification queries
-- ============================================================
SHOW EXTERNAL MCP SERVERS;
DESCRIBE EXTERNAL MCP SERVER qlik_mcp_server;
SHOW API INTEGRATIONS LIKE '%qlik%';
-- Initiate the user OAuth flow
SELECT SYSTEM$START_USER_OAUTH_FLOW('qlik_mcp_integration');
The SYSTEM$START_USER_OAUTH_FLOW call at the end generates a URL you can open in a browser to validate the OAuth handshake with Qlik Cloud before proceeding to Snowflake Intelligence.
Once the MCP server is registered in Snowflake, you can authorize and use it directly from the Snowflake Intelligence UI.
To validate the full integration, create a test Cortex Agent that uses the Qlik MCP server.
Before running: Replace CORTEX_APP.PUBLIC with the database and schema where you want to create the agent in your Snowflake environment. The database must already exist.
-- Replace <YOUR_DATABASE> and <YOUR_SCHEMA> with your target database and schema
CREATE OR REPLACE AGENT <YOUR_DATABASE>.<YOUR_SCHEMA>.qlik_mcp_test_agent
FROM SPECIFICATION $$
models:
orchestration: auto
instructions:
response: >
You are a test agent that verifies connectivity to the Qlik MCP server.
Use the available Qlik tools to answer the user's question.
orchestration: "Use the Qlik MCP tools to answer questions about Qlik Cloud."
mcp_servers:
- server_spec:
name: "<YOUR_DATABASE>.<YOUR_SCHEMA>.QLIK_MCP_SERVER"
$$;
Once created, invoke the agent with a test prompt such as: What Qlik apps are available in my tenant?
A successful response confirms end-to-end connectivity between Snowflake Cortex and the Qlik MCP server.
Typically caused by a Redirect URL mismatch. Verify https://identity.snowflake.com/oauth2/callback is set in the Qlik OAuth client
The scope not enabled on OAuth client. Edit the OAuth client in Qlik Cloud Administration activity center and add the mcp:execute scope
Secret was rotated or lost. Generate a new client secret and update $CLIENT_SECRET in the script
The correct role was not granted. Confirm GRANT USAGE ON MCP SERVER was executed for the user's active role.
The OAuth flow was not completed. Complete the steps in Connect to Qlik MCP in Snowflake Intelligence.
Environment
The information in this article is provided as-is and to be used at your own discretion. Depending on the tools used, customizations, and/or other factors, ongoing support on the solution described may not be provided by Qlik Support.