Qlik Sense API and Qlik License Agreement. Using data got from QS API and QVD. Multiplexing
Collective letter from Qlik Developers
Igor Burobin - Autor of the letter
Ivan Shamaev - blogger and developer in Russian community
First, I would like to say thank you for your work and for the wonderful product that you create. I consider Qlik Sense to be the leader in the segment of true self-service BI platforms. Over the past 10 years, I have provided advice, developed applications and additional components, and helped users of various organizations purchase Qlik products such as QlikView, Qlik Sense, and Qlik NPrinting. The platform is developing, and new opportunities are appearing in it. So-in Qlik Sense, there is a well-documented API for creating an Extension, for working with server objects, for working with visualizations.
With the advent of the API, we have new opportunities and new responsibilities:
There are a lot of programs that use the API to add functionality to Qlik products.
Customers have new opportunities to use the platform. They can use API to extract data from Qlik Sense to database or application.
In the letter, I describe several models that technically allows you to implement Qlik Sense. Here and the hereafter, I will use the words “Qlik Sense” to refer to the installed Qlik Sense on-premises (Windows) platform version of Febrary 2021. I would like you to indicate unequivocally "yes" or "no" to whether the license agreement allows the use of Qlik Sense in accordance with the model. If the license agreement does not allow to organize the work in this way, then please give a link to the regulatory document based on which this conclusion is made. Before writing this letter, we read the QLIK ® USER LICENSE AGREEMENT, but the opinions on how to interpret them differed.
Together with each model, I will give a small list of products that implement it in their functionality. Thus, I hope to understand the use of which products violates the license agreement.
I would like to note that this letter is public, and your answers will probably be published on such resources as community.qlik.com, habr.com, YouTube and other resources. Because your opinion is important not (only) to me but to thousands of Qlik customers.
Model 1. Qlik Sense Engine → Database
Administrator creates a service account in Qlik Sense. He assigned a Professional license to this account. A special windows-application connects to the Qlik Sense Engine Service using this account. The windows-application gets data from one of the Qlik Sense applications and writes data to the database. The database is used by a web application to display data to multiple users. These users do not have any Qlik Sense licenses.
Products that use this technology:
Model 2. Storeinto…TXT
When loading Qlik Sense data, the application saves some tables to CSV format using the STORE INTO …. (TXT) statement. This data is used by another application (for example, a call center with an indefinite number of users, these users do not have any Qlik Sense licenses).
Model3. Storeinto… QVD
I can often find data divided into data-layers in Qlik installations (for example - Extract, Transform, PreCalc, and others). We often use the STORE INTO operator to save data to the QVD format. That is, that although Qlik Sense does not require a data store, the data is stored on the layers as QVD files. Other systems can technically use these files, like the CSV files in the previous model 2 (model 2 Store into …. TXT).
Together with the question “Does such a scheme contradict the license agreement?” I would like to clarify whether the QVD files that the client created are considered part of the Qlik Sense platform?
When working in Qlik Sense user uses an extension, and this extension writes data from Qlik to the database (for example, using an HTTP POST request). The database is part of another system that is used by users who do not have Qlik Sense licenses.
Products that use this technology:
Vizlib Writeback Server (vizlib.com)
Model 5. Qlik Sense Engine → Reporting
Administrator creates a service account in Qlik Sense. He assigned a Professional license to this account. A special windows-application connects to the Qlik Sense Engine Service using this account. The Windows-application receives data from one of the Qlik Sense applications and performs “Report” (for instance – PDF or XLSX report), and then sends report to list of recipients using messengers and e-mail. The recipients may include users who do not have Qlik Sense licenses.
Products that use this technology:
The general question
Does the license agreement violate the automatic acquisition of data by other systems that are used by users who do not have a Qlik Sense license?
This is an interesting analysis, and I admire your efforts, starting from you actually reading the License Agreement.
I have to admit - I am a liar, like most of us. I check the box "I read and agree..." without actually reading the fine print. So, after almost 20 years of working with Qlik tools, I can't say that I read the agreement. However, I think I understand the spirit of the agreement, so let me offer my vastly uneducated opinion.
I believe that the license agreement requires that every user of Qlik engine/server is covered by a valid license. That includes:
- users that access Qlik server directly, via QlikView or Qlik Sense clients.
- users that access the same server via mashups, extensions, APIs etc.
- users that process tasks on the server and extract data in any format.
I believe the license is not required for users that utilize data that was generated by Qlik, if they are not using any Qlik tools to interact with that data. For example:
- reporting extensions such as Mail and Deploy - the processing server that interacts with Qlik, requires a license, however individual report recipients do not.
- a static HTML page that was created with Qlik data can be viewed without a license, as long as it's not interacting with the Qlik server. If it does, then every user is considered a Qlik user and then they need to be licensed.
- extracting CSV files out of Qlik, to be used with another software - I believe that the task of data extraction needs to be licensed, but any use of the CSV files beyond that does not.
Keep in mind, this is my personal understanding of the licensing rules. I'm not a lawyer and I admit that I haven't read the agreement. So anything I say is no more than a personal opinion.
At first will be good to divide the question on two different parts:
Also we are required to prioritize these things to understand what one part mentioned above depend on other.
In this case the licensing part have more priority because it describes the rules to use the Products as they are designed, developed and supported by the intellectual properties owner. Any technical architectures can be realized only if they are conform the licensing terms and rules provided by the intellectual properties owner. This approach is true for Products from any vendors, including Qlik.
Qlik Sense is a full-featured product. It allow realizing many different scenarios to work with data (including but not limited):
load data from different sources;
transform and prepare the data;
build different data models;
extract and calculate data on any levels (for example in load script, in visualization objects, by using the API, etc.)
interactively search, analyze, explore the data (for example by using the visualization objects or by using API)
All functionalities (any functional parts) mentioned above are embedded into the Qlik Sense and inalienable from it. This is equally important for two different parts I mentioned above: licensing and technical. From licensing side this means you have not ability to license/pay for only some parts of the Qlik Sense functionality. Qlik Sense licensing assume any Customer always receives FULL functionality of the Qlik Sense if Customer has the Qlik Sense license. From technical side this approach “ALL IN ONE” gives the Customer any level of flexibility in terms of possibility to build any technical architecture required by the Customer and technically supported by Qlik.
Just to be clear, some vendors prefer to divide their products on parts and sell the functionality by these small parts. Usually this create a mesh in Customer’s expectations and significantly increase long-term TCO (total cost ownership) as result. This is because most of Customers at stage of paying for license (on beginning stage of the project) can’t fully understand full package of functionality they will be required in the future.
To do not create such mess in Customer’s brains and to provide a clear picture of costs on any stage of any project, Qlik use the approach “ALL IN ONE” and provides fully functional Qlik Sense product for clear amount of money.
Based on documents above and current pricelist any Customers are required to conform both requirement for Qlik Sense licensing:
Qlik Sense can be licensed in two ways only (if we speaking on Qlik at the time of March 2021): licensing on Users (licensing “Per User”) and licensing on “Core-Based Site” (means CPU Cores)
You can’t divide the Qlik Sense on functional parts. You are always receive “ALL IN ONE” in terms of Qlik Sense functionality
Sorry, but repeat one more time because this is important: you have choice to pay for “ALL IN ONE” only in terms of Qlik Sense functionality:
By the workload level (by using as match CPU cores as you need)
Or licensing by required number of Users
Of course, somebody can try to manipulate the people brains by using different argue in attempts to define what really “User” is. But docs above has the clear definition what the “User” is and provides even clear definition for two types of Users (Professional and Analyser). For both user types there are clear definitions what they are differs. And you can see the functionality difference between them only in the way they are described in these docs. To be clear, you can’t divide users in terms of licensing by the way they consuming the data (for example “by see the data in visualization objects”, “by using data exported from visualization objects”, “by using data exported from the load script”, etc.). These documents don’t provide such type of definitions. Let me to repeat to be fully clear: you have not any rights to self-define any type of functionality dividing other than provided by the intellectual property’s owner (Qlik in this case).
The docs above for example, also describes one other type of User (“Display Accounts & Public Displays”). But even in this exception case there is clear definition: you are required to use Professional or Analyser license for each such display. And also required to don’t use interactive display for this option. Will not deep dive into this here, you can read these clear definitions by your-self.
That’s all. You have no any other way to define or|and interpret what the “User” is.
Oh, sorry, almost forgot! Another one interesting thing for any who really would like to use any intellectual property as it designed. You are required to read and understand how Qlik define the scenarios/architectures with “multiple end users are able to simultaneously access a single system through a common shared interface”. This is named in docs as “Multiplexing/Shared User Accounts”. To be clear - this term you can find in license agreements of ANY other vendors. You can investigate this by your-self if you like 🙂 Qlik does not provides something new here. Any case you try to embed any system as intermediate between any Qlik Sense functionality (because you not allowed to divide the functionality by your-self) and end-Users (Data Consumers), this case will be interpreted as “Multiplexing”. To be conform to license agreement, you are required to assign User license to each end-User that really consume the Data. That’s ALL regarding licensing.
Almost last part
Remembering all stated above you can easily answer the questions related to different architectures you provided.
Right answer is: any of these architectures can be used by any Customers only if they are correctly licensed. In relation to Qlik Sense this means you license each end-User (Data consumer) if use “Per User” licensing model. Or you can license required number of CPU Cores if use “Core-Based Site” licensing model. This is your freedom of choice only. It does not matter at all - what part of functionality of Qlik Sense and at for what stage of data serving you are use Qlik Sense.
Any Products you mentioned in your letter can be used only in ways conforms the owner’s rules for corresponding Products. So you are required to use corresponding licensing rules for all Products provided by their intellectual properties owners. If you a Customer who made decision to mix any different Products in your technical architecture – it is your responsibility to conform ALL licensing rules for ALL Products you mixed in your solutions. You not allowed to conform only part of licensing rules you like. In relation to intellectual properties Laws in any Countries you are at risk if you are not conform ALL licensing rules for ALL Products you mixed.
To be fully clear. In relation to Qlik Sense and ANY of solutions you described, you have only two different ways for Qlik Licensing (this is your freedom of choice):
License each end-User (Data Consumer of any data or any way served or any stage served through the Qlik Sense)
License required number of CPU Cores used by Qlik Sense to serve required data. This way you may not thinking on number of end-Users
Please assume some terms used in my answer was simplified and shortened to be concentrated only on questions you provided. My answers do not cover all licensing options as result. Please use the official documents I’ve mentioned above to fully understand the Products Usage Rules as they are designed by the Qlik.