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.
This article gives an overview of the available blocks in the Github connector in Qlik Application Automation. It will also go over some basic examples of retrieving file/blob contents from your repos as well as other functionalities within a GitHub account.
As with most connectors provided for automations the authentication for this connector is based on the oAuth2 Protocol, so when connecting to it you provide the user name and password of the account directly to the Github platform to request access so it is done in the most secure manner there is.
Let's now go over a few basic examples of how to use the Github connector:
How to list owned repositories and check their contents from your Github account:
Now the "list my repositories" block offers a couple of filtering options depending what result you want (all repos or just the private or public ones and if you want the result to come in sorted by some rule) but they are mostly optional. Not filling them in will return by default all repositories.
As for the "List repository contents" block you will need to fill in the username you use for your github account as well as the repository name which can be filled in with the results gotten from the first block. You can leave the path parameter empty to get the contents from the root folder or you can specify a path and the contents of that path will be returned.
As stated, if you expect to retrieve only one record, the use of "get repository content" block is more better suited. Also, you might want to switch this "List repository contents" block On Error status to either warning or ignore since Github API platform returns a 404 error if one of the queried repositories is empty.
Now if you are planning to use the "Get repository content" block another warning should be mentioned and that this block only works for files or blobs up to a maximum of 1 MB in size, as per Githubs platform limitations. The response of this block should look like:
As you can see we have a couple of information stubs of that file, but most importantly from here is the SHA property, which is needed if you are planning to later on use the "Create or update file contents" block, required input parameter for the update of a file/blob.
Now if you're planning on updating files that are bigger than 1MB and you require the SHA of that file, we suggest using the list repository contents block and search for the required file and SHA in that result.
As for other functionalities of the Github connector we support also getting and listing commits or issues present in a repository, listing of users and many other requests but, if you are in need of a request that isn't present, we also offer the functionality to create your own requests to the Github API by making use of the RAW API blocks. These API blocks and their uses are explained in a separate article.
You can find attached to this article a simple JSON example which you can upload to your workspace, if you want to see a quick example of how to use version control to back up your QCS apps I suggest visiting the related article.
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.
How to: Qlik Application Automation for backing up and versioning Qlik Cloud apps on Github
This article covers the usage of the Qlik Application Automation cloud storage blocks and gives design flow examples which apply them. You can also download an example JSON using Google Cloud Storage, and we have compiled a list of links for more in-depth platform connections and atypical usages.
Content
Selecting Cloud storage when creating your automation will present you with the following list:
Here is an example of how to verify if a file exists prior to creating a new one. This is specifically important when you set up an automation meant to save your result in a target file that might or might not be at the location suggested. Since you cannot create a new file if a previous one exists, you will need to apply the following to your automation:
You can verify if the file exists initially, and, based on the response from that block, either simply create a new file or delete the old file and create a new one to write data to.
And last but not least, this is a list of supported platforms for the native blocks as well as links to how to connect to them as well as more quirky details they have.
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.
After an upgrade of Qlik Sense, the following errors may be observed.
Accessing the Data Load Editor to review data connections fails with:
Unknown Error
On the Hub, Creating a new app fails with:
An error occurred.
The app could not be created. Please try again.
The Qlik Sense logs (How To Collect Log Files From Qlik Sense Enterprise on Windows) report:
API call to Engine service was not successful: Failed to get app 'StaticByteSize'
Error in EntityChanged event handler Exception of type 'System.Exception' was thrown
Failed setting secure crypto protocols with error code
A combination of these errors is typically caused by wrongly configured or mismatched TLS protocols or ciphers or IPv6 settings still present in the Qlik Sense settings file which should have been overwritten during an upgrade.
Any configuration steps in the below solutions must be performed on all nodes.
Verify that the best practices for TLS and SSL support in Qlik Sense are followed and that the same set of TLS versions and cipher suites are used consistently across all components of the environment, especially in a multi-node setup.
For reference:
Review the Qlik Sense Engine Settings.ini file (C:\ProgramData\Qlik\Sense\Engine\Settings.ini) and remove the line: EnableIPv6Support=0
Follow the instructions in Data connections in Qlik Sense not visible in Data Load Editor or ErrorCode 11041 / 11043 and An error occurred / Failed to load connection error message in Qlik Sense.
See The app could not be created. Please try again - Qlik Sense.
Reloads fail with error:
A reload fails with:
Requested endpoint could not be provisioned due to failure to acquire a load slot: Your version of Direct Access gateway is no longer supported. Go to 'Data gateways' in the Management Console to download the latest version (DirectAccess-0001)
Upgrade Qlik Data Gateway - Direct Access to a supported version.
If you are already on a supported version of Qlik Data Gateway, rerun the reload. Likely, the services were still initializing when the issue occurred.
This message can occur when the Qlik Data Gateway version is not supported
Or it could also be caused if the services are starting when the request is sent, causing the version being misreported. This is usually an isolated issue with very few reload failures.
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
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.
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
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.