Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Search our knowledge base, curated by global Support, for answers ranging from account questions to troubleshooting error messages.
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)
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.
In this article, we detail the 12 steps necessary to successfully configure Qlik Sense Enterprise on Windows after an Active Directory Domain name change or moving Qlik Sense to a new domain.
Depending on how you have configured your platform, not all the steps might be applicable. Before updating any hostname in Qlik Sense, make sure that the original value is using the old domain name. In some case, you may have configured “localhost” or the server name without any reference to the domain so there is no need in these cases to perform any update.
In this scenario we are updating a three-node environment running Qlik Sense February 2021:
The domain has been changed from DOMAIN.local to DOMAIN2.local
The servers mentioned below are already part of the new domain name DOMAIN2.local and their Fully Qualified Domain Name (FQDN) is already updated as followed:
All Qlik Sense services have been stopped on every node.
The first step is to update the postgres.conf file to listen on the correct hostname
Before doing any further changes, it is important to take a backup of your Qlik Sense Platform
Now we update the node names in the database with the new Fully Qualified Domain Name.
UPDATE public."Users"
SET "UserDirectory" = 'DOMAIN2'
WHERE "UserDirectory" = 'DOMAIN';
SELECT * FROM public."Users"
cd "C:\Program Files\Qlik\Sense\NLAppSearch\install"
.\Configure-Service.ps1 QlikServer3.domain2.local 4432 qliksenserepository <qliksenserepository_password>
cd "C:\Program Files\Qlik\Sense\AppDistributionService"
.\Configure-Service.ps1 QlikServer3.domain2.local 4432 qliksenserepository <qliksenserepository_password>
cd "C:\Program Files\Qlik\Sense\HybridDeploymentService"
.\Configure-Service.ps1 QlikServer3.domain2.local 4432 qliksenserepository <qliksenserepository_password>
cd "C:\Program Files\Qlik\Sense\Licenses"
.\Configure-Service.ps1 QlikServer3.domain2.local 4432 qliksenserepository <qliksenserepository_password>
cd "C:\Program Files\Qlik\Sense\NotifierService\install"
.\Configure-Service.ps1 QlikServer3.domain2.local 4432 qliksenserepository <qliksenserepository_password>
cd "C:\Program Files\Qlik\Sense\MobilityRegistrarService\install"
.\Configure-Service.ps1 QlikServer3.domain2.local 4432 qliksenserepository <qliksenserepository_password>
cd "C:\Program Files\Qlik\Sense\PrecedentsService\install"
.\Configure-Service.ps1 QlikServer3.domain2.local 4432 qliksenserepository <qliksenserepository_password>
cd "C:\Program Files\Qlik\Sense\DataPrepService\install"
.\Configure-Service.ps1 QlikServer3.domain2.local 4432 qliksenserepository <qliksenserepository_password>
If you are using the Qlik Logging Service;
cd "C:\Program Files\Qlik\Sense\Logging"
Qlik.Logging.Service.exe validate
cd "C:\Program Files\Qlik\Sense\Logging"
Qlik.Logging.Service.exe update -h QlikServer3.domain2.local
"C:\Program Files\Qlik\Sense\Repository\Repository.exe" -bootstrap -iscentral -restorehostname
If you are syncing your users with a User Directory Connector you will need to change the LDAP path to point to the new domain.
You will need to update the monitoring apps and their associated data connection to use the new Fully Qualified Domain Name
It is possible that you have created rules based on the User Directory. As you have changed the domain name, the user directory has also changed in Qlik Sense so you will need to update those to reflect that.
The information in 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.
Starting the Qlik Web Connector (QWC) fails with the following error:
Windows could not start the Qlik Web Connectors service on Local Computer.
Error 1064: An exception occurred in the service when handling the control request.
The QlikWebConnectorsQVC.exe is already running.
The Windows Event logs (Application log) you will have recorded the following errors:
Service cannot be started. APIConnectorInterfaces.Exceptions.QwcException: MULTIPLE_INSTANCES_NOT_PERMITTED at QlikWebConnectorsService.Service.OnStart(String[] args) at System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state)
This most frequently happens after setting up the Web Connector Service as a Windows service. See Setting up the Qlik Web Connectors to run as a Service.
Content
Qlik Products have generally utilized license keys to enforce license entitlements and use rights. During activation, the licensed entitlement is downloaded to the product in the format of a Licensing Enabler File (LEF). Activation requires internet connectivity to the deployment and is triggered by entering a 16-digit serial number and a corresponding control number. Offline activation is also supported using a manual LEF by copying and pasting a text file into the activation user dialog. Communication is through an http protocol.
Introduced with the February 2019 release[GM1] of Qlik Sense Enterprise, Qlik has developed an alternative process for product activation. There have been several drivers for this change, including a move to an https protocol for a more secure connection between the Customer deployment and Qlik infrastructure. More information follows below.
To allow for Customers to make the decision when to move, Qlik has introduced the use of a Signed License Key to determine which activation method to use. Over time Qlik Licensing Service will replace the current activation process, but for now both methods of activations will work.
As mentioned above, Qlik has added one additional way to activate Qlik products.
JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. This information can be verified and trusted because it is digitally signed. JWT’s can be signed using a secret (with the HMAC algorithm) or a public/private key pair using RSA or ECDSA.
Although JWT’s can be encrypted to also provide secrecy between parties, we will focus on signed tokens. Signed tokens can verify the integrity of the claims contained within it, while encrypted tokens hide those claims from other parties. When tokens are signed using public/private key pairs, the signature also certifies that only the party holding the private key is the one that signed it. That is why we refer to this as the Signed License Key.
With the use of a Signed License Key, there are more Product and deployment offers to use.
All of the above is enabled by the use of the Signed License Key. This made possible as the local deployment will sync entitlement data with all deployment’s using the same Signed License Key through an online database, License Backend, hosted by Qlik within Qlik Cloud.
This is initiated by entering a Signed License Key to the Control Panel. The request is performed by the service Licenses using port 443 (https protocol procedures applies).
Signed license Key
|
Example data |
A Signed License Key based on one of Qlik’s internal keys.
|
eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCIsImtpZCI6ImEzMzdhZDE3LTk1ODctNGNhOS05M2I3LTBi MmI5ZTNlOWI0OCJ9.eyJqdGkiOiI2MjNhYTlhZi05NTBmLTQ3ZjctOGJmMC1mNGQzOWY0MmQ5N mMiLCJsaWNlbnNlIjoiOTk5OTAwMDAwMDAwMTI1MyJ9.YJqTct2ngqLfl2VP3jxW4RsDNK2MTL-BpJ WnBdIfF5gGbJcX0hc__tfIa2ab5ZrL9h6tsZxTwgucTFiRTAOz8PaOQP7JTnhPCyrBZwpnmhvCrSHx2 C-HbCARFUIueBzMg8fgvWH-3HxBuxx6jnDhekDTUbb12vBq7CySampJkgMT7QsDdUkeJy5E7O0U 8yhd1RtEDeuTbeX35eIdQUN4DyJWHHPiT9qZt1AV0_Ofe1iLKxYZMa5jC0kIsVwYnRCJzibZlrLE7mS VlNitxmcm8OoUrR_ZIk8VuOkoz_qqy8N_wwrt7FcT2slWz50XzuL8TIWY9mcGIL |
Assignment information (what user has what type of access assigned) is synchronized from the license service to license.qlikcloud.com every 10 minutes.
Changes to a license (such as adding additional analyzer capacity) can take up to 24 hours to be retrieved.
Data Element | Comment | Example Data |
Signed License Key | See above | |
Cause | Initial or Update | “Initial” |
User agent | build by the License service version (operating system) and Product (e.g. QSEfW, QCS, QSEfE, QV) | Licenses/1.6.4 (windows) QSEfW |
Data Element | Comment | Sample Data |
License definition | content variable based on product and entitlement | "name": "analyzer_time", "usage": {"class": "time", "minimum": 5}, "provisions": [{ "accessType":"analyzer"} ],"units": [{"count": 200, "valid": "2018-06-01/2018-12-31"}]}, "name": "professional", "usage": { "class": "assigned", "minimum": 1 }, "provisions": [{ "accessType": "professional" }],"units": [{ "count": 10, "valid": "" }]} |
(Time schedule is not disclosed and includes grace time to support outages in the internet connection, a/k/a Optimistic Delegation.)
Data Element | Comment | Sample Data |
Signed License Key |
See above | |
Array Element id | Used for internal match only | 1 |
Allotment name | alternatives are Analyzer_Time, Core_Time | “analyzer_time” |
Year/Month | YYYY-MM | 2018-11 |
Consumption | for this deployment since last sync | 242 |
Source | hashed ID to make each deployment unique, e.g. a Qlik Sense Enterprise on Windows and a Qlik Sense Enterprise on Kubernetes will have different Source ID's | fbe89d02-6d24-4595-915e-c52ce76f2195 |
User agent | same construct as for as activation request | Licenses/1.6.4 (windows) QSEfW |
Data Element | Comment | Sample Data |
Total consumption | Used by the Product for enforcement. Deny access will be executed if quota has been exceeded. Quota is set in the LEF. Additional quota for the month could be managed as Overage in the LEF. This would contain an Overage Value (COUNT) or the value YES. Total quota for the month is calculated as licensed quota + Overage quota. If the LEF contains the value YES, there will be no cap on the capacity for the Year/Month. |
12345 |
Data Element | Comment | Sample Data |
Signed License Key | See above | |
Allotment name | Professional / Analyzer | “professional” |
Subject | Domain / User ID; if this an add or delete transaction. By delete the subject will be removed immediately. An internal id will be used to secure sync to other deployments using the same Signed License Key. The internal id will disappear within 60 days after a delete transaction. (This information is stored for all assigned users until such a time that the assignment is deleted at which point it is deleted. The information is used for synchronizing assignments across deployments in order to facilitate the single-license-multi-deployment scenario. It is encrypted in transit and at rest.) |
“acme\bob”
(For information on how data is submitted and stored in the audit logs see here) |
User agent | Build by the License service version (operating system) and Product (e.g. QSEfW, QCS, QSEfE, QV) | Licenses/1.6.4 (windows) QSEfW |
Source | Hashed ID to make each deployment unique, e.g. a Qlik Sense Enterprise on Windows and a Qlik Sense Enterprise on Kubernetes will have different Source ID's | fbe89d02-6d24-4595-915e-c52ce76f2195 |
Sync metadata | Versioning information about the subjects and list of subjects to manage the synchronization process | { "source": "my assignments", "bases": [{ "license": "1234 1234 1234 1234", "version": 0 }], "patches": [{ "instance": "", "version": 0, "license": "1234 1234 1234 1234", "allotment": "analyzer", "subject": \\generated4, "created": "2019-04-18T10:01:35.024031Z" } |
Data Element | Comment | Sample Data |
Signed License Key | See above | |
Subject | Including subjects changed by other deployments | “acme\bob” |
Sync metadata | Versioning information about the subjects and list of subjects to manage the synchronization process | { "bases": [{ "license": "1234 1234 1234 1234", "version": 17 }], "patches": [{ "instance": "5382018630938057025", "version": 14, "license": "1234 1234 1234 1234", "allotment": "analyzer", "subject": ACME\\bob", "created": "2019-04-18T10:01:35.024Z", "rejection": "" }] |
This Reference Guide is intended solely for general informational purposes and its contents do not form part of the product documentation. The information in this guide is subject to change without notice. ALL INFORMATION IN THIS GUIDE IS BELIEVED TO BE ACCURATE BUT IS PRESENTED WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. Qlik makes no commitment to deliver any future functionality and purchasing decisions should not be based upon any future expectation.
QlikSenseServiceHelper.exe is a temporary service used by Qlik Sense during installation, upgrade, or uninstallation processes.
Its primary function is to assist in removing already existing Qlik Sense services if they cannot be uninstalled automatically. This service is designed to run only as needed and is intended to be removed automatically once its task is complete. If QlikSenseServiceHelper.exe persists after the installation or upgrade process, it indicates that it was not successfully removed, and a server restart may be required to clean up the service.
If this service is flagged as a security concern during scans, it is generally safe to ignore it, given its role in the Qlik Sense upgrade process. However, it is essential to verify that the service is from a legitimate source and not indicative of other security issues.
This article provides a comprehensive guide to efficiently install the PostgreSQL ODBC client on Linux for a PostgreSQL target endpoint.
If the PostgreSQL serves as Replicate source endpoint, please check: How to Install PostgreSQL ODBC client on Linux for PostgreSQL Source Endpoint
rpm -ivh postgresql13-libs-13.2-1PGDG.rhel8.x86_64.rpm
rpm -ivh postgresql13-odbc-13.02.0000-1PGDG.rhel8.x86_64.rpm
rpm -ivh postgresql13-13.2-1PGDG.rhel8.x86_64.rpm
export LD_LIBRARY_PATH=/usr/pgsql-13/lib:$LD_LIBRARY_PATH
rpm -ivh unixODBC-2.3.7-1.el8.x86_64.rpm
[PostgreSQL]
Description = ODBC for PostgreSQL
Driver = /usr/lib/psqlodbcw.so
Setup = /usr/lib/libodbcpsqlS.so
Driver64 = /usr/pgsql-13/lib/psqlodbcw.so
Setup64 = /usr/lib64/libodbcpsqlS.so
FileUsage = 1
[pg15]
Driver = /usr/pgsql-13/lib/psqlodbcw.so
Database = targetdb
Servername = <targetDBHostName or IP Address>
Port = 5432
UserName = <PG User Name>
Password = <PG user's Password>
App reloads in SaaS edition of Qlik Sense fail with the below error message.
Data has not been loaded. Please correct the error and try loading again. The following error occurred: The memory limit for the request was reached
There are three main directions on mitigating high memory allocation problems;
The Qlik Sense Engine in SaaS is configured to have a sandbox limit for reloads so that they do not expand infinitely and bring down the Engine running the reload. Based on subscription detail there is a limit for each app file, but during reload, additional memory is typically required to process calculation before the app's data model has been updated.
During a reload the Engine will periodically measure allocated memory. If the allocated memory reached the reload limit the reload will fail with a memory exceeded error.
App type | Support App Size (in-memory) | Peak Memory During Scheduled Reload | Peak Memory During Manual Reload |
Standard apps | Up to 5 GB | Up to 15 GB | Up to 10 GB |
Large app support | Up to 50 GB | Limited by the available memory in the dedicated Engine | Limited by the available memory in the dedicated Engine |
Large App support
Qlik Engine: Hypercube Memory Limit
QB-5268
When installing Qlik Replicate v2023.5 on RHEL/CentOS v8.x, you may encounter a warning message from rpm as follows:
warning: areplicate-2023.5.0-213.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 05d7eace: NOKEY
This warning message indicates that rpm is unable to verify the package signature due to the absence of the public key.
Please perform the following commands before trying to install the RPM package:
$ rpm -q gpg-pubkey --qf '%{version}-%{release} %{summary}\n' | sed '/qlik.com/!d;s/ .*$//' | xargs -n 1 -I {} sudo rpm -e gpg-pubkey-{}
$ curl https://qlikcloud.com/.well-known/qlik-codesign-public-keys.asc > qlik-codesign-public-keys.asc
$ sudo rpm --import qlik-codesign-public-keys.asc
$ rpm --checksig <qlik-rpm-package>
Where the commands do the following:
Here is an example of an RPM package that passed the authenticity check:
$ rpm --checksig areplicate-2023.5.0-152.x86_64.rpm
areplicate-2023.5.0-152.x86_64.rpm: digests SIGNATURES OK
An example of failed check is:
$ rpm --checksig areplicate-2023.5.0-152.x86_64.rpm
areplicate-2023.5.0-152.x86_64.rpm: digests SIGNATURES NOT OK
Then proceed with the installation or upgrade as per the instructions in the user guide.
Qlik Replicate v2023.5, v2023.11 or after on Linux 8.x (64-bit)
This document is a general guide and is provided as is. Modifications to the process may be necessary depending on your individual database setup.
If you have installed a standalone PostgreSQL database, or if you have used the Qlik PostgreSQL Installer (QPI) to upgrade and decouple your previously bundled database, then you can upgrade PostgreSQL at any time. This means you control maintenance and can immediately react to potential PostgreSQL security concerns by upgrading to a later service release or a later major version.
Content
This document covers the following scenario:
Run a complete backup of Qlik Sense Enterprise on Windows site as described in Backup and restore Qlik Sense Enterprise on Windows.
These steps apply if you are upgrading within a major PostgreSQL release (example: 14.5 to 14.8).
No further steps are required.
If you are moving to a higher major version, an in-place upgrade will not be possible. Instead, we will install the the new version in parallel, then then migrate the old database and eventually uninstall the old version. Our example is written using PostgreSQL 12 to 14.
Upgrading and unbundling the Qlik Sense Repository Database using the Qlik PostgreSQL Installer
How to manually upgrade the bundled Qlik Sense PostgreSQL version to 12.5 version
Changing the Database Superuser Password without Qlik Sense Installed
CICD build Job fails with the below message:
Failed to execute goal on project: Could not resolve dependencies for project
Solution 1
Solution 2
Qlik Talend Data Integration: CICD build fails and shows an error in the Maven log
This article provides a guide on installing Qlik Replicate on a docker image.
sudo rpm -qa|grep dockersudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-laster-logrotate docker-logrotate docker-engine
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install --allowerasing docker-ce docker-ce-cli containerd.io sudo systemctl start docker sudo systemctl enable docker
/kit
" The /kit directory is a temporary folder used to store installation files. In the example below, the RPM file is areplicate-2024.5.0-357.x86_64.rpm
. Once the installation is complete, the entire /kit folder can be safely deleted.mkdir -p /kit/ar_docker
cd /kit
rpm2cpio areplicate-2024.5.0-357.x86_64.rpm | cpio -iv --make-directories --no-absolute-filenames -D ar_docker/ ./opt/attunity/replicate/addons/samples/docker/*
mv ./ar_docker/opt/attunity/replicate/addons/samples/docker/* ./ar_docker
rm -rf ./ar_docker/opt
cd /kit/ar_docker
cp ../areplicate-2024.5.0-357.x86_64.rpm .
./create-dockerfile.sh
/kit/ar_docker/Dockerfile
, from:
RUN yum -y install /tmp/areplicate-*.rpmto
RUN systemd=no yum -y install /tmp/areplicate-*.rpm
NOTE!
The parameter systemd=no is used to solve the below error you may hit during the docker build stage: This rpm is not supported on your system (no systemctl), exiting. error: %prein(areplicate-2024.5.0-357.x86_64) scriptlet failed, exit status 43
NOTE!
The password should not be empty and must be strong enough.
WARNING!
If you want to install ODBC Drivers, please make the corresponding ODBC Drivers rpm files are ready in this folder. If you want to skip the ODBC Drivers installation at present, rename or delete the file "drivers" in this folder.
docker build --no-cache -t johnw/replicate:2024.5 .where
/johnw/replicate:2024.5
is the image tag.Do not forget the last period "."
docker run -d --name ar --hostname cdc2 -e ReplicateRestPort=3552 -p 3552:3552 -v /dockermount/data/replicate/data:/replicate/data johnw/replicate:2024.5
Now Qlik Replicate is running in the docker and can be accessed from Qlik Replicate Console GUI.
By default, QlikView Publisher sets the number of "Max number of QlikView engines to use for distribution" to 4. This value determines how many QlikView Publisher tasks can be run in parallel and can be freely adjusted to suit any environment. Sometimes you see the error/warning Failed to allocate engine before you hit the limit you have set.
A more detailed best practice guide is available in Scaling the QlikView Publisher.
The image below depicts where to increase the number of engines for distribution or administration. (default 4 and 20 respectively)
When determining how many Reload Engines to allow per QlikView Publisher, there are a number of factors to take into consideration.
The first and fundamental factor that affects how many Reloads that can safely take place simultaneously, is that the Reload Engine, the QVB.exe process, is a fully MultiThreaded process. This means that a single executing task using a Reload Engine WILL try to use as much resources from the hardware as it can, without limit. The limiting factors are only Script Efficiency and Data transfer rates. A reload script that does lots of data aggregation at script level will have a big impact on the CPU utilization for that Reload Task for example. Tasks that run in parallel on a server will compete for the same pool of resources containing CPU cycles and RAM.
With this basic fundamental factor in mind, we can start discussing the possible settings
The first consideration is that you should never allow for more Engines than the Server has CPU cores -1. So for a Server with 8 CPU cores, we should never sat a value higher than 7.
Note also, that the QlikView Distribution Service has been equipped with a load protection mechanism since the 12.10 release. See Tasks are not executed as expected and are shown in status Queued for details.
The second consideration is that even on big servers with lots of CPU cores (16+) it rarely pays to go higher than approximately 13 simultaneous reload engines allowed. This is partly due to the first fundamental factor (every running task will try to consume all the resources) and partly due to other bottlenecks, where for example multiple data connections using the same drive will start becoming slower as the concurrent connections goes up. Going for a high number also normally increases the failure rate significantly. Qlik recommends starting with a low number and then increasing gradually until you hit the sweet-spot for your own environment, where you are getting a high throughput without introducing a high failure rate. If your reload schedule calls for a high number of simultaneous tasks to execute, you will be better off clustering the Publisher role over more servers than increasing the number of engines on a single node.
A third consideration is Windows settings that affect the number of concurrent processes of the same kind. If you enable a high number of reload engines and start seeing windows errors related to Windows running out of Desktop Heap Size. This may be visible in the Windows System Event log of the server running Qlikview Distribution Service, with errors saying "Desktop Heap exhausted". If so, you will need to adjust Windows Desktop Heap Size to allow for a higher server load. Allowing for a bigger Desktop Heap may also allow a highly loaded server to run for longer periods of time without the need for server restarts.
Messages like this,
Failed to create QlikView Engine.. Exception=System.Runtime.InteropServices.COMException (0x80080005)
Shows that there is an issue with desktop heap size.
IMPORTANT: Windows registry changes are made at your own risk and are not supported by Qlik Support. Please make a backup of the Windows registry before applying changes to enable rollback if the setting change fails or introduces Windows instability.
Desktop Memory Heap size is control in the following Windows registry key on the server running Qlikview Distribution Service:
Change the desktop heap setting by setting the SharedSection value to 1024,20480,2048. After change the registry key should look something like the following (all on one line):
%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,20480,2048 ...
Notice that the default value is 1024,3072,512 in x86 or 1024,20480,768 in x64 environments.
Also, please note that the skipped part (marked as "..." ) might differ according to the operating system version and should not be modified.
Depending on size of deployment and complexity of tasks/scripts you might need to increase the Non-interactive Desktop Heap even further, the following list gives the next possible setting for the value.
%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,20480,4096 ...
OR
%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,20480,6144 ...
OR
%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,20480,8192 ...
Microsoft reference regarding Windows heap and Server 2012: https://support.microsoft.com/en-us/kb/947246
A more detailed best practice guide is available in Scaling the QlikView Publisher.
The option Apply Exceptions (b) is not enabled in the Control Tables (a) menu. This setting is typically enabled by default:
Further troubleshooting reveals the option Apply batched changes to multiple tables concurrently (b) has been enabled in the Change Processing Tuning (a) options:
This setting affects the option to set a Global Error Handling policy, disabling it, and resets task-specific error handling options to their default settings.
This caused the Apply Exceptions check box to be unticked.
Disable Apply batched changes to multiple tables concurrently and enable the Apply Exceptions table.
Qlik Replicate
Snowflake on Azure
When working with the IBM DB2 for z/OS source endpoint, the trailing spaces are trimmed in CHAR datatype columns, especially when the Log Stream is involved in the tasks. The complete replication is from DB2z to Log Stream, then from Log Stream to S3 target endpoint.
To address this issue, add the internal parameter keepCharTrailingSpaces and set its value to TRUE.
This step has to be taken on these task endpoints:
1: Log Streaming task (parent task)
2: Replication task (child task)
Steps:
#00146985
Data values in Qlik Sense are stored as dual values, which means that they have an underlying numerical value and a textual presentation value. This is important to understand before (re)formatting values.
Num(number, format) format function can be used to load a numeric value, number, and store it as a dual value where the presentation is stored according to the format.
For example, Num(1050.75, ‘#,##0.0’) will be stored as numeric value 1050.75 with the presentation rounded to one decimal value as 1,050.8.
The general numeric precision in Qlik Sense is 14 digits. By using a format string with 14 # characters, the engine will interpret the number as a generic 14-digit value.
For example, Num(1050.75, ‘##############’) will be stored as numeric value 1050.75 with the presentation sustained as the input value 1050.75.
The num #(text, format) function allows reverse formatting, where a text is parsed according to the format string as a numeric value. The text value becomes the presentation value and the interpreted numeric value is stored as the underlying value.
In Qlik Cloud, the reporting service requests the visualization data from the Qlik Engine. In this data set, each column has one format stored by the engine, which is used by the reporting service to format columns in the exported Excel sheet.
Columns with mixed formats (numbers and text) will be treated as undefined, and can be expected as text in the exported Excel.
Columns with mixed numeric formats will be exported in a uniform format. Columns formatted with ############## are interpreted as generic numeric values by the reporting service. The output format in Excel in this case becomes General.
There are two ways to apply the generic format to mixed numeric fields or chart columns:
There is naturally a maintenance benefit in controlling formats as much as possible in the script so that object-level formatting can be avoided to the most possible extent.
For data processed through the QVD layer, it may be a further optimization to format the data closer to the source to benefit from the preformatted data as it is ingested through an ETL flow.
You can apply styling to customize the app based on your company standards. These styles are managed through custom themes.
To create your own custom theme, you’ll need to compile a compressed zip folder with three key components:
See Themes overview.
Once you’ve created the theme, you can upload it to your Qlik Cloud Management Console.
If you utilize the aws-java-sdk to customize utility classes under Repository-->Code -> Routines and use this customized class within the components such as tJava / tJavaRow etc, please be aware that the aws-java-sdk is an all-in-one JAR. You might overlook the significance of SDK modularity and opt for an all-in-one JAR, potentially leading to the adverse effects detailed in the article.
1. Increased Application Size:
The all-in-one JAR bundles all AWS service SDKs together, significantly increasing the size of your application. This results in larger deployment artifacts, slower download times, and increased storage consumption, due to the increased size of the Job design (aws-java-sdk.jar: 100-400MB), thereby intensifying the network transfer burden for deployment.
2.Higher Memory Usage:
During application startup, loading the all-in-one JAR into memory demands additional memory, as all AWS service classes are loaded, including those not in use. This can result in increased memory consumption and footprint, and may lead to out-of-memory errors in resource-constrained environments.
3.Reduced Modularity and Flexibility:
Using the all-in-one JAR reduces the modularity of your application. It limits your ability to customize or optimize the inclusion of specific AWS services, leading to a less flexible and maintainable codebase.
Instead of including the entire aws-java-sdk JAR, opt for individual service modules. Include only the specific AWS SDK modules your application needs. For instance, if your application interacts only with S3 and DynamoDB, include only aws-java-sdk-s3 and aws-java-sdk-dynamodb dependencies.
This approach helps minimize the application size, reduces memory footprint, and enhances overall performance by loading only the necessary classes at runtime.
Qlik Sense Enterprise on Windows creates a subfolder on app import from the Qlik Sense Management Console. The folder uses the hostname of the server machine and will include a subdirectory named after the user carrying out the import.
The folder is emptied after the import has been completed. Unless the imported app is large and requires a long time to process, users will not see the temporary file being created.
In this example, we imported a 2 GB large file:
This article provides step-by-step instructions for implementing Azure AD as an identify provider for Qlik Cloud. We cover configuring an App registration in Azure AD and configuring group support using MS Graph permissions.
It guides the reader through adding the necessary application configuration in Azure AD and Qlik Sense Enterprise SaaS identity provider configuration so that Qlik Sense Enterprise SaaS users may log into a tenant using their Azure AD credentials.
Content:
Throughout this tutorial, some words will be used interchangeably.
The tenant hostname required in this context is the original hostname provided to the Qlik Enterprise SaaS tenant.
Copy the "value of the client secret" and paste it somewhere safe.After saving the configuration the value will become hidden and unavailable.
In the OpenID permissions section, check email, openid, and profile. In the Users section, check user.read.
Failing to grant consent to GroupMember.Read.All may result in errors authenticating to Qlik using Azure AD. Make sure to complete this step before moving on.
In this example, I had to change the email claim to upn to obtain the user's email address from Azure AD. Your results may vary.
While not hard, configuring Azure AD to work with Qlik Sense Enterprise SaaS is not trivial. Most of the legwork to make this authentication scheme work is on the Azure side. However, it's important to note that without making some small tweaks to the IdP configuration in Qlik Sense you may receive a failure or two during the validation process.
For many of you, adding Azure AD means you potentially have a bunch of clean up you need to do to remove legacy groups. Unfortunately, there is no way to do this in the UI but there is an API endpoint for deleting groups. See Deleting guid group values from Qlik Sense Enterprise SaaS for a guide on how to delete groups from a Qlik Sense Enterprise SaaS tenant.
Qlik Cloud: Configure Azure Active Directory as an IdP
Users are not able to see their alerts after upgrading Qlik Alerting. Alerts are visible only to the Qlik Alerting Admin.
This issue can be diagnosed by reviewing the Qlik Alerting logs (How to collect the Qlik Alerting log files).
ERROR Wrong password for user QVSERVICE.
ERROR Access denied
ERROR User qvservice@domain.local not found.
ERROR Wrong password for user User qvservice@domain.local.
ERROR History not found
To resolve this issue, follow these steps to restore the Qlik Alerting database:
Reference articles:
During the upgrade, Qlik Alerting was unable to locate the admin account, resulting in the need for the admin to reset the password. Consequently, all user accounts were affected, leading to the removal of user passwords. As a result, each user will need to recover their password using the "Forgot Password" link.
QB-28235
This article provides an example of how to retrieve user attributes from Excel.
For more information on the Qlik Sense User Directory Connector and its options for reading user attributes from different sources, see User directory connectors.
Synchronizing user data and attributes does not carry out authentication. It is intended to enable the use of additional attributes which may not otherwise be synchronized or to pre-emtively distribute licenses. Authentication must be handled by your choice of identity provider. In the Excel example, this would typically be Windows.
Each data source has a different configuration and the following example (Excel) of adding an ODBC user directory connector.
Do the following:
Verify that the Microsoft Excel Driver is installed.
Set up an ODBC source on the server.
You need to store the data in two separate sheets in the same excel file, for example, for example you can place it in this location: %ProgramData%\Qlik\Sense\temp.
The temp folder is not included in the default installation. You need to create the temp folder, if not already done by another QMC administrator.
SheetA contains the users and SheetB the user attributes.
Example:
SheetA
userid | name |
1 |
John |
2 |
Bill |
3 |
Tom |
SheetB
userid | type | value |
1 | jd@email.com | |
1 | lastname | Doe |
2 | bg@email.com | |
2 | lastname | Gates |
3 | th@email.com | |
3 | lastname | Hanks |
Select User directory connectors on the QMC start page or from the Start drop-down menu to display the overview. Create a new user directory connector (ODBC) and edit the properties.
Identification
All fields are mandatory and must not be empty.
Property DescriptionName | The name of the UDC configuration, defined from the QMC. |
Type |
The UDC type. |
User sync settings
Property Description Default valueSync user data for existing users |
|
Selected |
Connection
Property Description Default valueUser directory name |
The name of the user directory. Must be unique, otherwise the connector will not be configured. The name must not contain spaces. |
- |
Users table name | The name of the table containing the users. Include the file extension in the table name, for example: [SheetA$]. | - |
Attributes table name | The name of the table containing the user attributes. Include the file extension in the table name, for example: [SheetB$]. | - |
Visible connection string |
The visible part of the connection string that is used to connect to the data source. |
- |
Encrypted connection string |
The encrypted part of the connection string that is used to connect to the data source. Typically, this string contains user name and password. The two connection strings are concatenated into a single connection string when making the connection to the database. |
- |
Synchronization timeout (seconds) | The timeout for reading data from the data source. | 240 |
Example:
User table name: [SheetA$]
Attributes table name: [SheetB$]
Visible connections string: Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};Dbq=%ProgramData%\Qlik\Sense\temp
Click Apply to apply your changes.
Go to the User directory connectors overview and check if the user directory is displayed as Configured and Operational.
If the User directory name is not unique the connector will not be configured. If not operational, check the repository system log in: %ProgramData%\Qlik\Sense\Log\Repository\Trace.You have added an ODBC data source and initial synchronization will be performed within five minutes (by default).