This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Documentation

1 - Overview

What’s Ctrl-Q and how can I use it?

What is Ctrl-Q?

The focus of Ctrl-Q is on slightly more complex use cases that are not handled out of the box by other tools such as Qlik’s official Qlik CLI tool or Adam Haydon’s Qlik CLI Windows tool.

Both are exceptional tools and extremely useful, but especially when it comes to interactions with the Qlik Sense engine they fall a bit short.

Ctrl-Q also tries to fill niches that are not covered by the various members of the Butler family of open source SenseOps tools.

The Butler tools each focus on a specific feature (or features in the case of the original Butler tool) and goes fairly deep in those areas.
For example, Butler SOS focus on getting real-time metrics and events out of Sense and into a wide range of target databases and monitoring tools.
Butler Sheet Icons creates sheet thumbnails for Sense apps - but offers lots of flexibility and power around that use case.

What can Ctrl-Q do for me?

Ctrl-Q focus on specific, high-value uses cases that tend to be very time consuming and/or error prone to do manually.

The list of features include:

  • Get all current sessions, including user ID, virtual proxy, load balanced servers and more.
  • Delete all or some sessions for a given virtual proxy / proxy service.
  • Get complete definition of all reload tasks and external program tasks as tree view, network graph, tabular view or JSON. Show on screen or save to disk file.
  • Bulk import of reload and external program tasks from disk files. Optionally also import QVF files.
  • Build task chains using newly imported and/or existing tasks.
  • All options available in the QMC (and then some!) can be defined.
  • Bulk import of QVF files into Sense apps, including (re-)publishing of the apps.
  • Update custom properties for multiple tasks.
  • Import master dimensions and master measures from definitions in Excel file, including per dimension/measure colors.
  • Show complete definitions for all master measures in a Sense app.
  • Delete master measures from a Sense app.
  • Show complete definitions for all master dimensions in a Sense app.
  • Delete variables in one or more apps.
  • List complete defintions for all variables in one or more apps.
  • Delete master dimensions from a Sense app.
  • Show complete definition of all bookmarks in a Sense app.
  • Scramble fields in Sense apps.
  • Get load script from Sense app.

As Ctrl-Q is completely command line driven it is very suitable to be used in CI/CD pipelines, with time savings, increased reusability and higher app quality as a result.

Maybe Qlik’s CLI tool will evolve to include more of these use cases and engine-focused features too - great if so.
Until then Ctrl-Q can hopefully make life a bit easier for Sense developers and admins out there.

Where can I find out more?

There are several blog posts on ptarmiganlabs.com where various Ctrl-Q features are examined in detail.
Everything from short overviews of new features to very thorough, step-by-step instructions for how to use Ctrl-Q to solve some challenging Qlik Sense related task.

Where should I go next?

2 - Getting Started

Getting started with Ctrl-Q

Download and install

There is no need to install Ctrl-Q. Just download and run.
The GitHub release page has ready-to-run binaries for Windows, macOS and Linux.

The macOS binary is security scanned and signed by Apple, using their standard notarization process. This means you won’t get those annoying unsigned-app-warnings when using the app on macOS.

The Windows binary is signed by an official/commercial app signing certificate that can be verified when needed.

Logging

Logging is controlled by the –log-level option.

Valid values are (in order of increasing verbosity): error, warn, info, verbose, debug, silly.

Note: When using log level silly all websocket communication to/from the Sense server will be logged to the console. This means lots of log output.

2.1 - Security

Security information for Ctrl-Q.

Ctrl-Q is open source and you have access to all source code.

It is your responsibility to determine if Ctrl-Q is suitable for your use case.
The creators of Ctrl-Q, including Ptarmigan Labs, GΓΆran Sander or any other contributor, can and must never be held liable to past or future security issues of Ctrl-Q. If you have security concerns or ideas around Ctrl-Q, please get involved in the project and contribute to making it better!

If you discover a serious bug with Ctrl-Q that may pose a security problem, please disclose it
confidentially to security@ptarmiganlabs.com first, so it can be assessed and hopefully fixed
prior to being exploited.

Please do not raise GitHub issues for serious security-related doubts or problems.

Virus scanning

Every time a Ctrl-Q release is done the created binaries are sent to VirusTotal for scanning.
VirusTotal acts as an aggregated virus scanner that sends the Ctrl-Q binaries to dozens of anti-virus scanners, including many of the major/most widely used ones.

Links to the VirusTotal scan report are included in each release notes, making it easy to check the status of each binary:

VirusTotal scans as part of Ctrl-Q release notes

A VirusTotal scan that reports “no risks found” can look like this:

VirusTotal scans with no risks found

Positive scan vs false positives

If one or more of the security vendors used by VirusTotal reports an issue you have to make a decision.
Is it a real issue or a false positive?

You have to decide this yourself, but some general lines of thought can be:

Is it a single vendor that reports the Ctrl-Q binary file to be a risk, or several vendors?
If one vendor reports an issue and 60+ vendors don't, you might be looking at a false positive.

But again - at the end of the day it’s you that must make that decision.

A scan where a single security vendor reports an issue can look like this:

VirusTotal scans with one issue found

Signed binaries

The macOS executable binary is signed and notarized by Apple’s standard process.
A warning may still be shown first time the app is started. This is expected and normal.

The Windows executable binary is signed by “Ptarmigan Labs AB”.

2.2 - Authentication with Sense

Authentication with client-managed Qlik Sense Enterprise can be done in two ways: certificates and JWTs.

Certificates

If the --auth-type option is set to cert, Ctrl-Q will authenticate with Qlik Sense Enterprise using certificates.
This is the default authentication method that will be used if no --auth-type option is specified.

These certificates are exported from the QMC and stored on disk in PEM format.

Three certificate files are needed (and exported from the QMC):

  1. The client certificate, which is used to authenticate with the Sense engine.
  2. The client key, which is used to authenticate with the Sense engine.
  3. The root certificate, which is needed to verify the Sense server’s certificate (as Qlik Sense uses a self-signed certificate).

Ctrl-Q can reference these certificates in two ways:

  1. if one or more of the --auth-cert-file, auth-cert-key-file and --auth-root-cert-file options are used, Ctrl-Q will read the certificates from the disk file(s) pointed to by those options.
  2. If one or more of the options above are not specified when Ctrl-Q is started, it will look for certificates in the config folder in the same folder as the Ctrl-Q executable.
    1. The certificate files must then be named client.pem, client_key.pem and root.pem, i.e. the names used by the QMC when exporting the certificates.

If the -secure false option is used, Ctrl-Q will not verify the Sense server’s certificate.
This is not recommended from a security perspective, but can still be useful if you are having trouble getting Ctrl-Q to authenticate with Sense.

The options --auth-user-dir and -auth-user-id are also needed to authenticate with Sense.
They define which user will be used when interacting with both the engine and repository APIs.

Strict or relaxed certificate validation

When using certificate authentication, Ctrl-Q will by default validate the Sense server’s certificate.
This happens as the default value for the --secure option is true.

What does “validate the certificate” mean?

Validating a certificate means that Ctrl-Q will check that the certificate is signed by a trusted authority, that it has not expired, and that the server’s hostname matches the certificate’s common name.

For example, if the certificate is created for a host called pro2-win1.lab.ptarmiganlabs.net, Ctrl-Q will - by verifying the server certificate - check that the server it is connecting to is indeed pro2-win1.lab.ptarmiganlabs.net.
If the server’s hostname does not match the certificate’s common name, Ctrl-Q will refuse to connect.
Looks like this:

PS C:\tools\ctrl-q> .\ctrl-q.exe connection-test `
>> --host pro2-win1.ptarmiganlabs.net `
>> --auth-user-dir LAB `
>> --auth-user-id goran
2024-03-09T13:42:31.263Z info: -----------------------------------------------------------
2024-03-09T13:42:31.263Z info: | Ctrl-Q
2024-03-09T13:42:31.263Z info: |
2024-03-09T13:42:31.263Z info: | Version      : 3.15.2
2024-03-09T13:42:31.263Z info: | Log level    : info
2024-03-09T13:42:31.263Z info: |
2024-03-09T13:42:31.263Z info: | Command      : connection-test
2024-03-09T13:42:31.263Z info: |              : test connection to Qlik Sense server.
2024-03-09T13:42:31.263Z info: |
2024-03-09T13:42:31.263Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-09T13:42:31.263Z info: |
2024-03-09T13:42:31.263Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-09T13:42:31.263Z info: ----------------------------------------------------------
2024-03-09T13:42:31.263Z info:
2024-03-09T13:42:31.278Z info: Testing connection to Qlik Sense server pro2-win1.ptarmiganlabs.net on port 4242
2024-03-09T13:42:31.403Z error: GET ABOUT INFO: Hostname/IP does not match certificate's altnames: Host: pro2-win1.ptarmiganlabs.net. is not in the cert's altnames: DNS:pro2-win1.lab.ptarmiganlabs.net

Ctrl-Q tells us that something is not right with the certificate and we even get a pretty clear message about what is wrong.

Changing the command to use the correct hostname makes the error go away and the command works as expected:

PS C:\tools\ctrl-q> .\ctrl-q.exe connection-test `
>> --host pro2-win1.lab.ptarmiganlabs.net `
>> --auth-user-dir LAB `
>> --auth-user-id goran
2024-03-09T13:50:10.741Z info: -----------------------------------------------------------
2024-03-09T13:50:10.741Z info: | Ctrl-Q
2024-03-09T13:50:10.741Z info: |
2024-03-09T13:50:10.741Z info: | Version      : 3.15.2
2024-03-09T13:50:10.741Z info: | Log level    : info
2024-03-09T13:50:10.741Z info: |
2024-03-09T13:50:10.741Z info: | Command      : connection-test
2024-03-09T13:50:10.741Z info: |              : test connection to Qlik Sense server.
2024-03-09T13:50:10.741Z info: |
2024-03-09T13:50:10.741Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-09T13:50:10.741Z info: |
2024-03-09T13:50:10.757Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-09T13:50:10.757Z info: ----------------------------------------------------------
2024-03-09T13:50:10.757Z info:
2024-03-09T13:50:10.757Z info: Testing connection to Qlik Sense server pro2-win1.lab.ptarmiganlabs.net on port 4242
2024-03-09T13:50:10.913Z info: Successfully connected to Qlik Sense server pro2-win1.lab.ptarmiganlabs.net on port 4242
2024-03-09T13:50:10.913Z info: Qlik Sense repository build version: 31.36.2.0
2024-03-09T13:50:10.913Z info: Qlik Sense repository build date: 1/11/2024 22:04:12 PM

All this said, if you are having trouble getting Ctrl-Q to connect to Sense, you can use the --secure false option to disable certificate validation. Not preferred from a security perspective, but it can still be useful if you are having trouble getting Ctrl-Q to authenticate with Sense.

Ports used for certificate authentication

When using certificate authentication, Ctrl-Q will connect to the Qlik Engine API on port 4747.

When using certificate authentication, Ctrl-Q will connect directly to the various Qlik Sense services on the port exposed by each service:

  • Qlik Repository Service (QRS) on port 4242
  • Qlik Proxy Service (QPS) on port 4243
  • Qlik Engine Service (QES) on port 4747

If the default ports are not used, each Ctrl-Q command allows you to specify the port to use for each Sense service.

JWTs

If the --auth-type option is set to jwt, Ctrl-Q will authenticate with Qlik Sense Enterprise using JWTs.

JWTs - JSON Web Tokens - are a standard way of authenticating with web services, where a token is issued by an authentication service and then used to authenticate with other services.
JWTs contain a number of claims, including the user ID, which is used to identify the user.

When Ctrl-Q is started with --auth-type option set to jwt, it will then look for an option called --auth-jwt.
Pass in the JWT as the value of this option, and Ctrl-Q will use it to authenticate with Sense.
Embed the JWT in double quotes if it contains special characters (e.g. spaces).

Ports used for JWT authentication

Given the nature of JWT authentication and the fact that it is handled on a virtual proxy level, Ctrl-Q cannot connect directly to the Qlik Sense services when using JWT authentication.
Instead all access must go via a virtual proxy that is configured to use JWT authentication.

This in turn means that Ctrl-Q will need to use whatever port the virtual proxy is configured to use.
Usually this is port 443, but it can be any port, as configured in the proxy linked to the virtual proxy.

Remember to specify the correct port when using JWT authentication, using the --port (might be called --proxy-port or similar in some Ctrl-Q commands) option.

2.3 - Colors & formatting

Colors & formatting: Windows vs Windows Server vs macOS/Linux

Some of the Ctrl-Q commands use colors and emojis to better communicate the information retrieved from Qlik Sense.
The task tree view is an example, but more commands may use colors in the future.

The use of colors in console/command line applications has been around since at least the 80s.
MS-DOS supported it, as did early Windows versions.

Today this feature is quite fragmented.

Console applications using colors are natively supported on macOS and Linux.
On Windows Server 2016 and earlier it’s very hard to get this working, later versions may be easier.
On Windows 10 and later it’s possible to use Microsoft’s excellent new command line shell, Windows Terminal.
Highly recommended if you use a desktop Windows operating system!

Ctrl-Q tries to offer plain text visuals unless extra features, flare and color is enabled via command line parameters.

Some examples follow, showing different views of reload task trees.

All OSs: plain text

The command for the most basic task tree is

.\ctrl-q.exe task-get `
--auth-type cert `
--host pro2-win1.lab.ptarmiganlabs.net `
--auth-user-dir LAB `
--auth-user-id goran `
--output-format tree `
--output-dest screen

Qlik Sense task tree 1

Add the --tree-details option and the result contains a lot more details for each task. Not very easy to read though.
Note: the task-get command has lots of options, these are described in more detail on this page.

.\ctrl-q.exe task-get `
--auth-type cert `
--host pro2-win1.lab.ptarmiganlabs.net `
--auth-user-dir LAB `
--auth-user-id goran `
--output-format tree `
--output-dest screen `
--tree-details

Qlik Sense task tree 2

Windows 10 using Windows Terminal

Thanks to Windows Terminal handling text coloring and emojis we can add a couple of options:

  • --tree-icons to get emojis showing the result from each task’s last execution (success, fail etc)
  • --text-color yes to get nicely colored text in the task tree
.\ctrl-q.exe task-get `
--auth-type cert `
--host pro2-win1.lab.ptarmiganlabs.net `
--auth-user-dir LAB `
--auth-user-id goran `
--output-format tree `
--output-dest screen `
--tree-icons `
--text-color yes

Qlik Sense task tree 3

Adding --tree-details gives us a tree that’s a lot easier to read compared to previous, uncolored version.

.\ctrl-q.exe task-get `
--auth-type cert `
--host pro2-win1.lab.ptarmiganlabs.net `
--auth-user-dir LAB `
--auth-user-id goran `
--output-format tree `
--output-dest screen `
--tree-icons `
--text-color yes `
--tree-details

Qlik Sense task tree 4

macOS and Linux

A task tree with colors on macOS and Linux versions of Ctrl-Q looks exactly like same as in Windows Terminal.
The only difference is that you don’t have to install a new command line shell.

2.4 - Dry runs

Dry-runs are a good idea!

Many of Ctrl-Q’s commands will create, update or delete things in Sense.

As long as you have specified the correct parameters that’s all good - but there is also the risk of using incorrect parameters or filters, causing too many (or too few or the wrong) resources in Sense to be affected.

Most Ctrl-Q commands that change things in Sense have a --dry-run option.
If used, Ctrl-Q will not make any changes in Sense, but instead only show what would happen.

It’s thus a very good idea to first do a dry run of the intended command, verify that the correct things would happen and then finally do a real execution of the desired Ctrl-Q command.

Might take a bit of extra time, but better safe than sorry.

3 - Commands

Ctrl-Q commands.

List available commands

If unsure about which command to use, run ctrl-q help to get a list of commands available in the Ctrl-Q version you are using.

Using Windows Terminal/PowerShell:

.\ctrl-q.exe help

Using macOS/Linux:

./ctrl-q help
Usage: ctrl-q [options] [command]

Ctrl-Q is a command line utility for interacting with client-managed Qlik Sense Enterprise on Windows servers.
Among other things the tool does bulk import of apps and tasks, manipulates master items and scrambles in-app data.

Version: 3.16.0

Options:
  -V, --version                         output the version number
  -h, --help                            display help for command

Commands:
  app-export [options]                  export Qlik Sense apps to QVF files on disk.
  app-import [options]                  import apps/upload QVF files on disk to Sense based on definitions in Excel file.
  bookmark-get [options]                get info about one or more bookmarks
  connection-test [options]             test connection to Qlik Sense server.
  field-scramble [options]              scramble one or more fields in an app. A new app with the scrambled data is created.
  help [command]                        display help for command
  master-item-dim-delete [options]      delete master dimension(s)
  master-item-dim-get [options]         get info about one or more master dimensions
  master-item-import [options]          create master items based on definitions in a file on disk
  master-item-measure-delete [options]  delete master measure(s)
  master-item-measure-get [options]     get info about one or more master measures
  script-get [options]                  get script from Qlik Sense app
  session-delete [options]             delete proxy session(s) on a specific virtual proxy and proxy service
  session-get [options]                get info about proxy sessions on one or more virtual proxies
  task-custom-property-set [options]    update a custom property of one or more tasks
  task-get [options]                    get info about one or more tasks
  task-import [options]                 create tasks based on definitions in a file on disk, optionally also importing apps from QVF files.
  task-vis [options]                    visualise task network
  variable-delete [options]             delete one or more variables in one or more apps
  variable-get [options]                get variable definitions in one or more apps
  version [options]                     show version info

3.1 - App scripts

Manage Qlik Sense app scripts

Page contents:


Get script

Get script and associated metadata for a Sense app.

.\ctrl-q.exe script-get `
--host pro2-win1.lab.ptarmiganlabs.net `
--app-id a3e0f5d2-000a-464f-998d-33d333b175d7 `
--auth-user-dir LAB `
--auth-user-id goran
2024-04-22T19:01:50.098Z info: -----------------------------------------------------------
2024-04-22T19:01:50.099Z info: | Ctrl-Q
2024-04-22T19:01:50.099Z info: |
2024-04-22T19:01:50.099Z info: | Version      : 3.17.0
2024-04-22T19:01:50.099Z info: | Log level    : info
2024-04-22T19:01:50.100Z info: |
2024-04-22T19:01:50.100Z info: | Command      : script-get
2024-04-22T19:01:50.100Z info: |              : get script from Qlik Sense app
2024-04-22T19:01:50.100Z info: |
2024-04-22T19:01:50.100Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-04-22T19:01:50.101Z info: |
2024-04-22T19:01:50.101Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-04-22T19:01:50.101Z info: ----------------------------------------------------------
2024-04-22T19:01:50.101Z info:
2024-04-22T19:01:51.496Z info: ----- Script metadata -----
2024-04-22T19:01:51.496Z info: App id: a3e0f5d2-000a-464f-998d-33d333b175d7
2024-04-22T19:01:51.496Z info: Created date: 2021-06-03T22:04:52.283Z
2024-04-22T19:01:51.497Z info: Modified date: 2024-03-20T08:02:25.153Z
2024-04-22T19:01:51.497Z info: ----- End script metadata -----
///$tab Main
SET ThousandSep=',';
SET DecimalSep='.';
SET MoneyThousandSep=',';
SET MoneyDecimalSep='.';
SET MoneyFormat='$#,##0.00;-$#,##0.00';
SET TimeFormat='h:mm:ss TT';
SET DateFormat='M/D/YYYY';
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
SET FirstMonthOfYear=1;
SET CollationLocale='en-US';
SET CreateSearchIndexOnReload=1;
SET MonthNames='Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec';
SET LongMonthNames='January;February;March;April;May;June;July;August;September;October;November;December';
SET DayNames='Mon;Tue;Wed;Thu;Fri;Sat;Sun';
SET LongDayNames='Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;Sunday';
SET NumericalAbbreviation='3:k;6:M;9:G;12:T;15:P;18:E;21:Z;24:Y;-3:m;-6:ΞΌ;-9:n;-12:p;-15:f;-18:a;-21:z;-24:y';

Characters:
Load Chr(RecNo()+Ord('A')-1) as Alpha, RecNo() as Num autogenerate 26;

ASCII:
Load
 if(RecNo()>=65 and RecNo()<=90,RecNo()-64) as Num,
 Chr(RecNo()) as AsciiAlpha,
 RecNo() as AsciiNum
autogenerate 255
 Where (RecNo()>=32 and RecNo()<=126) or RecNo()>=160 ;

Transactions:
Load
 TransLineID,
 TransID,
 mod(TransID,26)+1 as Num,
 Pick(Ceil(3*Rand1),'A','B','C') as Dim1,
 Pick(Ceil(6*Rand1),'a','b','c','d','e','f') as Dim2,
 Pick(Ceil(3*Rand()),'X','Y','Z') as Dim3,
 Round(1000*Rand()*Rand()*Rand1) as Expression1,
 Round(  10*Rand()*Rand()*Rand1) as Expression2,
 Round(Rand()*Rand1,0.00001) as Expression3;
Load
 Rand() as Rand1,
 IterNo() as TransLineID,
 RecNo() as TransID
Autogenerate 1000
 While Rand()<=0.5 or IterNo()=1;

 Comment Field Dim1 With "This is a field comment";



let var1 = 'This is variable 1';
let var2 = 1234;


// Dummy country data.
// Courtesty of Bing AI chat "please give me an inline qlik sense table with countries in it"
LOAD * INLINE [
Country, Population
Afghanistan, 38,928,346
Albania, 2,877,797
Algeria, 43,851,044
Andorra, 77,265
Angola, 32,866,272
];

3.2 - Bookmarks

Page contents:


List bookmarks in a Sense app

.\ctrl-q.exe bookmark-get `
--host pro2-win1.lab.ptarmiganlabs.net `
--app-id a3e0f5d2-000a-464f-998d-33d333b175d7 `
--output-format table `
--auth-user-dir LAB `
--auth-user-id goran
2024-03-12T08:35:08.407Z info: -----------------------------------------------------------
2024-03-12T08:35:08.407Z info: | Ctrl-Q
2024-03-12T08:35:08.407Z info: |
2024-03-12T08:35:08.407Z info: | Version      : 3.16.0
2024-03-12T08:35:08.407Z info: | Log level    : info
2024-03-12T08:35:08.407Z info: |
2024-03-12T08:35:08.407Z info: | Command      : bookmark-get
2024-03-12T08:35:08.407Z info: |              : get info about one or more bookmarks
2024-03-12T08:35:08.407Z info: |
2024-03-12T08:35:08.407Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T08:35:08.407Z info: |
2024-03-12T08:35:08.407Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T08:35:08.407Z info: ----------------------------------------------------------
2024-03-12T08:35:08.407Z info:
2024-03-12T08:35:08.422Z info: Get bookmarks
2024-03-12T08:35:08.938Z info: Bookmarks
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Bookmarks (1 bookmark(s) found in the app)
                                                                                                      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Id                                   β”‚ Type     β”‚ Title     β”‚ Description     β”‚ Bookmark definition                                                                                  β”‚ Approved β”‚ Published β”‚ Publish time             β”‚ Created date             β”‚ Modified date            β”‚ Owner     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 81ec0c0d-c90c-431b-8c19-eff4048de404 β”‚ bookmark β”‚ Bookmark1 β”‚ BM1 description β”‚ {"qStateData":[{"qStateName":"$","qFieldItems":[{"qDef":{"qName":"Dim1","qType":"PRESENT"},"qSelectI β”‚ false    β”‚ false     β”‚ 1753-01-01T00:00:00.000Z β”‚ 2021-07-06T15:09:38.565Z β”‚ 2021-07-06T15:09:38.565Z β”‚ LAB\goran β”‚
β”‚                                      β”‚          β”‚           β”‚                 β”‚ nfo":{"qRangeLo":"NaN","qRangeHi":"NaN","qNumberFormat":{"qType":"U","qnDec":10,"qUseThou":0},"qRang β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚
β”‚                                      β”‚          β”‚           β”‚                 β”‚ eInfo":[],"qContinuousRangeInfo":[]},"qValues":[],"qExcludedValues":[]}]}],"qUtcModifyTime":44383.71 β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚
β”‚                                      β”‚          β”‚           β”‚                 β”‚ 498842593,"qVariableItems":[],"qPatches":[]}                                                         β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

3.3 - Connection test

Command to test connection to Qlik Sense server.

Page contents:


Test connection to Qlik Sense server

Some of the Ctrl-Q commands are rather complex and it can be difficult to figure out what is wrong if the command fails.

To rule out any connection issues between the machine running Ctrl-Q and the Qlik Sense server it is possible to run the connection-test command.

Here that command is executed using certificate authentication, using the default certificates, port (for connecting to QRS using certificates) and virtual proxy.

.\ctrl-q.exe connection-test `
--host pro2-win1.lab.ptarmiganlabs.net `
--auth-user-dir LAB `
--auth-user-id goran
2024-03-12T08:35:45.058Z info: -----------------------------------------------------------
2024-03-12T08:35:45.058Z info: | Ctrl-Q
2024-03-12T08:35:45.058Z info: |
2024-03-12T08:35:45.058Z info: | Version      : 3.16.0
2024-03-12T08:35:45.058Z info: | Log level    : info
2024-03-12T08:35:45.058Z info: |
2024-03-12T08:35:45.058Z info: | Command      : connection-test
2024-03-12T08:35:45.058Z info: |              : test connection to Qlik Sense server.
2024-03-12T08:35:45.058Z info: |
2024-03-12T08:35:45.058Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T08:35:45.058Z info: |
2024-03-12T08:35:45.058Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T08:35:45.058Z info: ----------------------------------------------------------
2024-03-12T08:35:45.058Z info:
2024-03-12T08:35:45.058Z info: Testing connection to Qlik Sense server pro2-win1.lab.ptarmiganlabs.net on port 4242
2024-03-12T08:35:45.198Z info: Successfully connected to Qlik Sense server pro2-win1.lab.ptarmiganlabs.net on port 4242
2024-03-12T08:35:45.198Z info: Qlik Sense repository build version: 31.36.2.0
2024-03-12T08:35:45.198Z info: Qlik Sense repository build date: 1/11/2024 22:04:12 PM

3.4 - Custom properties

Commands to retrieve and manipulate custom properties.

Page contents:


Set custom property of reload task

Setting custom properties of reload tasks can be very time consuming if there are lots of tasks and/or custom propertis.
Ctrl-Q makes it possible to update many takes at once with a single command.

Note:

  1. ONE custom property can be updated each time Ctrl-Q is executed.
    If several custom properties should be updated Ctrl-Q must be started several times.
  2. The custom property to be updated must exist before Ctrl-Q is executed. Create the custom property in the QMC first.
  3. The custom property values to be set must exist before Ctrl-Q is executed. Create the custom property in the QMC first.
  4. Task IDs and task tags can be useed to specifiy which tasks’ custom properties should be updated.
    1. The --task-id and --task-tag options are additive, i.e. the union of tasks matching the task IDs and tags will be updated.
  5. The --update-mode option controls how custom properties are updated.
    1. Setting the option to append will add the specified values to any other values already set for the custom property.
    2. Setting the option to replace will delete any already set values for the custom property and then add the specified values.

In the example below 5 tasks will be updated: 3 based on task IDs and 2 based on the task tag “apiCreated”.
The values “Finance” and “Sales” will be added to the custom property “Department”.
Existing custom property values are preserved (i.e. the new values are appended to any already existing values) by appending new values rather than replacing (--update-mode append option).
If a task already has values for this custom property new values will be added without asking first (--overwrite option)

.\ctrl-q.exe task-custom-property-set `
--auth-type cert `
--host pro2-win1.lab.ptarmiganlabs.net `
--auth-user-dir LAB `
--auth-user-id goran `
--task-id 82bc3e66-c899-4e44-b52f-552145da5ee0 5748afa9-3abe-43ab-bb1f-127c48ced075 5520e710-91ad-41d2-aeb6-434cafbf366b `
--task-tag 'apiCreated' `
--custom-property-name Department `
--custom-property-value Finance Sales `
--overwrite `
--update-mode append
2024-03-12T08:36:20.324Z info: -----------------------------------------------------------
2024-03-12T08:36:20.324Z info: | Ctrl-Q
2024-03-12T08:36:20.324Z info: |
2024-03-12T08:36:20.324Z info: | Version      : 3.16.0
2024-03-12T08:36:20.324Z info: | Log level    : info
2024-03-12T08:36:20.324Z info: |
2024-03-12T08:36:20.324Z info: | Command      : task-custom-property-set
2024-03-12T08:36:20.324Z info: |              : update a custom property of one or more tasks
2024-03-12T08:36:20.324Z info: |
2024-03-12T08:36:20.324Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T08:36:20.324Z info: |
2024-03-12T08:36:20.324Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T08:36:20.324Z info: ----------------------------------------------------------
2024-03-12T08:36:20.324Z info:
2024-03-12T08:36:20.699Z info: Number of tasks that will be updated: 5
2024-03-12T08:36:20.699Z info:
2024-03-12T08:36:20.699Z info: -----------------------------------------------------------
2024-03-12T08:36:20.699Z info: Processing task "Reload of Test data - Seattle checkouts by title3" with ID=82bc3e66-c899-4e44-b52f-552145da5ee0
2024-03-12T08:36:20.699Z info: Starting updating custom property "Department" of task "Reload of Test data - Seattle checkouts by title3" with ID=82bc3e66-c899-4e44-b52f-552145da5ee0
2024-03-12T08:36:21.013Z info:    ...Custom property "Department" on task "Reload of Test data - Seattle checkouts by title3" successfully updated.
2024-03-12T08:36:21.013Z info:
2024-03-12T08:36:21.013Z info: -----------------------------------------------------------
2024-03-12T08:36:21.013Z info: Processing task "Reload task of Lab 1_1" with ID=5748afa9-3abe-43ab-bb1f-127c48ced075
2024-03-12T08:36:21.013Z info: Starting updating custom property "Department" of task "Reload task of Lab 1_1" with ID=5748afa9-3abe-43ab-bb1f-127c48ced075
2024-03-12T08:36:21.235Z info:    ...Custom property "Department" on task "Reload task of Lab 1_1" successfully updated.
2024-03-12T08:36:21.235Z info:
2024-03-12T08:36:21.235Z info: -----------------------------------------------------------
2024-03-12T08:36:21.235Z info: Processing task "Reload of Test data - Seattle library checkouts & collection inventory" with ID=5520e710-91ad-41d2-aeb6-434cafbf366b
2024-03-12T08:36:21.235Z info: Starting updating custom property "Department" of task "Reload of Test data - Seattle library checkouts & collection inventory" with ID=5520e710-91ad-41d2-aeb6-434cafbf366b
2024-03-12T08:36:21.427Z info:    ...Custom property "Department" on task "Reload of Test data - Seattle library checkouts & collection inventory" successfully updated.
2024-03-12T08:36:21.427Z info:
2024-03-12T08:36:21.427Z info: -----------------------------------------------------------
2024-03-12T08:36:21.427Z info: Processing task "Reload Operations Monitor" with ID=fbf645f0-0c92-40a4-af9a-6e3eb1d3c35c
2024-03-12T08:36:21.427Z info: Starting updating custom property "Department" of task "Reload Operations Monitor" with ID=fbf645f0-0c92-40a4-af9a-6e3eb1d3c35c
2024-03-12T08:36:21.629Z info:    ...Custom property "Department" on task "Reload Operations Monitor" successfully updated.
2024-03-12T08:36:21.629Z info:
2024-03-12T08:36:21.629Z info: -----------------------------------------------------------
2024-03-12T08:36:21.629Z info: Processing task "Reload task of App ageing" with ID=5217e6b2-65ce-4535-ad2a-37b62e66d12c
2024-03-12T08:36:21.629Z info: Starting updating custom property "Department" of task "Reload task of App ageing" with ID=5217e6b2-65ce-4535-ad2a-37b62e66d12c
2024-03-12T08:36:21.832Z info:    ...Custom property "Department" on task "Reload task of App ageing" successfully updated.

3.5 - Dimensions

In-app master dimension.

Page contents:


List master item dimensions in a Sense app

.\ctrl-q.exe master-item-dim-get `
--host pro2-win1.lab.ptarmiganlabs.net `
--auth-user-dir LAB `
--auth-user-id goran `
--app-id a3e0f5d2-000a-464f-998d-33d333b175d7 `
--output-format table
2024-03-12T08:36:53.124Z info: -----------------------------------------------------------
2024-03-12T08:36:53.140Z info: | Ctrl-Q
2024-03-12T08:36:53.140Z info: |
2024-03-12T08:36:53.140Z info: | Version      : 3.16.0
2024-03-12T08:36:53.140Z info: | Log level    : info
2024-03-12T08:36:53.140Z info: |
2024-03-12T08:36:53.140Z info: | Command      : master-item-dim-get
2024-03-12T08:36:53.140Z info: |              : get info about one or more master dimensions
2024-03-12T08:36:53.140Z info: |
2024-03-12T08:36:53.140Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T08:36:53.140Z info: |
2024-03-12T08:36:53.140Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T08:36:53.140Z info: ----------------------------------------------------------
2024-03-12T08:36:53.140Z info:
2024-03-12T08:36:53.140Z info: Get master dimensions
2024-03-12T08:36:53.687Z info:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Dimensions (6 dimension(s) found in the app)                                                                                                                                                                                                                                                                                                                                                                                                                            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Id                                   β”‚ Type      β”‚ Title           β”‚ Description (static)           β”‚ Description (from expression) β”‚ Description expression β”‚ Label expression β”‚ Definition count β”‚ Definition  β”‚ Coloring                                                                                             β”‚ Grouping β”‚ Approved β”‚ Published β”‚ Publish time             β”‚ Created date             β”‚ Modified date            β”‚ Owner     β”‚ Tags           β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ JDWuPK                               β”‚ dimension β”‚ Dimension 2-3-1 β”‚ Description for 2-3-1          β”‚                               β”‚                        β”‚                  β”‚ 3                β”‚ Dim2        β”‚ Dimension color:                                                                                     β”‚ H        β”‚ false    β”‚ false     β”‚ 1753-01-01T00:00:00.000Z β”‚ 2021-06-07T02:31:02.093Z β”‚ 2021-06-07T02:31:02.093Z β”‚ LAB\goran β”‚ My awesome tag β”‚
β”‚                                      β”‚           β”‚                 β”‚                                β”‚                               β”‚                        β”‚                  β”‚                  β”‚ Dim3        β”‚ {"color":"#ffffff","index":1}                                                                        β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚                β”‚
β”‚                                      β”‚           β”‚                 β”‚                                β”‚                               β”‚                        β”‚                  β”‚                  β”‚ Dim1        β”‚                                                                                                      β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚                β”‚
β”‚                                      β”‚           β”‚                 β”‚                                β”‚                               β”‚                        β”‚                  β”‚                  β”‚             β”‚                                                                                                      β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚                β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ cb922a28-ff2d-4d97-a9fd-5d99eae2a490 β”‚ dimension β”‚ Color           β”‚ Color of sold unit             β”‚                               β”‚                        β”‚ ='Unit color'    β”‚ 1                β”‚ UnitColor   β”‚                                                                                                      β”‚ N        β”‚ false    β”‚ false     β”‚ 1753-01-01T00:00:00.000Z β”‚ 2023-05-09T15:11:34.957Z β”‚ 2023-06-05T18:39:33.522Z β”‚ LAB\goran β”‚ Sales, Color   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 3047e493-f24f-4d31-a0fb-6b797874b049 β”‚ dimension β”‚ Salesperson     β”‚ The person who sold the unit.  β”‚                               β”‚                        β”‚ ='Salesperson'   β”‚ 1                β”‚ Salesperson β”‚ Value colors:                                                                                        β”‚ N        β”‚ false    β”‚ false     β”‚ 1753-01-01T00:00:00.000Z β”‚ 2023-03-08T16:45:26.610Z β”‚ 2023-06-05T18:39:32.990Z β”‚ LAB\goran β”‚ Staff, Sales   β”‚
β”‚                                      β”‚           β”‚                 β”‚                                β”‚                               β”‚                        β”‚                  β”‚                  β”‚             β”‚ {"colors":[{"value":"Afghanistan","baseColor":{"color":"#8a85c6","index":-1}},{"value":"Albania","ba β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚                β”‚
β”‚                                      β”‚           β”‚                 β”‚                                β”‚                               β”‚                        β”‚                  β”‚                  β”‚             β”‚ seColor":{"color":"#aaaaaa","index":-1}},{"value":"Algeria","baseColor":{"color":"#a16090","index":9 β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚                β”‚
β”‚                                      β”‚           β”‚                 β”‚                                β”‚                               β”‚                        β”‚                  β”‚                  β”‚             β”‚ }}],"nul":{"color":"#c8c7a9","index":16},"oth":{"color":"#ffec6e","index":-1},"pal":null,"single":nu β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚                β”‚
β”‚                                      β”‚           β”‚                 β”‚                                β”‚                               β”‚                        β”‚                  β”‚                  β”‚             β”‚ ll,"usePal":true,"autoFill":true}                                                                    β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚                β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 6f375071-5603-401c-815a-9bd59e02623b β”‚ dimension β”‚ DimDrill        β”‚ Drill-down 1                   β”‚                               β”‚                        β”‚                  β”‚ 3                β”‚ Dim1        β”‚ Dimension color:                                                                                     β”‚ H        β”‚ false    β”‚ false     β”‚ 1753-01-01T00:00:00.000Z β”‚ 2023-06-05T18:39:33.522Z β”‚ 2023-11-19T19:32:56.466Z β”‚ LAB\goran β”‚ Staff, Color   β”‚
β”‚                                      β”‚           β”‚                 β”‚                                β”‚                               β”‚                        β”‚                  β”‚                  β”‚  Dim2       β”‚ {"color":"#bbbbbb","index":-1}                                                                       β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚                β”‚
β”‚                                      β”‚           β”‚                 β”‚                                β”‚                               β”‚                        β”‚                  β”‚                  β”‚  Dim3       β”‚                                                                                                      β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚                β”‚
β”‚                                      β”‚           β”‚                 β”‚                                β”‚                               β”‚                        β”‚                  β”‚                  β”‚             β”‚                                                                                                      β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚                β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 295cd9f4-3703-49e6-b2e8-68347d6975b3 β”‚ dimension β”‚ Sales month     β”‚ Date in which a unit was sold. β”‚                               β”‚                        β”‚ ='Sales month'   β”‚ 1                β”‚ Month_Sales β”‚ Dimension color:                                                                                     β”‚ N        β”‚ false    β”‚ false     β”‚ 1753-01-01T00:00:00.000Z β”‚ 2023-11-19T19:32:53.930Z β”‚ 2023-11-19T19:32:53.930Z β”‚ LAB\goran β”‚                β”‚
β”‚                                      β”‚           β”‚                 β”‚                                β”‚                               β”‚                        β”‚                  β”‚                  β”‚             β”‚ {"color":"#bbbbbb","index":-1}                                                                       β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚                β”‚
β”‚                                      β”‚           β”‚                 β”‚                                β”‚                               β”‚                        β”‚                  β”‚                  β”‚             β”‚                                                                                                      β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚                β”‚
β”‚                                      β”‚           β”‚                 β”‚                                β”‚                               β”‚                        β”‚                  β”‚                  β”‚             β”‚                                                                                                      β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚                β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 473bdb09-33ee-452f-802b-e1da00241e25 β”‚ dimension β”‚ Country         β”‚ Country where a unit was sold. β”‚                               β”‚                        β”‚ ='Country sold'  β”‚ 1                β”‚ Country     β”‚ Dimension color:                                                                                     β”‚ N        β”‚ false    β”‚ false     β”‚ 1753-01-01T00:00:00.000Z β”‚ 2023-11-19T19:32:53.930Z β”‚ 2023-11-19T19:32:53.930Z β”‚ LAB\goran β”‚ Geo, DimCat1   β”‚
β”‚                                      β”‚           β”‚                 β”‚                                β”‚                               β”‚                        β”‚                  β”‚                  β”‚             β”‚ {"color":"#bbbbbb","index":-1}                                                                       β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚                β”‚
β”‚                                      β”‚           β”‚                 β”‚                                β”‚                               β”‚                        β”‚                  β”‚                  β”‚             β”‚                                                                                                      β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚                β”‚
β”‚                                      β”‚           β”‚                 β”‚                                β”‚                               β”‚                        β”‚                  β”‚                  β”‚             β”‚ Value colors:                                                                                        β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚                β”‚
β”‚                                      β”‚           β”‚                 β”‚                                β”‚                               β”‚                        β”‚                  β”‚                  β”‚             β”‚ {"colors":[{"value":"Afghanistan","baseColor":{"color":"#8a85c6","index":-1}},{"value":"Albania","ba β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚                β”‚
β”‚                                      β”‚           β”‚                 β”‚                                β”‚                               β”‚                        β”‚                  β”‚                  β”‚             β”‚ seColor":{"color":"#aaaaaa","index":-1}},{"value":"Algeria","baseColor":{"color":"#a16090","index":9 β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚                β”‚
β”‚                                      β”‚           β”‚                 β”‚                                β”‚                               β”‚                        β”‚                  β”‚                  β”‚             β”‚ }}],"nul":{"color":"#c8c7a9","index":16},"oth":{"color":"#ffec6e","index":-1},"pal":null,"single":nu β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚                β”‚
β”‚                                      β”‚           β”‚                 β”‚                                β”‚                               β”‚                        β”‚                  β”‚                  β”‚             β”‚ ll,"usePal":true,"autoFill":true}                                                                    β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚                β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Delete master item dimensions in a Sense app

.\ctrl-q.exe master-item-dim-delete `
--host pro2-win1.lab.ptarmiganlabs.net `
--auth-user-dir LAB `
--auth-user-id goran `
--app-id a3e0f5d2-000a-464f-998d-33d333b175d7 `
--id-type name `
--master-item 'Country' 'Sales month'
2024-03-12T08:37:39.057Z info: -----------------------------------------------------------
2024-03-12T08:37:39.057Z info: | Ctrl-Q
2024-03-12T08:37:39.057Z info: |
2024-03-12T08:37:39.057Z info: | Version      : 3.16.0
2024-03-12T08:37:39.057Z info: | Log level    : info
2024-03-12T08:37:39.057Z info: |
2024-03-12T08:37:39.057Z info: | Command      : master-item-dim-delete
2024-03-12T08:37:39.057Z info: |              : delete master dimension(s)
2024-03-12T08:37:39.057Z info: |
2024-03-12T08:37:39.057Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T08:37:39.057Z info: |
2024-03-12T08:37:39.057Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T08:37:39.057Z info: ----------------------------------------------------------
2024-03-12T08:37:39.057Z info:
2024-03-12T08:37:39.057Z info: Delete master dimensions
2024-03-12T08:37:39.542Z info: (1/2) Deleted master item dimension "Country", id=d404a273-01d4-4ca4-975e-2dea2cce89ee in app "a3e0f5d2-000a-464f-998d-33d333b175d7"
2024-03-12T08:37:39.542Z info: (2/2) Deleted master item dimension "Sales month", id=0e85b6af-1ddb-4c2d-bd2e-b0e80464e8cf in app "a3e0f5d2-000a-464f-998d-33d333b175d7"

3.6 - Measures

In-app master measures.

Page contents:


List master item measures in a Sense app

.\ctrl-q.exe master-item-measure-get `
--host pro2-win1.lab.ptarmiganlabs.net `
--auth-user-dir LAB `
--auth-user-id goran `
--app-id a3e0f5d2-000a-464f-998d-33d333b175d7 `
--output-format table
2024-03-12T08:38:15.661Z info: -----------------------------------------------------------
2024-03-12T08:38:15.661Z info: | Ctrl-Q
2024-03-12T08:38:15.661Z info: |
2024-03-12T08:38:15.661Z info: | Version      : 3.16.0
2024-03-12T08:38:15.661Z info: | Log level    : info
2024-03-12T08:38:15.661Z info: |
2024-03-12T08:38:15.661Z info: | Command      : master-item-measure-get
2024-03-12T08:38:15.661Z info: |              : get info about one or more master measures
2024-03-12T08:38:15.661Z info: |
2024-03-12T08:38:15.661Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T08:38:15.661Z info: |
2024-03-12T08:38:15.661Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T08:38:15.661Z info: ----------------------------------------------------------
2024-03-12T08:38:15.661Z info:
2024-03-12T08:38:15.676Z info: Get master measures
2024-03-12T08:38:16.191Z info:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Measures (4 measure(s) found in the app)                                                                                                                                                                                                                                                                                                                                                                                                                                           β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Id                                   β”‚ Type    β”‚ Title                  β”‚ Description                                       β”‚ Label            β”‚ Label expression β”‚ Definition           β”‚ Coloring                                                                                             β”‚ Number format                         β”‚ Grouping β”‚ Approved β”‚ Published β”‚ Publish time             β”‚ Created date             β”‚ Modified date            β”‚ Owner     β”‚ Tags      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 0a4151cf-0b3d-423d-84d7-eb18ff4ce07a β”‚ measure β”‚ Profit EUR             β”‚ Profit during selected time period.               β”‚ ='Profit'        β”‚ ='Profit'        β”‚ Sum(Profit)          β”‚                                                                                                      β”‚ {"qType":"U","qnDec":10,"qUseThou":0} β”‚ N        β”‚ false    β”‚ false     β”‚ 1753-01-01T00:00:00.000Z β”‚ 2023-05-09T18:48:43.431Z β”‚ 2023-06-05T18:39:32.990Z β”‚ LAB\goran β”‚ Sales     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 9d563fc2-ad00-41db-ad15-0f80c522686d β”‚ measure β”‚ Revenue EUR (LY)       β”‚ Revenue during last year.                         β”‚ ='Revenue LY'    β”‚ ='Revenue LY'    β”‚ Sum(Revenue_LY)      β”‚                                                                                                      β”‚ {"qType":"U","qnDec":10,"qUseThou":0} β”‚ N        β”‚ false    β”‚ false     β”‚ 1753-01-01T00:00:00.000Z β”‚ 2023-05-09T15:18:20.753Z β”‚ 2023-05-09T15:40:12.804Z β”‚ LAB\goran β”‚ Sales, LY β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ a260c5a2-21e9-4ce5-92d9-c3e7837e51a2 β”‚ measure β”‚ No. of sold units (LY) β”‚ Number of units sold last year.                   β”‚ ='Sold units LY' β”‚ ='Sold units LY' β”‚ Sum(UnitsInOrder_LY) β”‚ Measure color:                                                                                       β”‚ {"qType":"U","qnDec":10,"qUseThou":0} β”‚ N        β”‚ false    β”‚ false     β”‚ 1753-01-01T00:00:00.000Z β”‚ 2023-05-09T15:18:20.753Z β”‚ 2023-05-09T15:40:12.804Z β”‚ LAB\goran β”‚ Sales, LY β”‚
β”‚                                      β”‚         β”‚                        β”‚                                                   β”‚                  β”‚                  β”‚                      β”‚ {"color":"#8a85c6","index":8}                                                                        β”‚                                       β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚           β”‚
β”‚                                      β”‚         β”‚                        β”‚                                                   β”‚                  β”‚                  β”‚                      β”‚                                                                                                      β”‚                                       β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚           β”‚
β”‚                                      β”‚         β”‚                        β”‚                                                   β”‚                  β”‚                  β”‚                      β”‚                                                                                                      β”‚                                       β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚           β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 94631826-88b0-4e84-bf71-9667972e8f15 β”‚ measure β”‚ No. of sold units      β”‚ Number of units sold during selected time period. β”‚ ='Sold units'    β”‚ ='Sold units'    β”‚ =Sum(UnitsInOrder)   β”‚ Measure color:                                                                                       β”‚ {"qType":"U","qnDec":10,"qUseThou":0} β”‚ N        β”‚ false    β”‚ false     β”‚ 1753-01-01T00:00:00.000Z β”‚ 2023-05-09T18:48:43.431Z β”‚ 2023-06-05T18:39:32.990Z β”‚ LAB\goran β”‚ Sales     β”‚
β”‚                                      β”‚         β”‚                        β”‚                                                   β”‚                  β”‚                  β”‚                      β”‚ {"color":"#8a85c6","index":8}                                                                        β”‚                                       β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚           β”‚
β”‚                                      β”‚         β”‚                        β”‚                                                   β”‚                  β”‚                  β”‚                      β”‚                                                                                                      β”‚                                       β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚           β”‚
β”‚                                      β”‚         β”‚                        β”‚                                                   β”‚                  β”‚                  β”‚                      β”‚ Segment colors:                                                                                      β”‚                                       β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚           β”‚
β”‚                                      β”‚         β”‚                        β”‚                                                   β”‚                  β”‚                  β”‚                      β”‚ {"colors":[{"color":"#006580","index":6},{"color":"#ac4d58","index":10},{"color":"#4477aa","index":- β”‚                                       β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚           β”‚
β”‚                                      β”‚         β”‚                        β”‚                                                   β”‚                  β”‚                  β”‚                      β”‚ 1},{"color":"#7db8da","index":-1}],"breakTypes":[true,true,false],"limits":[0.223,0.491,0.728],"limi β”‚                                       β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚           β”‚
β”‚                                      β”‚         β”‚                        β”‚                                                   β”‚                  β”‚                  β”‚                      β”‚ tType":"percent"}                                                                                    β”‚                                       β”‚          β”‚          β”‚           β”‚                          β”‚                          β”‚                          β”‚           β”‚           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Delete master item measures in a Sense app

.\ctrl-q.exe master-item-measure-delete `
--host pro2-win1.lab.ptarmiganlabs.net `
--app-id a3e0f5d2-000a-464f-998d-33d333b175d7 `
--auth-user-dir LAB `
--auth-user-id goran `
--id-type name `
--master-item 'Revenue EUR' 'Profit EUR (LY)'
2024-03-12T08:38:49.705Z info: -----------------------------------------------------------
2024-03-12T08:38:49.705Z info: | Ctrl-Q
2024-03-12T08:38:49.705Z info: |
2024-03-12T08:38:49.705Z info: | Version      : 3.16.0
2024-03-12T08:38:49.705Z info: | Log level    : info
2024-03-12T08:38:49.705Z info: |
2024-03-12T08:38:49.705Z info: | Command      : master-item-measure-delete
2024-03-12T08:38:49.705Z info: |              : delete master measure(s)
2024-03-12T08:38:49.719Z info: |
2024-03-12T08:38:49.719Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T08:38:49.719Z info: |
2024-03-12T08:38:49.719Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T08:38:49.719Z info: ----------------------------------------------------------
2024-03-12T08:38:49.719Z info:
2024-03-12T08:38:49.719Z info: Delete master measures
2024-03-12T08:38:50.188Z info: (1/2) Deleted master item measure "Revenue EUR", id=5a166d1d-b873-4fbf-b4fa-9b38cb271d54 in app "a3e0f5d2-000a-464f-998d-33d333b175d7"
2024-03-12T08:38:50.188Z info: (2/2) Deleted master item measure "Profit EUR (LY)", id=a9f885bd-9648-4216-8faa-c895bbf9d6b7 in app "a3e0f5d2-000a-464f-998d-33d333b175d7"

3.7 - Scramble fields

Scramble fields in Sense apps.

Page contents:


Scramble fields in Sense app

Scramble one or more fields in an app using Qlik Sense’s internal scrambling feature.

Note:

  • If more than one field is to be scrambled, the indidivudal field names should be separated by the character or string specified in the --separator option.
  • The entire list of field names (the --fieldname option) should be surrounded by double quotes.
  • A new app with the scrambled data will be created. Specify its name in the --newappname option.
.\ctrl-q.exe field-scramble `
--host pro2-win1.lab.ptarmiganlabs.net `
--app-id a3e0f5d2-000a-464f-998d-33d333b175d7 `
--auth-user-dir LAB `
--auth-user-id goran `
--field-name Expression1 Dim1 AsciiAlpha `
--new-app-name __ScrambledTest1
2024-03-12T08:39:17.987Z info: -----------------------------------------------------------
2024-03-12T08:39:18.004Z info: | Ctrl-Q
2024-03-12T08:39:18.004Z info: |
2024-03-12T08:39:18.004Z info: | Version      : 3.16.0
2024-03-12T08:39:18.004Z info: | Log level    : info
2024-03-12T08:39:18.004Z info: |
2024-03-12T08:39:18.004Z info: | Command      : field-scramble
2024-03-12T08:39:18.004Z info: |              : scramble one or more fields in an app. A new app with the scrambled data is created.
2024-03-12T08:39:18.004Z info: |
2024-03-12T08:39:18.004Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T08:39:18.004Z info: |
2024-03-12T08:39:18.004Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T08:39:18.004Z info: ----------------------------------------------------------
2024-03-12T08:39:18.004Z info:
2024-03-12T08:39:18.004Z info: Scramble field
2024-03-12T08:39:18.502Z info: Scrambled field "Expression1"
2024-03-12T08:39:18.502Z info: Scrambled field "Dim1"
2024-03-12T08:39:18.518Z info: Scrambled field "AsciiAlpha"
2024-03-12T08:39:19.127Z info: Scrambled data written to new app "__ScrambledTest1" with app ID: 65091695-a23c-432e-a430-b2ff4e367ea2

3.8 - Sessions

Manage Qlik Sense proxy sessions.

Each time a user connects to a client-managed Qlik Sense server a proxy session is created.
In busy environments with many users the number of proxy sessions can thus grow to a large number.

Knowing which users are connected to the system can be useful for system administrators.
For example, when a server is to be restarted, it’s good to know if there are any active users connected to the system - and if so, who they are.

  • The session-get command lists active proxy sessions for parts of, or the entire, Sense environment.
  • The session-delete command can be used to delete a single or many proxy sessions.

Note: Given how Sense’s proxy API works it is only possible to authenthicate using certificates.
I.e. JWT authentication is not supported.


Page contents:


List proxy sessions

Let’s first take a look at what proxy sessions are active in a Qlik Sense environment.

 .\ctrl-q.exe session-get `
   --auth-type cert `
   --host pro2-win1.lab.ptarmiganlabs.net `
   --auth-user-dir LAB `
   --auth-user-id goran `
   --output-format table

The command gives us several pieces of information:

  • Information about all proxies in the Qlik Sense environment, including how many virtual proxies are linked to each one.
  • Warnings about some virtual proxies not having any linked proxy services. This is not an error per se, but the virtual proxies will not function given this configuration.
  • Detailed information about all active sessions.

In the examplel below there is a single session active, for user goran in the LAB user directory.

2024-03-12T10:14:50.543Z info: -----------------------------------------------------------
2024-03-12T10:14:50.543Z info: | Ctrl-Q
2024-03-12T10:14:50.543Z info: |
2024-03-12T10:14:50.543Z info: | Version      : 3.16.0
2024-03-12T10:14:50.543Z info: | Log level    : info
2024-03-12T10:14:50.543Z info: |
2024-03-12T10:14:50.543Z info: | Command      : session-get
2024-03-12T10:14:50.543Z info: |              : get info about proxy sessions on one or more virtual proxies
2024-03-12T10:14:50.558Z info: |
2024-03-12T10:14:50.558Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T10:14:50.558Z info: |
2024-03-12T10:14:50.558Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T10:14:50.558Z info: ----------------------------------------------------------
2024-03-12T10:14:50.558Z info:
2024-03-12T10:14:50.558Z info: Get Qlik Sense proxy sessions
2024-03-12T10:14:51.043Z info: Successfully retrieved 29 virtual proxies from host pro2-win1.lab.ptarmiganlabs.net
2024-03-12T10:14:51.371Z info: Successfully retrieved 2 proxies from host pro2-win1.lab.ptarmiganlabs.net
2024-03-12T10:14:51.387Z info: Available Proxy services.
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Available proxy services.                                                                                 β”‚
β”‚                                                                                                           β”‚
β”‚ Note: The "sessions-get" command will only work correctly if the correct --host parameter is used when ca β”‚
β”‚ lling Ctrl-Q.                                                                                             β”‚
β”‚ The --host parameter should be one of the host names listed below.                                        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Name    β”‚ Host name                       β”‚ Id                                   β”‚ Linked virtual proxies β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Central β”‚ pro2-win1.lab.ptarmiganlabs.net β”‚ 9d5d7900-3e52-4f22-b6b9-51f38a3afe86 β”‚ 24                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ dev1    β”‚ pro2-win2.lab.ptarmiganlabs.net β”‚ d0510bbe-c686-459b-b10e-713fcf3951e8 β”‚ 5                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

2024-03-12T10:14:51.481Z warn: Virtual proxy is not linked to any proxy. Prefix="mobile", Session cookie header name="X-Qlik-Session-mob"
2024-03-12T10:14:51.840Z warn: Virtual proxy is not linked to any proxy. Prefix="hdr", Session cookie header name="X-Qlik-Session-hdr-dev"
2024-03-12T10:14:53.340Z warn: Virtual proxy is not linked to any proxy. Prefix="hdr-access1", Session cookie header name="X-Qlik-Session-hdr-access1"
2024-03-12T10:14:54.605Z info:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ -- Sessions per virtual proxy and proxy services --                                                                                                                                                                                                                                            β”‚
β”‚                                                                                                                                                                                                                                                                                                β”‚
β”‚ Total number of sessions: 1                                                                                                                                                                                                                                                                    β”‚
β”‚                                                                                                                                                                                                                                                                                                β”‚
β”‚ Sessions per proxy service:                                                                                                                                                                                                                                                                    β”‚
β”‚    Central: pro2-win1.lab.ptarmiganlabs.net: 1                                                                                                                                                                                                                                                 β”‚
β”‚    dev1: pro2-win2.lab.ptarmiganlabs.net: 0                                                                                                                                                                                                                                                    β”‚
β”‚                                                                                                                                                                                                                                                                                                β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Virtual proxy description β”‚ Virtual proxy prefix β”‚ Virtual proxy session cookie header β”‚ Linked proxy service            β”‚ Load balancing nodes                     β”‚ Session user directory β”‚ Session user ID β”‚ Session user name β”‚ Session attributes β”‚ Session ID                           β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Central Proxy (Default)   β”‚                      β”‚ X-Qlik-Session                      β”‚ Central:                        β”‚ Central: pro2-win1.lab.ptarmiganlabs.net β”‚ LAB                    β”‚ goran           β”‚                   β”‚                    β”‚ a906ee6b-a8da-4c66-9700-48036c96de7b β”‚
β”‚                           β”‚                      β”‚                                     β”‚ pro2-win1.lab.ptarmiganlabs.net β”‚                                          β”‚                        β”‚                 β”‚                   β”‚                    β”‚                                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Add some sessions

To explore the various options for the session-get command, let’s first add some sessions to the Sense environment.

This can be done in different ways:

  • Manully by logging in as different users in incognito/private browser windows.
  • Using the Qlik Scalability Tools.
  • By scripting the creation of sessions using browser automation tools, example in this blog post.

In this example we’ll use the last option above, and create a few sessions by remote controlling/automating the Safari browser in macOS.
Two connections have been created to https://qliksense.ptarmiganlabs.net/finance, and two to https://qliksense.ptarmiganlabs.net/win.
I.e. there should be two new sessions to the finance virtual proxy, and two to the win virtual proxy.

Let’s see what the session-get command returns now

 .\ctrl-q.exe session-get `
   --auth-type cert `
   --host pro2-win1.lab.ptarmiganlabs.net `
   --auth-user-dir LAB `
   --auth-user-id goran `
   --output-format table

The output now shows the new sessions:

2024-03-12T10:55:50.652Z info: -----------------------------------------------------------
2024-03-12T10:55:50.652Z info: | Ctrl-Q
2024-03-12T10:55:50.652Z info: |
2024-03-12T10:55:50.652Z info: | Version      : 3.16.0
2024-03-12T10:55:50.652Z info: | Log level    : info
2024-03-12T10:55:50.652Z info: |
2024-03-12T10:55:50.652Z info: | Command      : session-get
2024-03-12T10:55:50.652Z info: |              : get info about proxy sessions on one or more virtual proxies
2024-03-12T10:55:50.652Z info: |
2024-03-12T10:55:50.652Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T10:55:50.652Z info: |
2024-03-12T10:55:50.652Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T10:55:50.652Z info: ----------------------------------------------------------
2024-03-12T10:55:50.652Z info:
2024-03-12T10:55:50.668Z info: Get Qlik Sense proxy sessions
2024-03-12T10:55:50.981Z info: Successfully retrieved 29 virtual proxies from host pro2-win1.lab.ptarmiganlabs.net
2024-03-12T10:55:51.262Z info: Successfully retrieved 2 proxies from host pro2-win1.lab.ptarmiganlabs.net
2024-03-12T10:55:51.277Z info: Available Proxy services.
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Available proxy services.                                                                                 β”‚
β”‚                                                                                                           β”‚
β”‚ Note: The "sessions-get" command will only work correctly if the correct --host parameter is used when ca β”‚
β”‚ lling Ctrl-Q.                                                                                             β”‚
β”‚ The --host parameter should be one of the host names listed below.                                        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Name    β”‚ Host name                       β”‚ Id                                   β”‚ Linked virtual proxies β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Central β”‚ pro2-win1.lab.ptarmiganlabs.net β”‚ 9d5d7900-3e52-4f22-b6b9-51f38a3afe86 β”‚ 24                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ dev1    β”‚ pro2-win2.lab.ptarmiganlabs.net β”‚ d0510bbe-c686-459b-b10e-713fcf3951e8 β”‚ 5                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

2024-03-12T10:55:51.386Z warn: Virtual proxy is not linked to any proxy. Prefix="mobile", Session cookie header name="X-Qlik-Session-mob"
2024-03-12T10:55:51.761Z warn: Virtual proxy is not linked to any proxy. Prefix="hdr", Session cookie header name="X-Qlik-Session-hdr-dev"
2024-03-12T10:55:52.746Z warn: Virtual proxy is not linked to any proxy. Prefix="hdr-access1", Session cookie header name="X-Qlik-Session-hdr-access1"
2024-03-12T10:55:53.949Z info:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ -- Sessions per virtual proxy and proxy services --                                                                                                                                                                                                                                            β”‚
β”‚                                                                                                                                                                                                                                                                                                β”‚
β”‚ Total number of sessions: 5                                                                                                                                                                                                                                                                    β”‚
β”‚                                                                                                                                                                                                                                                                                                β”‚
β”‚ Sessions per proxy service:                                                                                                                                                                                                                                                                    β”‚
β”‚    Central: pro2-win1.lab.ptarmiganlabs.net: 5                                                                                                                                                                                                                                                 β”‚
β”‚    dev1: pro2-win2.lab.ptarmiganlabs.net: 0                                                                                                                                                                                                                                                    β”‚
β”‚                                                                                                                                                                                                                                                                                                β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Virtual proxy description β”‚ Virtual proxy prefix β”‚ Virtual proxy session cookie header β”‚ Linked proxy service            β”‚ Load balancing nodes                     β”‚ Session user directory β”‚ Session user ID β”‚ Session user name β”‚ Session attributes β”‚ Session ID                           β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Central Proxy (Default)   β”‚                      β”‚ X-Qlik-Session                      β”‚ Central:                        β”‚ Central: pro2-win1.lab.ptarmiganlabs.net β”‚ LAB                    β”‚ goran           β”‚                   β”‚                    β”‚ a906ee6b-a8da-4c66-9700-48036c96de7b β”‚
β”‚                           β”‚                      β”‚                                     β”‚ pro2-win1.lab.ptarmiganlabs.net β”‚                                          β”‚                        β”‚                 β”‚                   β”‚                    β”‚                                      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ finance virtual proxy     β”‚ finance              β”‚ X-Qlik-Session-finance              β”‚ Central:                        β”‚ Central: pro2-win1.lab.ptarmiganlabs.net β”‚ LAB                    β”‚ testuser_2      β”‚                   β”‚                    β”‚ d1b5d953-4312-4cf2-a106-1992a84dd82b β”‚
β”‚                           β”‚                      β”‚                                     β”‚ pro2-win1.lab.ptarmiganlabs.net β”‚ dev1: pro2-win2.lab.ptarmiganlabs.net    β”‚                        β”‚                 β”‚                   β”‚                    β”‚                                      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ finance virtual proxy     β”‚ finance              β”‚ X-Qlik-Session-finance              β”‚ Central:                        β”‚ Central: pro2-win1.lab.ptarmiganlabs.net β”‚ LAB                    β”‚ testuser_1      β”‚                   β”‚                    β”‚ 55142b14-8d2d-43b3-a522-4b2fb46b2798 β”‚
β”‚                           β”‚                      β”‚                                     β”‚ pro2-win1.lab.ptarmiganlabs.net β”‚ dev1: pro2-win2.lab.ptarmiganlabs.net    β”‚                        β”‚                 β”‚                   β”‚                    β”‚                                      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Central Win auth          β”‚ win                  β”‚ X-Qlik-Session-win                  β”‚ Central:                        β”‚ Central: pro2-win1.lab.ptarmiganlabs.net β”‚ LAB                    β”‚ testuser_3      β”‚                   β”‚                    β”‚ e9a9c1d3-2d75-4559-9a68-48d1180b3859 β”‚
β”‚                           β”‚                      β”‚                                     β”‚ pro2-win1.lab.ptarmiganlabs.net β”‚                                          β”‚                        β”‚                 β”‚                   β”‚                    β”‚                                      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Central Win auth          β”‚ win                  β”‚ X-Qlik-Session-win                  β”‚ Central:                        β”‚ Central: pro2-win1.lab.ptarmiganlabs.net β”‚ LAB                    β”‚ testuser_4      β”‚                   β”‚                    β”‚ 6ac3b0ea-7d87-41d6-bede-89eb43c63e38 β”‚
β”‚                           β”‚                      β”‚                                     β”‚ pro2-win1.lab.ptarmiganlabs.net β”‚                                          β”‚                        β”‚                 β”‚                   β”‚                    β”‚                                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

It is also possible to filter the output to only show sessions for a specific virtual proxy or proxy service.
This is done using the --session-virtual-proxy and -proxy-host options.
Each of them takes one or more values.

Usage: ctrl-q session-get [options]

get info about proxy sessions on one or more virtual proxies

Options:
  --log-level <level>                  log level (choices: "error", "warn", "info", "verbose", "debug", "silly", default: "info")
  --host <host>                        Qlik Sense host (IP/FQDN) where Qlik Repository Service (QRS) is running
  --qrs-port <port>                    Qlik Sense repository service (QRS) port (usually 4242) (default: "4242")
  --virtual-proxy <prefix>             Qlik Sense virtual proxy prefix to access QRS via (default: "")
  --secure <true|false>                https connection to Qlik Sense must use correct certificate. Invalid certificates will result in rejected/failed connection. (default: true)
  --session-virtual-proxy <prefix...>  one or more Qlik Sense virtual proxies to get sessions for
  --host-proxy <host...>               Qlik Sense hosts/proxies (IP/FQDN) to get sessions from. Must match the host names of the Sense nodes
  --qps-port <port>                    Qlik Sense proxy service (QPS) port (usually 4243) (default: "4243")
  --auth-user-dir <directory>          user directory for user to connect with
  --auth-user-id <userid>              user ID for user to connect with
  -a, --auth-type <type>               authentication type (choices: "cert", default: "cert")
  --auth-cert-file <file>              Qlik Sense certificate file (exported from QMC) (default: "./cert/client.pem")
  --auth-cert-key-file <file>          Qlik Sense certificate key file (exported from QMC) (default: "./cert/client_key.pem")
  --auth-root-cert-file <file>         Qlik Sense root certificate file (exported from QMC) (default: "./cert/root.pem")
  --output-format <json|table>         output format (default: "json")
  -s, --sort-by <column>               column to sort output table by (choices: "prefix", "proxyhost", "proxyname", "userdir", "userid", "username", default: "prefix")
  -h, --help                           display help for command

Let’s filter to only show the sessions connected to the finance virtual proxy:

.\ctrl-q.exe session-get `
   --auth-type cert `
   --host pro2-win1.lab.ptarmiganlabs.net `
   --auth-user-dir LAB `
   --auth-user-id goran `
   --output-format table `
   --session-virtual-proxy finance
2024-03-12T11:03:10.614Z info: -----------------------------------------------------------
2024-03-12T11:03:10.628Z info: | Ctrl-Q
2024-03-12T11:03:10.628Z info: |
2024-03-12T11:03:10.628Z info: | Version      : 3.16.0
2024-03-12T11:03:10.628Z info: | Log level    : info
2024-03-12T11:03:10.628Z info: |
2024-03-12T11:03:10.628Z info: | Command      : session-get
2024-03-12T11:03:10.628Z info: |              : get info about proxy sessions on one or more virtual proxies
2024-03-12T11:03:10.628Z info: |
2024-03-12T11:03:10.628Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T11:03:10.628Z info: |
2024-03-12T11:03:10.628Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T11:03:10.628Z info: ----------------------------------------------------------
2024-03-12T11:03:10.628Z info:
2024-03-12T11:03:10.628Z info: Get Qlik Sense proxy sessions
2024-03-12T11:03:10.769Z info: Successfully retrieved 1 virtual proxies from host pro2-win1.lab.ptarmiganlabs.net
2024-03-12T11:03:11.066Z info: Successfully retrieved 2 proxies from host pro2-win1.lab.ptarmiganlabs.net
2024-03-12T11:03:11.066Z info: Available Proxy services.
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Available proxy services.                                                                                 β”‚
β”‚                                                                                                           β”‚
β”‚ Note: The "sessions-get" command will only work correctly if the correct --host parameter is used when ca β”‚
β”‚ lling Ctrl-Q.                                                                                             β”‚
β”‚ The --host parameter should be one of the host names listed below.                                        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Name    β”‚ Host name                       β”‚ Id                                   β”‚ Linked virtual proxies β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Central β”‚ pro2-win1.lab.ptarmiganlabs.net β”‚ 9d5d7900-3e52-4f22-b6b9-51f38a3afe86 β”‚ 24                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ dev1    β”‚ pro2-win2.lab.ptarmiganlabs.net β”‚ d0510bbe-c686-459b-b10e-713fcf3951e8 β”‚ 5                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

2024-03-12T11:03:11.269Z info:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ -- Sessions per virtual proxy and proxy services --                                                                                                                                                                                                                                            β”‚
β”‚                                                                                                                                                                                                                                                                                                β”‚
β”‚ Total number of sessions: 2                                                                                                                                                                                                                                                                    β”‚
β”‚                                                                                                                                                                                                                                                                                                β”‚
β”‚ Sessions per proxy service:                                                                                                                                                                                                                                                                    β”‚
β”‚    Central: pro2-win1.lab.ptarmiganlabs.net: 2                                                                                                                                                                                                                                                 β”‚
β”‚    dev1: pro2-win2.lab.ptarmiganlabs.net: 0                                                                                                                                                                                                                                                    β”‚
β”‚                                                                                                                                                                                                                                                                                                β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Virtual proxy description β”‚ Virtual proxy prefix β”‚ Virtual proxy session cookie header β”‚ Linked proxy service            β”‚ Load balancing nodes                     β”‚ Session user directory β”‚ Session user ID β”‚ Session user name β”‚ Session attributes β”‚ Session ID                           β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ finance virtual proxy     β”‚ finance              β”‚ X-Qlik-Session-finance              β”‚ Central:                        β”‚ Central: pro2-win1.lab.ptarmiganlabs.net β”‚ LAB                    β”‚ testuser_2      β”‚                   β”‚                    β”‚ d1b5d953-4312-4cf2-a106-1992a84dd82b β”‚
β”‚                           β”‚                      β”‚                                     β”‚ pro2-win1.lab.ptarmiganlabs.net β”‚ dev1: pro2-win2.lab.ptarmiganlabs.net    β”‚                        β”‚                 β”‚                   β”‚                    β”‚                                      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ finance virtual proxy     β”‚ finance              β”‚ X-Qlik-Session-finance              β”‚ Central:                        β”‚ Central: pro2-win1.lab.ptarmiganlabs.net β”‚ LAB                    β”‚ testuser_1      β”‚                   β”‚                    β”‚ 55142b14-8d2d-43b3-a522-4b2fb46b2798 β”‚
β”‚                           β”‚                      β”‚                                     β”‚ pro2-win1.lab.ptarmiganlabs.net β”‚ dev1: pro2-win2.lab.ptarmiganlabs.net    β”‚                        β”‚                 β”‚                   β”‚                    β”‚                                      β”‚

Similarly, it is possible to filter to only show sessions for a specific proxy service by specifying one or more proxy hosts in the --host-proxy option.

Delete proxy sessions

Deleting proxy sessions it is only possible for one virtual proxy and proxy service at a time.

If one or more session IDs are provided to Ctrl-Q, those sessions will be deleted.
If no session IDs are provided, all sessions for the specified virtual proxy and proxy service will be deleted.


The `session-delete` command has the following options:

```powershell
.\ctrl-q.exe session-delete --help
Usage: ctrl-q session-delete [options]

delete proxy session(s) on a specific virtual proxy and proxy service

Options:
  --log-level <level>               log level (choices: "error", "warn", "info", "verbose", "debug", "silly", default: "info")
  --host <host>                     Qlik Sense host (IP/FQDN) where Qlik Repository Service (QRS) is running
  --qrs-port <port>                 Qlik Sense repository service (QRS) port (usually 4242) (default: "4242")
  --virtual-proxy <prefix>          Qlik Sense virtual proxy prefix to access QRS via (default: "")
  --secure <true|false>             https connection to Qlik Sense must use correct certificate. Invalid certificates will result in rejected/failed connection. (default: true)
  --session-id <id...>              session IDs to delete
  --session-virtual-proxy <prefix>  Qlik Sense virtual proxy (prefix) to delete proxy session(s) on (default: "")
  --host-proxy <host>               Qlik Sense proxy (IP/FQDN) where sessions should be deleted. Must match the host name of a Sense node
  --qps-port <port>                 Qlik Sense proxy service (QPS) port (usually 4243) (default: "4243")
  --auth-user-dir <directory>       user directory for user to connect with
  --auth-user-id <userid>           user ID for user to connect with
  -a, --auth-type <type>            authentication type (choices: "cert", default: "cert")
  --auth-cert-file <file>           Qlik Sense certificate file (exported from QMC) (default: "./cert/client.pem")
  --auth-cert-key-file <file>       Qlik Sense certificate key file (exported from QMC) (default: "./cert/client_key.pem")
  --auth-root-cert-file <file>      Qlik Sense root certificate file (exported from QMC) (default: "./cert/root.pem")
  -h, --help                        display help for command

Delete specific sessions

Let’s delete two specific sessions, using the session IDs from the previous example, for the win virtual proxy on the pro2-win1.lab.ptarmiganlabs.net host.

.\ctrl-q.exe session-delete `
   --auth-type cert `
   --host pro2-win1.lab.ptarmiganlabs.net `
   --auth-user-dir LAB `
   --auth-user-id goran `
   --host-proxy pro2-win1.lab.ptarmiganlabs.net `
   --session-virtual-proxy "win" `
   --session-id e9a9c1d3-2d75-4559-9a68-48d1180b3859 6ac3b0ea-7d87-41d6-bede-89eb43c63e38

The output shows that the sessions were deleted:

2024-03-12T11:10:04.861Z info: -----------------------------------------------------------
2024-03-12T11:10:04.861Z info: | Ctrl-Q
2024-03-12T11:10:04.861Z info: |
2024-03-12T11:10:04.861Z info: | Version      : 3.16.0
2024-03-12T11:10:04.861Z info: | Log level    : info
2024-03-12T11:10:04.861Z info: |
2024-03-12T11:10:04.861Z info: | Command      : session-delete
2024-03-12T11:10:04.861Z info: |              : delete proxy session(s) on a specific virtual proxy and proxy service
2024-03-12T11:10:04.861Z info: |
2024-03-12T11:10:04.861Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T11:10:04.877Z info: |
2024-03-12T11:10:04.877Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T11:10:04.877Z info: ----------------------------------------------------------
2024-03-12T11:10:04.877Z info:
2024-03-12T11:10:04.877Z info: Delete Qlik Sense proxy sessions
2024-03-12T11:10:04.877Z info: Deleting sessions on proxy "pro2-win1.lab.ptarmiganlabs.net", virtual proxy "win"
2024-03-12T11:10:05.017Z info: Successfully retrieved 1 virtual proxies from host pro2-win1.lab.ptarmiganlabs.net
2024-03-12T11:10:05.345Z info: Successfully retrieved 2 proxies from host pro2-win1.lab.ptarmiganlabs.net
2024-03-12T11:10:05.345Z info: Available Proxy services.
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Available proxy services.                                                                                 β”‚
β”‚                                                                                                           β”‚
β”‚ Note: The "sessions-get" command will only work correctly if the correct --host parameter is used when ca β”‚
β”‚ lling Ctrl-Q.                                                                                             β”‚
β”‚ The --host parameter should be one of the host names listed below.                                        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Name    β”‚ Host name                       β”‚ Id                                   β”‚ Linked virtual proxies β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Central β”‚ pro2-win1.lab.ptarmiganlabs.net β”‚ 9d5d7900-3e52-4f22-b6b9-51f38a3afe86 β”‚ 24                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ dev1    β”‚ pro2-win2.lab.ptarmiganlabs.net β”‚ d0510bbe-c686-459b-b10e-713fcf3951e8 β”‚ 5                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

2024-03-12T11:10:05.345Z info: βœ… All host names specified in the --host-proxy parameter are valid.
2024-03-12T11:10:05.564Z info: Session ID "e9a9c1d3-2d75-4559-9a68-48d1180b3859" successfully deleted. User: LAB\testuser_3
2024-03-12T11:10:05.658Z info: Session ID "6ac3b0ea-7d87-41d6-bede-89eb43c63e38" successfully deleted. User: LAB\testuser_4
2024-03-12T11:10:05.658Z info:
2024-03-12T11:10:05.658Z info: Deleted 2 sessions

Delete all sessions connected to a virtual proxy

To delete all sessions connected to a specific virtual proxy via its linked proxy service, simply omit the --session-id option.
This will prompt for confirmation before deleting the sessions.

Let’s delete all sessions connected to the finance virtual proxy on the pro2-win1.lab.ptarmiganlabs.net host:

.\ctrl-q.exe session-delete `
   --auth-type cert `
   --host pro2-win1.lab.ptarmiganlabs.net `
   --auth-user-dir LAB `
   --auth-user-id goran `
   --host-proxy pro2-win1.lab.ptarmiganlabs.net `
   --session-virtual-proxy "finance"

The output shows that the sessions were deleted:

2024-03-12T11:13:20.260Z info: -----------------------------------------------------------
2024-03-12T11:13:20.260Z info: | Ctrl-Q
2024-03-12T11:13:20.260Z info: |
2024-03-12T11:13:20.260Z info: | Version      : 3.16.0
2024-03-12T11:13:20.260Z info: | Log level    : info
2024-03-12T11:13:20.260Z info: |
2024-03-12T11:13:20.260Z info: | Command      : session-delete
2024-03-12T11:13:20.260Z info: |              : delete proxy session(s) on a specific virtual proxy and proxy service
2024-03-12T11:13:20.260Z info: |
2024-03-12T11:13:20.260Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T11:13:20.260Z info: |
2024-03-12T11:13:20.260Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T11:13:20.260Z info: ----------------------------------------------------------
2024-03-12T11:13:20.260Z info:
2024-03-12T11:13:20.275Z info: Delete Qlik Sense proxy sessions
2024-03-12T11:13:20.275Z info: Deleting sessions on proxy "pro2-win1.lab.ptarmiganlabs.net", virtual proxy "finance"
2024-03-12T11:13:20.416Z info: Successfully retrieved 1 virtual proxies from host pro2-win1.lab.ptarmiganlabs.net
2024-03-12T11:13:20.728Z info: Successfully retrieved 2 proxies from host pro2-win1.lab.ptarmiganlabs.net
2024-03-12T11:13:20.728Z info: Available Proxy services.
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Available proxy services.                                                                                 β”‚
β”‚                                                                                                           β”‚
β”‚ Note: The "sessions-get" command will only work correctly if the correct --host parameter is used when ca β”‚
β”‚ lling Ctrl-Q.                                                                                             β”‚
β”‚ The --host parameter should be one of the host names listed below.                                        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Name    β”‚ Host name                       β”‚ Id                                   β”‚ Linked virtual proxies β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Central β”‚ pro2-win1.lab.ptarmiganlabs.net β”‚ 9d5d7900-3e52-4f22-b6b9-51f38a3afe86 β”‚ 24                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ dev1    β”‚ pro2-win2.lab.ptarmiganlabs.net β”‚ d0510bbe-c686-459b-b10e-713fcf3951e8 β”‚ 5                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

2024-03-12T11:13:20.728Z info: βœ… All host names specified in the --host-proxy parameter are valid.
2024-03-12T11:13:21.400Z info:
                                  No session IDs specified, meaning that all existing sessions will be deleted for proxy "pro2-win1.lab.ptarmiganlabs.net" and virtual proxy "finance".

                                  Are you sure you want to continue? (y/n) y
2024-03-12T11:13:26.871Z info:
2024-03-12T11:13:26.871Z info: Deleting sessions...
2024-03-12T11:13:26.981Z info: Session ID "d1b5d953-4312-4cf2-a106-1992a84dd82b" successfully deleted. User: LAB\testuser_2
2024-03-12T11:13:27.075Z info: Session ID "55142b14-8d2d-43b3-a522-4b2fb46b2798" successfully deleted. User: LAB\testuser_1
2024-03-12T11:13:27.090Z info:
2024-03-12T11:13:27.090Z info: Deleted 2 sessions

At this point there is only one session left, the one for the LAB\goran user.

2024-03-12T11:14:55.678Z info: -----------------------------------------------------------
2024-03-12T11:14:55.678Z info: | Ctrl-Q
2024-03-12T11:14:55.678Z info: |
2024-03-12T11:14:55.678Z info: | Version      : 3.16.0
2024-03-12T11:14:55.678Z info: | Log level    : info
2024-03-12T11:14:55.678Z info: |
2024-03-12T11:14:55.678Z info: | Command      : session-get
2024-03-12T11:14:55.678Z info: |              : get info about proxy sessions on one or more virtual proxies
2024-03-12T11:14:55.678Z info: |
2024-03-12T11:14:55.678Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T11:14:55.678Z info: |
2024-03-12T11:14:55.678Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T11:14:55.678Z info: ----------------------------------------------------------
2024-03-12T11:14:55.678Z info:
2024-03-12T11:14:55.693Z info: Get Qlik Sense proxy sessions
2024-03-12T11:14:56.005Z info: Successfully retrieved 29 virtual proxies from host pro2-win1.lab.ptarmiganlabs.net
2024-03-12T11:14:56.288Z info: Successfully retrieved 2 proxies from host pro2-win1.lab.ptarmiganlabs.net
2024-03-12T11:14:56.302Z info: Available Proxy services.
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Available proxy services.                                                                                 β”‚
β”‚                                                                                                           β”‚
β”‚ Note: The "sessions-get" command will only work correctly if the correct --host parameter is used when ca β”‚
β”‚ lling Ctrl-Q.                                                                                             β”‚
β”‚ The --host parameter should be one of the host names listed below.                                        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Name    β”‚ Host name                       β”‚ Id                                   β”‚ Linked virtual proxies β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Central β”‚ pro2-win1.lab.ptarmiganlabs.net β”‚ 9d5d7900-3e52-4f22-b6b9-51f38a3afe86 β”‚ 24                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ dev1    β”‚ pro2-win2.lab.ptarmiganlabs.net β”‚ d0510bbe-c686-459b-b10e-713fcf3951e8 β”‚ 5                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

2024-03-12T11:14:56.412Z warn: Virtual proxy is not linked to any proxy. Prefix="mobile", Session cookie header name="X-Qlik-Session-mob"
2024-03-12T11:14:56.771Z warn: Virtual proxy is not linked to any proxy. Prefix="hdr", Session cookie header name="X-Qlik-Session-hdr-dev"
2024-03-12T11:14:57.693Z warn: Virtual proxy is not linked to any proxy. Prefix="hdr-access1", Session cookie header name="X-Qlik-Session-hdr-access1"
2024-03-12T11:14:58.896Z info:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ -- Sessions per virtual proxy and proxy services --                                                                                                                                                                                                                                            β”‚
β”‚                                                                                                                                                                                                                                                                                                β”‚
β”‚ Total number of sessions: 1                                                                                                                                                                                                                                                                    β”‚
β”‚                                                                                                                                                                                                                                                                                                β”‚
β”‚ Sessions per proxy service:                                                                                                                                                                                                                                                                    β”‚
β”‚    Central: pro2-win1.lab.ptarmiganlabs.net: 1                                                                                                                                                                                                                                                 β”‚
β”‚    dev1: pro2-win2.lab.ptarmiganlabs.net: 0                                                                                                                                                                                                                                                    β”‚
β”‚                                                                                                                                                                                                                                                                                                β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Virtual proxy description β”‚ Virtual proxy prefix β”‚ Virtual proxy session cookie header β”‚ Linked proxy service            β”‚ Load balancing nodes                     β”‚ Session user directory β”‚ Session user ID β”‚ Session user name β”‚ Session attributes β”‚ Session ID                           β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Central Proxy (Default)   β”‚                      β”‚ X-Qlik-Session                      β”‚ Central:                        β”‚ Central: pro2-win1.lab.ptarmiganlabs.net β”‚ LAB                    β”‚ goran           β”‚                   β”‚                    β”‚ a906ee6b-a8da-4c66-9700-48036c96de7b β”‚
β”‚                           β”‚                      β”‚                                     β”‚ pro2-win1.lab.ptarmiganlabs.net β”‚                                          β”‚                        β”‚                 β”‚                   β”‚                    β”‚                                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

3.9 - Tasks

Reload, external program and user sync tasks.

Page contents:


List tasks as tree

This command provides a hierarchical tree view of reload tasks and external program tasks, similar to what is available in QlikView.

The tree view can be enhanced with colors (see this page) and task details.

There are quite a few customisation options available when creating a task tree.
Note that some options are used when creating task tables, these are not applicable for task trees. Ctrl-Q will show an error when invalid combinations of options are used.

Here Windows Terminal is used to run Ctrl-Q. Let’s first take a look at the options for thetask-get command:

.\ctrl-q.exe task-get --help
Usage: ctrl-q task-get [options]

get info about one or more tasks

Options:
  --log-level <level>            log level (choices: "error", "warn", "info", "verbose", "debug", "silly", default: "info")
  --host <host>                  Qlik Sense server IP/FQDN
  --port <port>                  Qlik Sense repository service (QRS) port (usually 4242 for cert auth, 443 for jwt auth) (default: "4242")
  --schema-version <string>      Qlik Sense engine schema version (default: "12.612.0")
  --virtual-proxy <prefix>       Qlik Sense virtual proxy prefix (default: "")
  --secure <true|false>          https connection to Qlik Sense must use correct certificate. Invalid certificates will result in rejected/failed connection. (default: true)
  --auth-user-dir <directory>    user directory for user to connect with
  --auth-user-id <userid>        user ID for user to connect with
  -a, --auth-type <type>         authentication type (choices: "cert", "jwt", default: "cert")
  --auth-cert-file <file>        Qlik Sense certificate file (exported from QMC) (default: "./cert/client.pem")
  --auth-cert-key-file <file>    Qlik Sense certificate key file (exported from QMC) (default: "./cert/client_key.pem")
  --auth-root-cert-file <file>   Qlik Sense root certificate file (exported from QMC) (default: "./cert/root.pem")
  --auth-jwt <jwt>               JSON Web Token (JWT) to use for authentication with Qlik Sense server
  --task-type <type...>          type of tasks to include (choices: "reload", "ext-program")
  --task-id <ids...>             use task IDs to select which tasks to retrieve. Only allowed when --output-format=table
  --task-tag <tags...>           use tags to select which tasks to retrieve. Only allowed when --output-format=table
  --output-format <format>       output format (choices: "table", "tree", default: "tree")
  --output-dest <dest>           where to send task info (choices: "screen", "file", default: "screen")
  --output-file-name <name>      file name to store task info in (default: "")
  --output-file-format <format>  file type/format (choices: "excel", "csv", "json", default: "excel")
  --output-file-overwrite        overwrite output file without asking
  --text-color <show>            use colored text in task views (choices: "yes", "no", default: "yes")
  --tree-icons                   display task status icons in tree view
  --tree-details [detail...]     display details for each task in tree view (choices: "taskid", "laststart", "laststop", "nextstart", "appname", "appstream", default: "")
  --table-details [detail...]    which aspects of tasks should be included in table view. Not choosing any details will show all (choices: "common", "lastexecution", "tag", "customproperty", "schematrigger", "compositetrigger", default:
                                 "")
  -h, --help                     display help for command

Note:
Task trees are currently an all-or-nothing feature.
It is not possible to use the --task-id or --task-tag options when showing task trees.

Tree icons

If --tree-icons is used when starting Ctrl-Q emojis will be used to indicate the last known state for each task.

The used emojis are

Descriptions
⏰ Shown at the top of the tree of scheduled tasks. All tasks below this node have a time-based scheduled.
βœ… Finished successfully.
❌ Failed
🚫 Skipped
πŸ›‘ Aborted
πŸ’€ Never started
❔ Unknown

Text color

If --text-color yes is specified (yes is also the default value) colors will be used to make the created tree more readable.
--text-color no will create a plain-text tree (no colors).

Task tree details

The --tree-details option makes it possible to switch on/off individual task details. This can be useful to make the task tree easier to read.
The allowed values for this option are taskid, laststart, laststop, nextstart, appname, appstream.

Let’s say we want a task tree with the app name and next start time for the task:

.\ctrl-q.exe task-get `
--auth-type cert `
--host pro2-win1.lab.ptarmiganlabs.net `
--auth-user-dir LAB `
--auth-user-id goran `
--output-format tree `
--output-dest screen `
--tree-icons `
--text-color yes `
--tree-details nextstart appname

Note how Ctrl-Q detects and warns about cyclic task dependencies:

Qlik Sense task tree 5

Save tree to disk file

Under the hood the task tree is stored as a JSON structure.
It’s possible to save this JSON to disk:

.\ctrl-q.exe task-get `
--auth-type cert `
--host pro2-win1.lab.ptarmiganlabs.net `
--auth-user-dir LAB `
--auth-user-id goran `
--output-format tree `
--output-dest file `
--tree-details appname `
--output-file-name tasktree.json `
--output-file-format json
2024-03-12T08:41:11.115Z info: -----------------------------------------------------------
2024-03-12T08:41:11.115Z info: | Ctrl-Q
2024-03-12T08:41:11.115Z info: |
2024-03-12T08:41:11.115Z info: | Version      : 3.16.0
2024-03-12T08:41:11.115Z info: | Log level    : info
2024-03-12T08:41:11.115Z info: |
2024-03-12T08:41:11.115Z info: | Command      : task-get
2024-03-12T08:41:11.115Z info: |              : get info about one or more tasks
2024-03-12T08:41:11.115Z info: |
2024-03-12T08:41:11.115Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T08:41:11.115Z info: |
2024-03-12T08:41:11.115Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T08:41:11.115Z info: ----------------------------------------------------------
2024-03-12T08:41:11.115Z info:
2024-03-12T08:41:11.286Z info: Successfully retrieved 28 tags from QSEoW
2024-03-12T08:41:13.114Z warn: Cyclic dependency detected in task tree, from task "[ctrl-q task chain 11.1] Reload task of Ctrl-Q reload chain app 1-1" to "[ctrl-q task chain 2] Reload task of Ctrl-Q reload chain app 2-1". Won't go deeper.
2024-03-12T08:41:13.114Z warn: Cyclic dependency detected in task tree, from task "[ctrl-q task chain 10.1] Reload task of Ctrl-Q reload chain app 1-1" to "[ctrl-q task chain 11.1] Reload task of Ctrl-Q reload chain app 1-1". Won't go deeper.
2024-03-12T08:41:13.130Z info: βœ… Writing task tree to disk file "tasktree.json".

Running the same command again, when the destination file already exists, results in a question to overwrite the file:

2024-03-12T08:41:32.882Z info: -----------------------------------------------------------
2024-03-12T08:41:32.882Z info: | Ctrl-Q
2024-03-12T08:41:32.882Z info: |
2024-03-12T08:41:32.882Z info: | Version      : 3.16.0
2024-03-12T08:41:32.882Z info: | Log level    : info
2024-03-12T08:41:32.882Z info: |
2024-03-12T08:41:32.882Z info: | Command      : task-get
2024-03-12T08:41:32.882Z info: |              : get info about one or more tasks
2024-03-12T08:41:32.897Z info: |
2024-03-12T08:41:32.897Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T08:41:32.897Z info: |
2024-03-12T08:41:32.897Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T08:41:32.897Z info: ----------------------------------------------------------
2024-03-12T08:41:32.897Z info:
2024-03-12T08:41:33.023Z info: Successfully retrieved 28 tags from QSEoW
2024-03-12T08:41:34.898Z warn: Cyclic dependency detected in task tree, from task "[ctrl-q task chain 11.1] Reload task of Ctrl-Q reload chain app 1-1" to "[ctrl-q task chain 2] Reload task of Ctrl-Q reload chain app 2-1". Won't go deeper.
2024-03-12T08:41:34.898Z warn: Cyclic dependency detected in task tree, from task "[ctrl-q task chain 10.1] Reload task of Ctrl-Q reload chain app 1-1" to "[ctrl-q task chain 11.1] Reload task of Ctrl-Q reload chain app 1-1". Won't go deeper.
2024-03-12T08:41:34.898Z info:
                                  Destination file "tasktree.json" exists. Do you want to overwrite it? (y/n) y
2024-03-12T08:41:35.694Z info:
2024-03-12T08:41:35.694Z info: βœ… Writing task tree to disk file "tasktree.json".

To forcibly overwrite the destination file the --output-file-overwrite option can be specified.

List tasks as table

This command provides a tabular view of tasks.
Tags, custom properties, schedules, triggers and references to other tasks are all included in the table. This tabular task view can be shown on screen or saved to disk as Excel or CSV files.

The idea is that all information needed to recreate the tasks should be included in the table.
In reality a few more fields are included, for example app name for the app associated with a task.

The table view can be enhanced with colours (see this page) and task details.

There are quite a few customisation options available when creating a task tree.
Note that some options are used when creating task tables, these are not applicable for task trees. Ctrl-Q will show an error when invalid combinations of options are used.

Show task table on screen

Show a list of tasks on screen, including main task fields as well as any tags defined for the tasks.

.\ctrl-q.exe task-get `
--auth-type cert `
--host pro2-win1.lab.ptarmiganlabs.net `
--auth-user-dir LAB `
--auth-user-id goran `
--output-format table `
--output-dest screen `
--task-type reload ext-program `
--table-details common tag 

Note:
It’s possible to get more information about tasks by adding additional values to the --table-details option.
Run .\ctrl-q.exe task-get --help to show a complete list of all options and their allowed values.

If --table-details is not specified all available information will be showed about the tasks.
This will result in a very wide table!

2024-03-12T08:42:10.554Z info: -----------------------------------------------------------
2024-03-12T08:42:10.554Z info: | Ctrl-Q
2024-03-12T08:42:10.554Z info: |
2024-03-12T08:42:10.554Z info: | Version      : 3.16.0
2024-03-12T08:42:10.554Z info: | Log level    : info
2024-03-12T08:42:10.554Z info: |
2024-03-12T08:42:10.554Z info: | Command      : task-get
2024-03-12T08:42:10.569Z info: |              : get info about one or more tasks
2024-03-12T08:42:10.569Z info: |
2024-03-12T08:42:10.569Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T08:42:10.569Z info: |
2024-03-12T08:42:10.569Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T08:42:10.569Z info: ----------------------------------------------------------
2024-03-12T08:42:10.569Z info:
2024-03-12T08:42:10.710Z info: Successfully retrieved 28 tags from QSEoW
2024-03-12T08:42:12.540Z info: # rows in table: 90
2024-03-12T08:42:12.540Z info: # reload tasks in table: 76
2024-03-12T08:42:12.540Z info: # external program tasks in table: 14
2024-03-12T08:42:12.680Z info:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ # reload tasks: 68, # external program tasks: 8, # rows in table: 76

                                                                         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Task counter β”‚ Task type        β”‚ Task name                                                                β”‚ Task id                              β”‚ Task enabled β”‚ Task timeout β”‚ Task retries β”‚ App id                               β”‚ Partial reload β”‚ Manually triggered β”‚ Ext program path                                          β”‚ Ext program parameters
              β”‚ Tags                                                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 1            β”‚ External program β”‚ App snapshots end of September 2022                                      β”‚ c5cc047d-e520-4ccb-b88f-ac4f9d49d4be β”‚ true         β”‚ 60           β”‚ 1            β”‚                                      β”‚                β”‚                    β”‚ powershell.exe                                            β”‚ -File \\pro2-win1\c$\tools\script\qs_archive_apps_to_stream_end_of_sept.ps1 β”‚                                                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 2            β”‚ External program β”‚ Ext program task chaining 1                                              β”‚ 4ce41cf3-bc6a-4f66-ad00-ffdeb9a7e468 β”‚ true         β”‚ 15           β”‚ 0            β”‚                                      β”‚                β”‚                    β”‚ powershell.exe                                            β”‚ -File \\pro2-win1\c$\tools\script\ext_task_1.ps1
              β”‚                                                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 3            β”‚ External program β”‚ Node-RED ext program task demo 1                                         β”‚ d6bfc66a-393b-4eea-8ecd-1b1629c91683 β”‚ true         β”‚ 30           β”‚ 0            β”‚                                      β”‚                β”‚                    β”‚ powershell.exe                                            β”‚
              β”‚ Ctrl-Q demo                                              β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 4            β”‚ External program β”‚ PowerShell export data connections                                       β”‚ e7b8d484-5297-4caf-a727-38200905171e β”‚ true         β”‚ 15           β”‚ 1            β”‚                                      β”‚                β”‚                    β”‚ powershell                                                β”‚ -File \\pro2-win1\c$\tools\script\qs_export_data_connections.ps1            β”‚                                                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 5            β”‚ External program β”‚ PowerShell export tags (ext pgm task)                                    β”‚ 1d5dc4c1-8bd3-455a-9e6a-873da103a950 β”‚ true         β”‚ 15           β”‚ 0            β”‚                                      β”‚                β”‚                    β”‚ powershell                                                β”‚ -File \\pro2-win1\c$\tools\script\qs_export_tags_cps.ps1                    β”‚                                                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 6            β”‚ External program β”‚ Sample external task                                                     β”‚ 7d4617cd-a9d5-433a-8c82-742e58bfb38b β”‚ true         β”‚ 1440         β”‚ 0            β”‚                                      β”‚                β”‚                    β”‚ C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe β”‚ -File \\pro2-win1\c$\tools\script\ext_task_1.ps1
              β”‚                                                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
...
...

The --task-id and --task-tag options take a list of task IDs and tags, respectively.
When used only the tasks matching the specified task IDs and tags will be included in the created table.
These options can be used both when showing the task table on screen and when storing it on disk.

Example command using these options. Note the double quotes around the task tags:

.\ctrl-q.exe task-get `
--auth-type cert `
--host pro2-win1.lab.ptarmiganlabs.net `
--auth-user-dir LAB `
--auth-user-id goran `
--output-format table `
--output-dest screen `
--table-details common tag `
--task-id e3b27f50-b1c0-4879-88fc-c7cdd9c1cf3e 09b3c78f-04dd-45e3-a4bf-1b074d6572fa `
--task-tag "Demo apps" "Finance" "Sales forecast"

Save task to disk file in tabular format

Saving a task table to disk file (Excel and CSV file formats supported) is done via the task-get command, adding --output-format table, --output-dest file, --output-file-format csv and --output-file-name <filename> options.
Here the most common task fileds together with task tags are included in the table written to a CSV file:

.\ctrl-q.exe task-get `
--auth-type cert `
--host pro2-win1.lab.ptarmiganlabs.net `
--auth-user-dir LAB `
--auth-user-id goran `
--output-format table `
--output-dest file `
--table-details common tag `
--output-file-format csv `
--output-file-name tasktable.csv
2024-03-12T08:43:16.986Z info: -----------------------------------------------------------
2024-03-12T08:43:16.986Z info: | Ctrl-Q
2024-03-12T08:43:16.986Z info: |
2024-03-12T08:43:16.986Z info: | Version      : 3.16.0
2024-03-12T08:43:16.986Z info: | Log level    : info
2024-03-12T08:43:16.986Z info: |
2024-03-12T08:43:16.986Z info: | Command      : task-get
2024-03-12T08:43:16.986Z info: |              : get info about one or more tasks
2024-03-12T08:43:16.986Z info: |
2024-03-12T08:43:16.986Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T08:43:16.986Z info: |
2024-03-12T08:43:16.986Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T08:43:16.986Z info: ----------------------------------------------------------
2024-03-12T08:43:16.986Z info:
2024-03-12T08:43:17.124Z info: Successfully retrieved 28 tags from QSEoW
2024-03-12T08:43:18.969Z info: βœ… Writing task table to disk file "tasktable.csv".

Save task to disk file as JSON

If task defintions should be read by some other system the task definitions can be saved as JSON.
Here only the most basic task info included via the --table-details option.

.\ctrl-q.exe task-get `
--auth-type cert `
--host pro2-win1.lab.ptarmiganlabs.net `
--auth-user-dir LAB `
--auth-user-id goran `
--output-format table `
--output-dest file `
--table-details common `
--output-file-format json `
--output-file-name tasks.json
2024-03-12T08:43:53.762Z info: -----------------------------------------------------------
2024-03-12T08:43:53.762Z info: | Ctrl-Q
2024-03-12T08:43:53.762Z info: |
2024-03-12T08:43:53.762Z info: | Version      : 3.16.0
2024-03-12T08:43:53.762Z info: | Log level    : info
2024-03-12T08:43:53.762Z info: |
2024-03-12T08:43:53.762Z info: | Command      : task-get
2024-03-12T08:43:53.762Z info: |              : get info about one or more tasks
2024-03-12T08:43:53.762Z info: |
2024-03-12T08:43:53.762Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T08:43:53.762Z info: |
2024-03-12T08:43:53.762Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T08:43:53.762Z info: ----------------------------------------------------------
2024-03-12T08:43:53.762Z info:
2024-03-12T08:43:53.903Z info: Successfully retrieved 28 tags from QSEoW
2024-03-12T08:43:55.747Z info: βœ… Writing task table to disk file "tasks.json".

The resulting JSON file looks like this:

[
    [
        "Task counter",
        "Task type",
        "Task name",
        "Task id",
        "Task enabled",
        "Task timeout",
        "Task retries",
        "App id",
        "Partial reload",
        "Manually triggered"
    ],
    [
        1,
        "Reload",
        "Manually triggered reload of Always failing reload (no delay)",
        "0d815a99-1ca3-4131-a398-6878bd735fd8",
        true,
        1440,
        0,
        "deba4bcf-47e4-472e-97b2-4fe8d6498e11",
        false,
        true
    ],
    [
        2,
        "Reload",
        "Manually triggered reload of App1 πŸ†",
        "b37f8034-faee-4e9b-bbca-5aba0cdf5df2",
        true,
        1440,
        0,
        "26634113-9163-44e4-a879-d87817d6e887",
        false,
        true
    ],
...
...
]

List tasks as network graph

This command provides an interactive network graph view of reload tasks and external program tasks.

First Ctrl-Q will retrieve information about all reload and external program tasks from the Qlik Sense repository service (QRS).
This includes information about last execution results for the tasks.

A web server is then started on the local computer where Ctrl-Q is running, serving a web page with the network graph in it.
A link to the web page is shown in the console where Ctrl-Q is running.
In the example below the link is http://localhost:3000.

On Windows using PowerShell it can look like this:

PS C:\tools\ctrl-q> .\ctrl-q.exe task-vis --host pro2-win1.lab.ptarmiganlabs.net --auth-type cert --auth-user-dir LAB --auth-user-id goran
2024-03-12T08:44:24.637Z info: -----------------------------------------------------------
2024-03-12T08:44:24.637Z info: | Ctrl-Q
2024-03-12T08:44:24.637Z info: |
2024-03-12T08:44:24.637Z info: | Version      : 3.16.0
2024-03-12T08:44:24.637Z info: | Log level    : info
2024-03-12T08:44:24.637Z info: |
2024-03-12T08:44:24.637Z info: | Command      : task-vis
2024-03-12T08:44:24.637Z info: |              : visualise task network
2024-03-12T08:44:24.637Z info: |
2024-03-12T08:44:24.637Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T08:44:24.637Z info: |
2024-03-12T08:44:24.637Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T08:44:24.637Z info: ----------------------------------------------------------
2024-03-12T08:44:24.637Z info:
2024-03-12T08:44:26.684Z info: Using vis.js to visualize tasks, more info at https://github.com/visjs/vis-network
2024-03-12T08:44:26.684Z info:
2024-03-12T08:44:26.684Z info: Task visualization server listening on http://localhost:3000
2024-03-12T08:44:26.684Z info: Press Ctrl-C to quit.

Ctrl-clicking (on Windows. Use Cmd-Clik on macOS) on the link will open the network graph in a browser:

Qlik Sense task network graph

Node types

Node type Shape Description
Schema trigger Triangle A schema trigger is a time-based task trigger.
Orange if enabled, gray when disabled
Composite trigger Hexagon If a task’s composite trigger has two or more upstream triggers the composite trigger will be shown as a hexagon.
Orange if enabled, gray when disabled.

If the composite trigger only has one upstream task the composite trigger will not be shown in the graph. In this case the arrow from the upstream task will go directly to the downstream task.
Reload task Rectangle A reload task.
Green when last reload finished successfully, red when last reload failed, gray when task is disabled, blue when task has never been started.
External program task Elipse An external program task.
Green when last run finished successfully, red when last run failed, gray when task is disabled, blue when task has never been started.

User interface

The user interface consists of a toolbar at the top of the page and the network graph itself.

The toolbar has a fixed position and size at the top of the page, while the network graph will resize to fit the available space below the toolbar.

Collapsing/expanding node clusters

Networks with many tasks can be hard to read.
To make it easier to read such networks Ctrl-Q offers the possibility to collapse/expand node clusters and/or leaf nodes.

  • A node cluster is a group of nodes that are connected to each other.
  • A leaf node is a node that does not have any downstream nodes.

Here is an example where the “Cluster leaves” button has been clicked a few times.
Note the circular task chain that becomes very easy to see when the leaf nodes are collapsed:

Qlik Sense task network graph

Expanding the leaf nodes again makes is done by clicking the “Uncluster all” button.

Legend and network graph configuration

The “Legend” button will toggle the floating (also moveable!) legend window on/off.

The “Network config” button will toggle a network configuration pane to the left on/off:

Qlik Sense task network graph

The network configuration pane makes it possible to fine-tune the parameters used when creating the network graph.
Things like gravity, spring stiffness, overlap stragegy etc. can be adjusted.

If the network graph is hard to read it can be worth trying different values for these parameters.

3.10 - Variables

In-app variables.

Page contents:


List variables in a Sense app

The command below lists certain variables (named Ctrl-Q variable 1, TimestampFormat, var1 and vVar1) in apps matching appId a3e0f5d2-000a-464f-998d-33d333b175d7 and app tags Ctrl-Q variable 1 and Ctrl-Q variable 2.

If the --variable option is not included all variables will be included in the table.

Use --output-format json to get the results as JSON.

.\ctrl-q.exe variable-get `
--host pro2-win1.lab.ptarmiganlabs.net `
--qrs-port 4242 `
--auth-user-dir LAB `
--auth-user-id goran `
--app-id a3e0f5d2-000a-464f-998d-33d333b175d7 `
--app-tag 'Ctrl-Q variable 1' 'Ctrl-Q variable 2' `
--id-type name `
--variable 'Ctrl-Q variable 1' 'TimestampFormat' 'var1' 'vVar1' `
--output-format table
2024-03-12T08:44:59.101Z info: -----------------------------------------------------------
2024-03-12T08:44:59.101Z info: | Ctrl-Q
2024-03-12T08:44:59.101Z info: |
2024-03-12T08:44:59.101Z info: | Version      : 3.16.0
2024-03-12T08:44:59.101Z info: | Log level    : info
2024-03-12T08:44:59.101Z info: |
2024-03-12T08:44:59.101Z info: | Command      : variable-get
2024-03-12T08:44:59.101Z info: |              : get variable definitions in one or more apps
2024-03-12T08:44:59.101Z info: |
2024-03-12T08:44:59.101Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T08:44:59.101Z info: |
2024-03-12T08:44:59.101Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T08:44:59.101Z info: ----------------------------------------------------------
2024-03-12T08:44:59.101Z info:
2024-03-12T08:44:59.258Z info: Found 5 apps to process
2024-03-12T08:44:59.398Z info: Getting variables from app f16fa63d-54c7-4c8d-81f1-2d084d46bcfe, "Minecraft Metrics"
2024-03-12T08:44:59.743Z info: Getting variables from app e377d9b5-231a-4795-800f-3649983647dd, "LDAP lab"
2024-03-12T08:45:00.164Z info: Getting variables from app a3e0f5d2-000a-464f-998d-33d333b175d7, "Sheet thumbnails demo app"
2024-03-12T08:45:00.805Z info: Getting variables from app d1ace221-b80e-4754-98ea-3d0a9ebc9632, "Residential energy analysis"
2024-03-12T08:45:01.258Z info: Getting variables from app c840670c-7178-4a5e-8409-ba2da69127e2, "Meetup.com"
2024-03-12T08:45:01.851Z info:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ In-app variables                                                                                                                                                                                                                                                                                                                                                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ App ID                               β”‚ App name                    β”‚ Variable ID                          β”‚ Variable name   β”‚ Description       β”‚ Type     β”‚ Definition                β”‚ Is reserved β”‚ Is script created β”‚ Created date             β”‚ Modified date            β”‚ Engine object type β”‚ Size β”‚ Title β”‚ Privileges                    β”‚ Tags            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ f16fa63d-54c7-4c8d-81f1-2d084d46bcfe β”‚ Minecraft Metrics           β”‚ cd5eb1a8-bd19-42f6-8d58-55905297572b β”‚ TimestampFormat β”‚                   β”‚ variable β”‚ M/D/YYYY h:mm:ss[.fff] TT β”‚ true        β”‚ true              β”‚                          β”‚                          β”‚                    β”‚      β”‚       β”‚ read,update,delete            β”‚                 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ e377d9b5-231a-4795-800f-3649983647dd β”‚ LDAP lab                    β”‚ c1a99293-51d0-426b-bdb7-a43b2d896dc9 β”‚ TimestampFormat β”‚                   β”‚ variable β”‚ M/D/YYYY h:mm:ss[.fff] TT β”‚ true        β”‚ true              β”‚                          β”‚                          β”‚                    β”‚      β”‚       β”‚ read,update,delete            β”‚                 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ a3e0f5d2-000a-464f-998d-33d333b175d7 β”‚ Sheet thumbnails demo app   β”‚ 0155e35e-8054-4896-9dd7-d947405f3a90 β”‚ vVar1           β”‚ vVar1 description β”‚ variable β”‚ ='abc' & '123'            β”‚             β”‚                   β”‚ 2021-06-03T22:04:52.283Z β”‚ 2023-10-31T06:12:00.194Z β”‚                    β”‚ -1   β”‚       β”‚ read,update,delete,exportdata β”‚ varTag1,varTag2 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ a3e0f5d2-000a-464f-998d-33d333b175d7 β”‚ Sheet thumbnails demo app   β”‚ 8b9ed9b7-7db9-420f-8c00-308e19befd54 β”‚ TimestampFormat β”‚                   β”‚ variable β”‚ M/D/YYYY h:mm:ss[.fff] TT β”‚ true        β”‚ true              β”‚                          β”‚                          β”‚                    β”‚      β”‚       β”‚ read,update,delete            β”‚                 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ a3e0f5d2-000a-464f-998d-33d333b175d7 β”‚ Sheet thumbnails demo app   β”‚ 548828d1-4e83-4e57-a0ed-b94119fc46ad β”‚ var1            β”‚                   β”‚ variable β”‚ This is variable 1        β”‚             β”‚ true              β”‚                          β”‚                          β”‚                    β”‚      β”‚       β”‚ read,update,delete            β”‚                 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ d1ace221-b80e-4754-98ea-3d0a9ebc9632 β”‚ Residential energy analysis β”‚ 185378fa-4835-47db-b142-ecffb4ffe951 β”‚ TimestampFormat β”‚                   β”‚ variable β”‚ M/D/YYYY h:mm:ss[.fff] TT β”‚ true        β”‚ true              β”‚                          β”‚                          β”‚                    β”‚      β”‚       β”‚ read,update,delete            β”‚                 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ c840670c-7178-4a5e-8409-ba2da69127e2 β”‚ Meetup.com                  β”‚ 3773a685-d3ce-453f-9e7a-d88514207dbe β”‚ TimestampFormat β”‚                   β”‚ variable β”‚ M/D/YYYY h:mm:ss[.fff] TT β”‚ true        β”‚ true              β”‚                          β”‚                          β”‚                    β”‚      β”‚       β”‚ read,update,delete            β”‚                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Delete variables in a Sense app

There are three kinds of variables in Sense:

  1. Variables created in the load script using let or set statements. These variables will get the property “Is script created” set to true in the output table created by Ctrl-Q.
  2. Variables created in the Sense app development UI. These will have a blank (=undefined) value in “Is script created”.
  3. Protected variables of different kinds, these have special meanings in the load script. Examples include system variables, error variables and Number interpretation variables.
    These have the property “Is reserved” set to true in the variable table created by Ctrl-Q’s variable-get command.
    All the variables that are automatically inserted at the beginning of new apps are of this kind, see image below.

Qlik sense variables with special meaning

The protected variables cannot be deleted using the app development UI or by Ctrl-Q, neither can script-created variables.
To remove script created variables you must first remove them from the app’s load script and then reload the app. Those variables re

The example below deletes certain variables in several apps.
The --dry-run option means Ctrl-Q will not delete any variables, but rather show what would be deleted.

If all variables should be deleted the --delete-all option can be used.
Note that if --delete-all is used --id-type and --variable must not be used.

.\ctrl-q.exe  variable-delete `
--auth-type cert `
--host pro2-win1.lab.ptarmiganlabs.net `
--auth-user-dir LAB `
--auth-user-id goran `
--app-id a3e0f5d2-000a-464f-998d-33d333b175d7 2933711d-6638-41d4-a2d2-6dd2d965208b `
--app-tag 'Ctrl-Q variable 1' 'Ctrl-Q variable 2' `
--id-type name `
--variable a1 a2 a3 vVar1 `
--dry-run
2024-03-12T09:21:30.657Z info: -----------------------------------------------------------
2024-03-12T09:21:30.657Z info: | Ctrl-Q
2024-03-12T09:21:30.657Z info: |
2024-03-12T09:21:30.657Z info: | Version      : 3.16.0
2024-03-12T09:21:30.657Z info: | Log level    : info
2024-03-12T09:21:30.657Z info: |
2024-03-12T09:21:30.657Z info: | Command      : variable-delete
2024-03-12T09:21:30.657Z info: |              : delete one or more variables in one or more apps
2024-03-12T09:21:30.657Z info: |
2024-03-12T09:21:30.657Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T09:21:30.657Z info: |
2024-03-12T09:21:30.657Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T09:21:30.657Z info: ----------------------------------------------------------
2024-03-12T09:21:30.657Z info:
2024-03-12T09:21:31.126Z info: ------------------------
2024-03-12T09:21:31.126Z info: Deleting variables in app 2933711d-6638-41d4-a2d2-6dd2d965208b, "Ctrl-Q CLI"
2024-03-12T09:21:31.626Z info: DRY RUN: Delete of variable "a1" in app 2933711d-6638-41d4-a2d2-6dd2d965208b "Ctrl-Q CLI" would happen here
2024-03-12T09:21:31.626Z warn: Variable "a2" does not exist in app 2933711d-6638-41d4-a2d2-6dd2d965208b "Ctrl-Q CLI"
2024-03-12T09:21:31.626Z info: DRY RUN: Delete of variable "a3" in app 2933711d-6638-41d4-a2d2-6dd2d965208b "Ctrl-Q CLI" would happen here
2024-03-12T09:21:31.626Z warn: Variable "vVar1" does not exist in app 2933711d-6638-41d4-a2d2-6dd2d965208b "Ctrl-Q CLI"
2024-03-12T09:21:31.626Z info: ------------------------
2024-03-12T09:21:31.626Z info: Deleting variables in app f16fa63d-54c7-4c8d-81f1-2d084d46bcfe, "Minecraft Metrics"
2024-03-12T09:21:32.032Z warn: Variable "a1" does not exist in app f16fa63d-54c7-4c8d-81f1-2d084d46bcfe "Minecraft Metrics"
2024-03-12T09:21:32.032Z warn: Variable "a2" does not exist in app f16fa63d-54c7-4c8d-81f1-2d084d46bcfe "Minecraft Metrics"
2024-03-12T09:21:32.032Z warn: Variable "a3" does not exist in app f16fa63d-54c7-4c8d-81f1-2d084d46bcfe "Minecraft Metrics"
2024-03-12T09:21:32.032Z warn: Variable "vVar1" does not exist in app f16fa63d-54c7-4c8d-81f1-2d084d46bcfe "Minecraft Metrics"
2024-03-12T09:21:32.032Z info: ------------------------
2024-03-12T09:21:32.032Z info: Deleting variables in app e377d9b5-231a-4795-800f-3649983647dd, "LDAP lab"
2024-03-12T09:21:32.422Z warn: Variable "a1" does not exist in app e377d9b5-231a-4795-800f-3649983647dd "LDAP lab"
2024-03-12T09:21:32.422Z warn: Variable "a2" does not exist in app e377d9b5-231a-4795-800f-3649983647dd "LDAP lab"
2024-03-12T09:21:32.422Z warn: Variable "a3" does not exist in app e377d9b5-231a-4795-800f-3649983647dd "LDAP lab"
2024-03-12T09:21:32.422Z info: DRY RUN: Delete of variable "vVar1" in app e377d9b5-231a-4795-800f-3649983647dd "LDAP lab" would happen here
2024-03-12T09:21:32.422Z info: ------------------------
2024-03-12T09:21:32.422Z info: Deleting variables in app a3e0f5d2-000a-464f-998d-33d333b175d7, "Sheet thumbnails demo app"
2024-03-12T09:21:33.095Z info: DRY RUN: Delete of variable "a1" in app a3e0f5d2-000a-464f-998d-33d333b175d7 "Sheet thumbnails demo app" would happen here
2024-03-12T09:21:33.095Z info: DRY RUN: Delete of variable "a2" in app a3e0f5d2-000a-464f-998d-33d333b175d7 "Sheet thumbnails demo app" would happen here
2024-03-12T09:21:33.095Z warn: Variable "a3" does not exist in app a3e0f5d2-000a-464f-998d-33d333b175d7 "Sheet thumbnails demo app"
2024-03-12T09:21:33.095Z info: DRY RUN: Delete of variable "vVar1" in app a3e0f5d2-000a-464f-998d-33d333b175d7 "Sheet thumbnails demo app" would happen here
2024-03-12T09:21:33.095Z info: ------------------------
2024-03-12T09:21:33.095Z info: Deleting variables in app d1ace221-b80e-4754-98ea-3d0a9ebc9632, "Residential energy analysis"
2024-03-12T09:21:33.516Z warn: Variable "a1" does not exist in app d1ace221-b80e-4754-98ea-3d0a9ebc9632 "Residential energy analysis"
2024-03-12T09:21:33.532Z warn: Variable "a2" does not exist in app d1ace221-b80e-4754-98ea-3d0a9ebc9632 "Residential energy analysis"
2024-03-12T09:21:33.532Z warn: Variable "a3" does not exist in app d1ace221-b80e-4754-98ea-3d0a9ebc9632 "Residential energy analysis"
2024-03-12T09:21:33.532Z warn: Variable "vVar1" does not exist in app d1ace221-b80e-4754-98ea-3d0a9ebc9632 "Residential energy analysis"
2024-03-12T09:21:33.532Z info: ------------------------
2024-03-12T09:21:33.532Z info: Deleting variables in app c840670c-7178-4a5e-8409-ba2da69127e2, "Meetup.com"
2024-03-12T09:21:34.002Z warn: Variable "a1" does not exist in app c840670c-7178-4a5e-8409-ba2da69127e2 "Meetup.com"
2024-03-12T09:21:34.016Z warn: Variable "a2" does not exist in app c840670c-7178-4a5e-8409-ba2da69127e2 "Meetup.com"
2024-03-12T09:21:34.016Z warn: Variable "a3" does not exist in app c840670c-7178-4a5e-8409-ba2da69127e2 "Meetup.com"
2024-03-12T09:21:34.016Z warn: Variable "vVar1" does not exist in app c840670c-7178-4a5e-8409-ba2da69127e2 "Meetup.com"

3.11 - Export

Exporting various information from Qlik Sense.

Page contents:


Export tasks to Excel file

See this page for details on how to export task definitions to a disk file:
Save task to disk in tabular format

Export apps to QVF files

This command exports Sense apps to QVF files, with or without data.

The command optionally also creates an Excel file with metadata about each app, in the same format used by the app-import command.
It is thus possible to first export apps and get a metadata Excel file, then import those QVFs into another Sense server, using the Excel file to control which apps are imported.

The command options are

.\ctrl-q.exe app-export --help
Usage: ctrl-q app-export [options]

export Qlik Sense apps to QVF files on disk.

Options:
  --log-level <level>                log level (choices: "error", "warn", "info", "verbose", "debug", "silly", default: "info")
  --host <host>                      Qlik Sense server IP/FQDN
  --port <port>                      Qlik Sense repository service (QRS) port (usually 4242 for cert auth, 443 for jwt auth) (default: "4242")
  --schema-version <string>          Qlik Sense engine schema version (default: "12.612.0")
  --virtual-proxy <prefix>           Qlik Sense virtual proxy prefix (default: "")
  --secure <true|false>              https connection to Qlik Sense must use correct certificate. Invalid certificates will result in
                                     rejected/failed connection. (default: true)
  --auth-user-dir <directory>        user directory for user to connect with
  --auth-user-id <userid>            user ID for user to connect with
  -a, --auth-type <type>             authentication type (choices: "cert", "jwt", default: "cert")
  --auth-cert-file <file>            Qlik Sense certificate file (exported from QMC) (default: "./cert/client.pem")
  --auth-cert-key-file <file>        Qlik Sense certificate key file (exported from QMC) (default: "./cert/client_key.pem")
  --auth-root-cert-file <file>       Qlik Sense root certificate file (exported from QMC) (default: "./cert/root.pem")
  --auth-jwt <jwt>                   JSON Web Token (JWT) to use for authentication with Qlik Sense server
  --app-id <ids...>                  use app IDs to select which apps to export
  --app-tag <tags...>                use app tags to select which apps to export
  --app-published                    export all published apps  (default: false)
  --output-dir <directory>           relative or absolut path in which QVF files should be stored. (default: "qvf-export")
  --qvf-name-format <format...>      structure of QVF file name format (choices: "app-id", "app-name", "export-date", "export-time", default:
                                     ["app-name"])
  --qvf-name-separator <separator>   character used to separate parts of the QVF file name (choices: "-", "--", "_", "__", default: "_")
  --qvf-overwrite                    overwrite existing QVF files without asking
  --exclude-app-data <true|false>    exclude or include app data in QVF file (default: true)
  --limit-export-count <number>      export at most x number of apps. Defaults to 0 = no limit (default: 0)
  --sleep-app-export <milliseconds>  Wait this long before continuing after each app has been exported. Defaults to 1000 = 1 second (default:
                                     1000)
  --metadata-file-create             create a separate file with information about all exported apps
  --metadata-file-name <name>        file name to store app metadata in (default: "app_export.xlsx")
  --metadata-file-format <format>    file type/format (choices: "excel", default: "excel")
  --metadata-file-overwrite          overwrite app metadata file without asking
  --dry-run                          do a dry run, i.e. do not export any apps - just show what would be done
  -h, --help                         display help for command

The next example will

  • Export apps (including the data in them) that have either of two different tags set, plus two apps identified by app id.
  • If the QVF files exist a confirmation text will be shown for each existing app.
  • The name of the QVF files will be <app name>_<exportdate>.qvf.
  • QVF files will be stored in a subdirectory qvf-export.
  • An Excel file will be created, containing select metadata about the apps.
  • The certificate files are specifically named in the command, and are stored in a subdirectory cert.
  • Some of the apps are already present in the qvf-export directory, so the command will ask for confirmation before overwriting them.
.\ctrl-q.exe app-export `
--auth-type cert `
--host pro2-win1.lab.ptarmiganlabs.net `
--auth-cert-file ./cert/client.pem `
--auth-cert-key-file ./cert/client_key.pem `
--auth-root-cert-file ./cert/root.pem `
--auth-user-dir LAB `
--auth-user-id goran `
--output-dir qvf-export `
--app-tag apiCreated "Ctrl-Q import" `
--app-id eb3ab049-d007-43d3-93da-5962f9208c65 2933711d-6638-41d4-a2d2-6dd2d965208b `
--exclude-app-data false `
--qvf-name-format app-name export-date `
--qvf-name-separator _ `
--metadata-file-create
2024-04-30T06:30:22.361Z info: -----------------------------------------------------------
2024-04-30T06:30:22.362Z info: | Ctrl-Q
2024-04-30T06:30:22.362Z info: |
2024-04-30T06:30:22.362Z info: | Version      : 3.18.0
2024-04-30T06:30:22.362Z info: | Log level    : info
2024-04-30T06:30:22.363Z info: |
2024-04-30T06:30:22.363Z info: | Command      : app-export
2024-04-30T06:30:22.363Z info: |              : export Qlik Sense apps to QVF files on disk.
2024-04-30T06:30:22.363Z info: |
2024-04-30T06:30:22.363Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-04-30T06:30:22.364Z info: |
2024-04-30T06:30:22.364Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-04-30T06:30:22.364Z info: ----------------------------------------------------------
2024-04-30T06:30:22.364Z info:
2024-04-30T06:30:22.367Z info: Export apps to directory "/Users/goran/tools/ctrl-q demo/qvf-export"
2024-04-30T06:30:22.974Z info: Number of apps to export: 8
2024-04-30T06:30:23.707Z info: ------------------------------------
2024-04-30T06:30:23.707Z info: App [eb3ab049-d007-43d3-93da-5962f9208c65] "User retention.qvf", download starting
2024-04-30T06:30:24.571Z info: βœ… App [eb3ab049-d007-43d3-93da-5962f9208c65] "User retention.qvf", download complete. Size=360448 bytes
2024-04-30T06:30:26.676Z info: ------------------------------------
2024-04-30T06:30:26.677Z info: App [2933711d-6638-41d4-a2d2-6dd2d965208b] "Ctrl-Q CLI.qvf", download starting
2024-04-30T06:30:27.448Z info: βœ… App [2933711d-6638-41d4-a2d2-6dd2d965208b] "Ctrl-Q CLI.qvf", download complete. Size=720896 bytes
2024-04-30T06:30:29.261Z info: ------------------------------------
2024-04-30T06:30:29.261Z info: App [e9d2f9b2-b598-480e-b84f-4c5d34467f6f] "Performance review_2022-03-28.qvf", download starting
2024-04-30T06:30:30.177Z info: βœ… App [e9d2f9b2-b598-480e-b84f-4c5d34467f6f] "Performance review_2022-03-28.qvf", download complete. Size=327680 bytes
2024-04-30T06:30:32.234Z info: ------------------------------------
2024-04-30T06:30:32.234Z info: App [5733046b-df34-4989-bd33-56cde5ff779d] "App 2.qvf", download starting
2024-04-30T06:30:33.066Z info: βœ… App [5733046b-df34-4989-bd33-56cde5ff779d] "App 2.qvf", download complete. Size=245760 bytes
2024-04-30T06:30:34.565Z info: ------------------------------------
2024-04-30T06:30:34.565Z info: App [deba4bcf-47e4-472e-97b2-4fe8d6498e11] "Always failing reload (no delay).qvf", download starting
2024-04-30T06:30:34.810Z info: βœ… App [deba4bcf-47e4-472e-97b2-4fe8d6498e11] "Always failing reload (no delay).qvf", download complete. Size=180224 bytes
2024-04-30T06:30:36.431Z info:
                                  Destination file "/Users/goran/tools/ctrl-q demo/qvf-export/App 2_2024-04-30.qvf" exists. Do you want to overwrite it? (y/n) y
2024-04-30T06:30:40.286Z info:
2024-04-30T06:30:40.286Z info: ------------------------------------
2024-04-30T06:30:40.286Z info: App [4e96965a-ebc9-4572-ad71-35d6cc7dbb23] "App 2.qvf", download starting
2024-04-30T06:30:41.324Z info: βœ… App [4e96965a-ebc9-4572-ad71-35d6cc7dbb23] "App 2.qvf", download complete. Size=245760 bytes
2024-04-30T06:30:42.988Z info: ------------------------------------
2024-04-30T06:30:42.988Z info: App [8272af5f-2677-459a-8d50-ee45a1c5a775] "App 1.qvf", download starting
2024-04-30T06:30:43.394Z info: βœ… App [8272af5f-2677-459a-8d50-ee45a1c5a775] "App 1.qvf", download complete. Size=245760 bytes
2024-04-30T06:30:45.138Z info:
                                  Destination file "/Users/goran/tools/ctrl-q demo/qvf-export/App 1_2024-04-30.qvf" exists. Do you want to overwrite it? (y/n) y
2024-04-30T06:30:49.529Z info:
2024-04-30T06:30:49.531Z info: ------------------------------------
2024-04-30T06:30:49.531Z info: App [6bf8f41f-31d0-40b0-9e59-95ec8839eb57] "App 1.qvf", download starting
2024-04-30T06:30:49.973Z info: βœ… App [6bf8f41f-31d0-40b0-9e59-95ec8839eb57] "App 1.qvf", download complete. Size=245760 bytes
2024-04-30T06:30:50.984Z info: ------------------------------------
2024-04-30T06:30:50.984Z info:
                                  App metadata file "/Users/goran/tools/ctrl-q demo/qvf-export/app_export.xlsx" exists. Do you want to overwrite it? (y/n) y
2024-04-30T06:30:52.867Z info:
2024-04-30T06:30:52.869Z info: βœ… Done writing app metadata file "app_export.xlsx" to disk

The qvf-export directory now contains these files:

dir .\qvf-export\

    Directory: C:\tools\ctrl-q\qvf-export


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        12/03/2024     10:26         180224 Always failing reload (no delay)_2024-03-12.qvf
-a----        12/03/2024     10:27         245760 App 1_2024-03-12.qvf
-a----        12/03/2024     10:27         245760 App 2_2024-03-12.qvf
-a----        12/03/2024     10:27          20539 app_export.xlsx
-a----        12/03/2024     10:26         720896 Ctrl-Q CLI_2024-03-12.qvf
-a----        12/03/2024     10:26         327680 Performance review_2022-03-28_2024-03-12.qvf
-a----        12/03/2024     10:26         360448 User retention_2024-03-12.qvf

The format of the created Excel file is almost identical to the one used when importing apps from QVF files, described here.

The only difference is that the app export format includes an “App id” column, which is not required when importing apps.

App import will however work just fine if there is an “App id” column present, it just won’t be used for anything.

3.12 - Import

Import various information into Qlik Sense

Save time and avoid manual errors by automating the import of various information into Qlik Sense.

3.12.1 - Apps

Import apps into Qlik Sense

Page contents:


All example below use Windows Terminal/PowerShell.

Import apps from QVF files

.QVF files are Sense apps stored on disk.
Ctrl-Q’s app-import command does bulk import of such QVF files, as well as setting tags and custom properties on the created apps.

Importing apps defined on the App import sheet of the tasks.xlsx Excel file can be done with a command like this:

.\ctrl-q.exe app-import `
--auth-type cert `
--host pro2-win1.lab.ptarmiganlabs.net `
--auth-cert-file ./cert/client.pem `
--auth-cert-key-file ./cert/client_key.pem `
--auth-user-dir LAB `
--auth-user-id goran `
--file-name tasks.xlsx `
--sheet-name "App import"
2024-03-12T09:28:28.250Z info: -----------------------------------------------------------
2024-03-12T09:28:28.250Z info: | Ctrl-Q
2024-03-12T09:28:28.250Z info: |
2024-03-12T09:28:28.250Z info: | Version      : 3.16.0
2024-03-12T09:28:28.250Z info: | Log level    : info
2024-03-12T09:28:28.250Z info: |
2024-03-12T09:28:28.250Z info: | Command      : app-import
2024-03-12T09:28:28.250Z info: |              : import apps/upload QVF files on disk to Sense based on definitions in Excel file.
2024-03-12T09:28:28.250Z info: |
2024-03-12T09:28:28.250Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T09:28:28.250Z info: |
2024-03-12T09:28:28.250Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T09:28:28.250Z info: ----------------------------------------------------------
2024-03-12T09:28:28.250Z info:
2024-03-12T09:28:28.265Z info: Import apps from definitions in file "tasks.xlsx"
2024-03-12T09:28:28.406Z info: Successfully retrieved 28 tags from QSEoW
2024-03-12T09:28:28.515Z info: Successfully retrieved 31 custom properties from QSEoW
2024-03-12T09:28:28.547Z info: -------------------------------------------------------------------
2024-03-12T09:28:28.547Z info: Importing apps...
2024-03-12T09:28:28.547Z info: (1) Importing app "App 3" from file "C:/tools/ctrl-q/testdata/App import 3.qvf"
2024-03-12T09:28:33.079Z info: (1, delete-publish) App "App 3" published to stream "Ctrl-Q demo apps", the existing app (if one exists) with the same name in this stream has been deleted. Id of published app: 6668310c-19e8-416c-94b0-e32505e4de78
2024-03-12T09:28:33.079Z info: (2) Importing app "App 3" from file "C:/tools/ctrl-q/testdata/App import 3.qvf"
2024-03-12T09:28:39.055Z info: (2, publish-replace) App "App 3" published to stream "Ctrl-Q demo apps", replacing the existing app with the same name. Id of published app: 6668310c-19e8-416c-94b0-e32505e4de78
2024-03-12T09:28:39.055Z info: (3) Importing app "App 1" from file "C:/tools/ctrl-q/testdata/App import 1.qvf"
2024-03-12T09:28:43.024Z warn: (3) PUBLISH APP publish-replace: More than one app with the same name "App 1" in the target stream "Ctrl-Q demo apps". Impossible to know which one to replace. Skipping publishing for this app. The uploaded app is still present in the QMC (id=bcda9997-1a6c-42bb-b5aa-ff75fcad3f09).
2024-03-12T09:28:43.024Z error: (3) Failed publishing app "App 1" to stream "Ctrl-Q demo apps"
2024-03-12T09:28:43.024Z info: (4) Importing app "App 1" from file "C:/tools/ctrl-q/testdata/App import 1.qvf"
2024-03-12T09:28:47.243Z info: (4, publish-another) App "App 1" published to stream "Ctrl-Q demo apps". Id of published app: dda304b5-792e-4241-9bd8-b5e2e8ca21af
2024-03-12T09:28:47.243Z info: (5) Importing app "App 1" from file "C:/tools/ctrl-q/testdata/App import 1.qvf"
2024-03-12T09:28:51.117Z warn: (5) PUBLISH APP publish-replace: More than one app with the same name "App 1" in the target stream "Ctrl-Q demo apps". Impossible to know which one to replace. Skipping publishing for this app. The uploaded app is still present in the QMC (id=06d9f5d6-53a2-449c-ae7b-7033597cf88b).
2024-03-12T09:28:51.117Z error: (5) Failed publishing app "App 1" to stream "Ctrl-Q demo apps"
2024-03-12T09:28:51.117Z info: (6) Importing app "App 2" from file "C:/tools/ctrl-q/testdata/App import 2.qvf"
2024-03-12T09:28:54.610Z warn: Stream "Stream does not exist" does not exist.
2024-03-12T09:28:54.610Z error: (6) Failed publishing app "App 2" to stream "Stream does not exist". The uploaded app is still present in the QMC (id=3a7812fe-7d8c-467e-8fd0-62f4ee42a116).
2024-03-12T09:28:54.610Z info: (7) Importing app "App 3" from file "C:/tools/ctrl-q/testdata/App import 3.qvf"
2024-03-12T09:29:00.011Z info: (7, publish-replace) App "App 3" published to stream "Ctrl-Q demo apps", replacing the existing app with the same name. Id of published app: 6668310c-19e8-416c-94b0-e32505e4de78

NOTE 1: Qlik Sense implements rate limiting for QVF uploads. This means that if you plan to upload more than 60 QVF files you may be affected by this rate limiting.
Ctrl-Q detects that it’s being rate limited and implements a backoff strategy for retries, waiting longer and longer until it tries again.
Such retries are clearly shown in the Ctrl-Q logs.

The QMC now shows three new apps:

Sense apps imported from QVF files

The Excel file with definitions on what QVF files should be imported, what the apps should be named etc looks like this:

QVF app files that should be imported into Qlik Sense

The available columns in the Excel file are the same as when importing apps as part of task import.
The columns are described on the page describing app importing as part of task imports.

NOTE: A sample defintions Excel file is available in the GitHub repository.

If a valid app owner is specified in the Excel file it will be applied to the new app.
Similarly, if an already existing stream name (or ID of an existing stream) is specified in the Excel file, the new app will be published to that stream.

3.12.2 - Master items

Import master items into Qlik Sense

Page contents:


All example below use Windows Terminal/PowerShell.

Import master items from Excel file

This command imports dimensions and measures defined in an Excel file into master items in a Sense app.

Both single and drill-down dimensions can be created (i.e. the same types that can be created using the Sense web UI), as well as measures.
The same coloring options are available as in the web UI for both dimensions and measures.

First let’s take a look at the command options:

.\ctrl-q.exe master-item-import --help
Usage: ctrl-q master-item-import [options]

create master items based on definitions in a file on disk

Options:
  --log-level <level>                                          log level (choices: "error", "warn", "info", "verbose", "debug", "silly", default: "info")
  --host <host>                                                Qlik Sense server IP/FQDN
  --port <port>                                                Qlik Sense server engine port (usually 4747 for cert auth, 443 for jwt auth) (default: "4747")
  --schema-version <string>                                    Qlik Sense engine schema version (default: "12.612.0")
  --app-id <id>                                                Qlik Sense app ID
  --virtual-proxy <prefix>                                     Qlik Sense virtual proxy prefix (default: "")
  --secure <true|false>                                        https connection to Qlik Sense must use correct certificate. Invalid certificates will result in rejected/failed connection. (default: true)
  --auth-user-dir <directory>                                  user directory for user to connect with
  --auth-user-id <userid>                                      user ID for user to connect with
  -a, --auth-type <type>                                       authentication type (choices: "cert", "jwt", default: "cert")
  --auth-cert-file <file>                                      Qlik Sense certificate file (exported from QMC) (default: "./cert/client.pem")
  --auth-cert-key-file <file>                                  Qlik Sense certificate key file (exported from QMC) (default: "./cert/client_key.pem")
  --auth-root-cert-file <file>                                 Qlik Sense root certificate file (exported from QMC) (default: "./cert/root.pem")
  --auth-jwt <jwt>                                             JSON Web Token (JWT) to use for authentication with Qlik Sense server
  -t, --file-type <type>                                       source file type (choices: "excel", default: "excel")
  --file <filename>                                            file containing master item definitions
  --sheet <name>                                               name of Excel sheet where dim/measure flag column is found
  --col-ref-by <reftype>                                       how to refer to columns in the source file. Options are by name or by position (zero based) (choices: "name", "position", default: "name")
  --col-item-type <column position or name>                    column where dim/measure flag is found. Use "dim-single" in that column to create dimension, "dim-drilldown" for drill-down dimension, "measure" for measure (default: "Master item type")
  --col-master-item-name <column position or name>             column number (zero based) or name to use as master item name (default: "Master item name")
  --col-master-item-descr <column position or name>            column number (zero based) or name to use as master item description (default: "Description")
  --col-master-item-label <column position or name>            column number (zero based) or name to use as master item label (default: "Label")
  --col-master-item-expr <column position or name>             column number (zero based) or name to use as master item expression (default: "Expression")
  --col-master-item-tag <column position or name>              column number (zero based) or name to use as master item tags (default: "Tag")
  --col-master-item-color <column position or name>            column number (zero based) or name to use as color for dimensions/measures (default: "Color")
  --col-master-item-per-value-color <column position or name>  column number (zero based) or name to use as per-value/segment color for dimensions/measures (default: "Per value color")
  --sleep-between-imports <milliseconds>                       sleep this many milliseconds between imports. Set to 0 to disable (default: 1000)
  --limit-import-count <number>                                import at most x number of master items from the Excel file. Defaults to 0 = no limit (default: 0)
  --dry-run                                                    do a dry run, i.e. do not create or update anything - just show what would be done
  -h, --help                                                   display help for command

There are several options that allow for a great deal of flexibility.
For example, the --col-ref-by option determines whether the --col-master-item-... options refer to columns by position or name. Column names will in most cases be easier to read and understand, but sometimes a zero-based column position might be preferred.

Similarly those --col-master-item-... options let you use your own column names in the source file.

By adding the --help option when running Ctrl-Q you get a list of all available options for the master-item-import command.
--help can be added to any Ctrl-Q command, even if there are already other options on the command line.

Some other options that might be useful:

  • --dry-run- Don’t actually create or update any master items, just show what would have been done.
  • --limit-import-count - Only import the first N master items from the file. Useful for testing.
  • --sleep-between-imports - Pause for N milliseconds between each imported master item. Useful for decreasing the load on the Sense server.

Notes on using the master-item-import command:

  • Master items are referred to by name. This means that if a master item in the source file already exists in the target Sense app, the app’s master item will be updated.

  • If a master item does not exist in the target app the master item will be created.

  • If a master item does_* exist in the target app its content will be overwritten with the info in the source Excel file.

  • The structure of the Excel file is fairly flexible, but some restrictions apply:

    • The columns can be named anything. Use the --col-item-type and --col-master-item-... columns to tell Ctrl-Q which columns contains what data.
    • The first row in the Excel sheet must contain column headers if columns are referenced by name.
  • Master item names, descriptions and labels can contain almost any characters and there are some restrictions on the length of these strings.

    • See the Qlik Sense help for details.
    • If a master item name or description is too long a warning will be shown and the text will be truncated to the max length allowed by Sense (see the link above).
    • If a master item has more than 30 tags a warning will be shown and only the first 30 tags will be used.
    • If a master item tag is longer than 31 characters a warning will be shown and the tag will be truncated to 31 characters.
    • If a master item expression is too long an error will be shown and Ctrl-Q will exit. Notes on the example below:
  • The (intentional) warning for the incorrectly spelled master item type “measur” (which should have been “measure”, of course).

Now let’s run the command.

.\ctrl-q.exe master-item-import `
--host pro2-win1.lab.ptarmiganlabs.net `
--auth-user-dir LAB `
--auth-user-id goran `
--auth-type cert `
--app-id a3e0f5d2-000a-464f-998d-33d333b175d7 `
--file-type excel `
--file ./ctrl-q-master-items.xlsx `
--sheet Sales `
--col-ref-by name `
--col-item-type "Master item type" `
--col-master-item-name "Master Item Name" `
--col-master-item-descr Description `
--col-master-item-label Label `
--col-master-item-expr Expression `
--col-master-item-tag Tag `
--col-master-item-color Color `
--col-master-item-per-value-color 'Per value color'
2024-03-12T09:30:47.416Z info: -----------------------------------------------------------
2024-03-12T09:30:47.416Z info: | Ctrl-Q
2024-03-12T09:30:47.416Z info: |
2024-03-12T09:30:47.416Z info: | Version      : 3.16.0
2024-03-12T09:30:47.416Z info: | Log level    : info
2024-03-12T09:30:47.416Z info: |
2024-03-12T09:30:47.416Z info: | Command      : master-item-import
2024-03-12T09:30:47.416Z info: |              : create master items based on definitions in a file on disk
2024-03-12T09:30:47.416Z info: |
2024-03-12T09:30:47.416Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T09:30:47.416Z info: |
2024-03-12T09:30:47.416Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T09:30:47.416Z info: ----------------------------------------------------------
2024-03-12T09:30:47.416Z info:
2024-03-12T09:30:47.430Z info: Import master items from definitions in Excel file "./ctrl-q-master-items.xlsx"
2024-03-12T09:30:47.993Z info: (1/12) Updated existing measure "No. of sold units"
2024-03-12T09:30:49.009Z info: (2/12) Updated existing measure "No. of sold units (LY)"
2024-03-12T09:30:50.041Z info: (3/12) Created new measure "Revenue EUR"
2024-03-12T09:30:51.071Z info: (4/12) Updated existing measure "Revenue EUR (LY)"
2024-03-12T09:30:52.087Z info: (5/12) Updated existing measure "Profit EUR"
2024-03-12T09:30:53.102Z warn: (6/12) Found an unknown master item type: "measur". Ignoring this line in the imported file.
2024-03-12T09:30:54.119Z info: (7/12) Created new measure "Profit EUR (LY)"
2024-03-12T09:30:55.165Z info: (8/12) Created new dimension "Country"
2024-03-12T09:30:56.181Z info: (9/12) Created new dimension "Sales month"
2024-03-12T09:30:57.227Z info: (10/12) Updated existing dimension "Salesperson"
2024-03-12T09:30:58.258Z info: (11/12) Updated existing dimension "Color"
2024-03-12T09:30:59.292Z info: (12/12) Updated existing drill-down dimension "DimDrill"
2024-03-12T09:31:00.308Z info: Imported 12 master items from Excel file ./ctrl-q-master-items.xlsx

NOTE: A sample defintions Excel file is available in the GitHub repository. That file contains examples of most combinations of master item types and properties.

How to get correct color JSONs

If colors are to be associated with master items, the colors must be specified in JSON format, in the correct columns in the Excel file.

The easiest way to get the correct JSONs is to create a master item in the Sense web UI, set the master item’s color, and then use Ctrl-Q’s master-item-dim-get and master-item-measure-get commands to view the master item(s), either as a table or as JSON.
This will show you what the structure of the JSON looks like, or even provide you with the correct JSON if you entered the desired color info in the Sense web UI.

Different master item types have different coloring options:

  • Drill-down dimensions
    • A general dimension color set in the Excel file’s column specified by the --col-master-item-color option.
  • Single dimensions
    • A general dimension color set in the Excel file’s column specified by the --col-master-item-color option.
    • A per-value color that can be used to assign different colors to different values of the dimension. Set in the Excel file’s column specified by the --col-master-item-per-value-color option.
  • Measures
    • A general measure color set in the Excel file’s column specified by the --col-master-item-color option.
    • Segment colors that can be used to assign colors to value ranges of the measure. Set in the Excel file’s column specified by the --col-master-item-per-value-color option.

Let’s look at some examples.

Here we want to get the JSON for the color of the master dimension “Country”.

.\ctrl-q.exe master-item-dim-get `
--host pro2-win1.lab.ptarmiganlabs.net `
--auth-user-dir LAB `
--auth-user-id goran `
--app-id a3e0f5d2-000a-464f-998d-33d333b175d7 `
--output-format table

The result will be a rather wide table, where the column named Coloring contains the color JSONs.
The color data for the “Country” dimension looks like this:

Dimension color:
{"color":"#bbbbbb","index":-1}

Value colors:
{"colors":[{"value":"Afghanistan","baseColor":{"color":"#8a85c6","index":-1}},{"value":"Albania","ba
seColor":{"color":"#aaaaaa","index":-1}},{"value":"Algeria","baseColor":{"color":"#a16090","index":9
}}],"nul":{"color":"#c8c7a9","index":16},"oth":{"color":"#ffec6e","index":-1},"pal":null,"single":nu
ll,"usePal":true,"autoFill":true}

Let’s format those as proper JSONs to make them more readable.
These JSONs are what would go into the Excel file’s Color and Per-value color columns.

NOTE 1: If unsure about what data to put in some field, just use the ones returned by the master-item-dim-get command.
NOTE 2: The same concept works for drill-down dimensions and measures.

{
  "color": "#bbbbbb",
  "index": -1
}
{
  "colors": [
    {
      "value": "Afghanistan",
      "baseColor": {
        "color": "#8a85c6",
        "index": -1
      }
    },
    {
      "value": "Albania",
      "baseColor":{
        "color":"#aaaaaa",
        "index":-1}
      },
      {
        "value":"Algeria",
        "baseColor":{
          "color":"#a16090",
          "index":9
        }
      }
  ],
  "nul": {
    "color": "#c8c7a9",
    "index": 16
  },
  "oth": {
    "color": "#ffec6e",
    "index": -1
  },
  "pal": null,
  "single":nu
  ll,
  "usePal": true,
  "autoFill": true
}

3.12.3 - Tasks

Import tasks into Qlik Sense

Page contents:


All example below use Windows Terminal/PowerShell.

Import tasks from file

Task definitions can be read from CSV or Excel files.
The options are as follows:

.\ctrl-q.exe task-import --help
Usage: ctrl-q task-import [options]

create tasks based on definitions in a file on disk, optionally also importing apps from QVF files.

Options:
  --log-level <level>                log level (choices: "error", "warn", "info", "verbose", "debug", "silly", default: "info")
  --host <host>                      Qlik Sense server IP/FQDN
  --port <port>                      Qlik Sense repository service (QRS) port (usually 4242 for cert auth, 443 for jwt auth) (default: "4242")
  --schema-version <string>          Qlik Sense engine schema version (default: "12.612.0")
  --virtual-proxy <prefix>           Qlik Sense virtual proxy prefix (default: "")
  --secure <true|false>              https connection to Qlik Sense must use correct certificate. Invalid certificates will result in rejected/failed connection. (default: true)
  --auth-user-dir <directory>        user directory for user to connect with
  --auth-user-id <userid>            user ID for user to connect with
  -a, --auth-type <type>             authentication type (choices: "cert", "jwt", default: "cert")
  --auth-cert-file <file>            Qlik Sense certificate file (exported from QMC) (default: "./cert/client.pem")
  --auth-cert-key-file <file>        Qlik Sense certificate key file (exported from QMC) (default: "./cert/client_key.pem")
  --auth-root-cert-file <file>       Qlik Sense root certificate file (exported from QMC) (default: "./cert/root.pem")
  --auth-jwt <jwt>                   JSON Web Token (JWT) to use for authentication with Qlik Sense server
  -t, --file-type <type>             source file type (choices: "excel", "csv", default: "excel")
  --file-name <filename>             file containing task definitions
  --sheet-name <name>                name of Excel sheet where task info is found
  --update-mode <mode>               create new or update existing tasks (choices: "create", default: "create")
  --limit-import-count <number>      import at most x number of tasks from the source file. Defaults to 0 = no limit (default: 0)
  --sleep-app-upload <milliseconds>  Wait this long before continuing after each app has been uploaded to Sense. Defaults to 1000 = 1 second (default: 1000)
  --import-app                       import Sense app QVFs from specified directory
  --import-app-sheet-name <name>     name of Excel sheet where app definitions are found
  --dry-run                          do a dry run, i.e. do not create any reload tasks - just show what would be done
  -h, --help                         display help for command

The options are almost the same irrespective of source file type:

The --sheet-name is only used/valid/relevant when --file-type is set to excel.
Why? Because there are no sheets/tabs in CSV files.

Source file columns for task defintions

The source file format is quite relaxed, but a few rules apply:

  • The first column in the source file must be the task number.
    • This value uniquely identifies each task that should be imported and should be incremented by one for each task.
    • If this first column is empty the whole row will be ignored.
  • All other columns, mandatory and optional, beyond the first one may be placed in any order.
    • For mandatory columns the names listed below must be used (but they can be placed in any order in the file, except the first column).
    • All mandatory columns must be present in the source file, even if they are not used/empty. For example, there may not be any tasks with schema/scheduled triggers, but the schema trigger columns must still be present in the source file.
  • “Counter” columns are used to indicate that rows in the file are associated.
    • All rows involved in defining a certain task have the same “Task counter” value.
    • All rows involved in defining a certain schema or composite event have the same “Event counter” value.
    • All rows involved in defining a certain composite event rule have the same “Rule counter” value.
  • The file format used when exporting task tables to disk is a superset of the format used for task import. It’s thus a good idea to first do a task export, look at the file format and then adopt as needed before importing.

The mandatory columns in the task definition file are:

Column name Comment Description Valid values
Task counter 1 Counter starting at 1. Increments one step for each task. All rows associated with a specific task should have the same value in this column. Integer > 0
Task type 1 Type of task. In the future Ctrl-Q may support more task types. Reload / External program
Task name 1 Name of the task that will be created. Any string. Emojis allowed πŸ€ͺ.
Task id 1 When creating new tasks a new task ID will always be created. This column is instead used to create task chains: it links a composite trigger in a downstream task with an upstream task via this column’s value. Any string, but to make it easier to verify task chains it’s recommended to use integers or an easy to understand format in this column.
For example “3” or “new-task-3”.
If no downstream task will link to the task being defined, this column can be left empty.
Task enabled 1 Should the created task be enabled or not. 1 / 0 / blank. 1=enabled, 0 or blank=disabled
Task timeout 1 Timeout for the created task, i.e. number of seconds the task is allowed to run before it’s aborted. Seconds
Task retries 1 Number of retries to make if the task execution fails. Integer >= 0
App id 1 The Sense app the task should be associated with. If a valid GUID is specified it’s assumed to be an app id. The task will be associated with that app. If the app id starts with newapp- it is a reference to an app that is imported during the current Ctrl-Q execution. The integer following newapp- is the value in the App counter column in the Excel definitions file.
Partial reload 1 Should the task do a partial or full reload of the app? 1 / 0 / blank. 1=true, 0 or blank=false
Manually triggered 1 Is the task manually triggered or not? 1 / 0 / blank. 1=true, 0 or blank=false
Tags 1 Tags to set on the created task. Format is “tag1 / tag2 / tag with spaces in it”, i.e. separate tag names by “space-forward slash-space”.
Custom properties 1 Custom properties to set on the created task. Format is “CustPropName1=Value1 / CustPropName2=Value2”
Event counter 2 Counter identifying events associated with the task defined in the previous line. One task can have zero or more events associated with it. Integer > 0
Event type 2 Which event type does this line specify? Schema events deal with time-based execution of the task. Composite events are used to build task chains. Schema / Composite
Event name 2 Name of the event. Any string
Event enabled 2 Is event enabled. 1 / 0 / blank. 1=enabled, 0 or blank=disabled
Schema increment option 3 Type of schema event. For reference only, not used when Sense evaluates schema events. once / hourly / daily / weekly / monthly / custom
Schema increment description 3 Structured description of the schema increment option. For reference only, not used when Sense evaluates schema events. Integers separated by space, e.g. “0 0 1 0” for weekly
Daylight savings time 3 Control how the schema event should deal with dayligt savings time. ObserveDaylightSavingTime / PermanentStandardTime / PermanentDaylightSavingTime
Schema start 3 First valid time for the schema event. The event will not fire before this moment. A valid timestamp string, e.g. 2022-10-19T10:19:30.000
Schema expiration 3 Last valid time for the schema event. The event will not fire after this moment. A valid timestamp string or 9999-01-01T00:00:00.000 to signify “never”
Schema filter description 3 Used to control when a schema event is allower to trigger. More info here. Default: “* _ - _ * * *”
Schema time zone 3 Time zone the schema event is evaluated in E.g. “Europe/Paris”
Time contstraint seconds 4 Used for composite events. Defines a window in which all dependent tasks have to complete. Integer >= 0
Time contstraint minutes 4 Used for composite events. Defines a window in which all dependent tasks have to complete. Integer >= 0
Time contstraint hours 4 Used for composite events. Defines a window in which all dependent tasks have to complete. Integer >= 0
Time contstraint days 4 Used for composite events. Defines a window in which all dependent tasks have to complete. Integer >= 0
Rule counter 4 Counter identifying rules that define upstream task executions the current task is depending on. Integer > 0
Rule state 4 Is the rule waiting for success or failure of upstream task? TaskSuccessful / TaskFail
Rule task name Name of the rule Any string
Rule task id 4 Reference to the upstream task. Any string (if referring to a task within the same file), or a valid id of a task that already exists in Sense.
Two options exist: If the “Rule task id” has the same value as the “Task id” of another task in the source file, those two tasks will be linked via this rule. If the “Rule task id” refers to an existing task id in Sense, the new rule will link to that existing task.

Meaning of “Comment” column above:

1: These columns are required for all lines where top-level task information is defined.
2: These columns are required for all lines where general event info (shared for schema and composite events) is defined. There may be zero or more such lines for a specific task.
3: These columns are required for all lines where schema events info are defined.
4: These columns are required for all lines where composite events (“task chains”) are defined.

Source file columns for app import definitions

If apps should be imported (by means of the --import-app option) an Excel file must be provided with info about what app QVF files should be imported, as well as details about each app import.
A sheet name (where the app details are found) in the Excel file must also be specified using the --import-app-sheet-name option.

The columns (case sensitive!) in the app import definition file are:

Column name Description Valid values
App counter Counter starting at 1. Increments one step for each app. Integer > 0
App name Name of the app that will be created based on the specified QVF file. Any string. Emojis allowed.
QVF directory Directory where app QVF files are stored Any valid path, absolute or relative.
QVF name Name of QVD file, including extension. Any valid file name.
Exclude data connections Should data connections stored in the QVF file be excluded during app import or not. true / false
App tags Tags to set on the imported app. Format is “tag1 / tag2 / tag with spaces in it”, i.e. separate tag names by “space-forward slash-space”.
App custom properties Custom properties to set on the imported app. Format is “CustPropName1=Value1 / CustPropName2=Value2”
Owner user directory If app owner should be set for this app, specify the user directory name here. Both user directory and user id must be correctly defined for the app owner to be updated. Any user directory currently defined in the QMC, or Internal for Sense internal accounts.
Owner user id If app owner should be set for this app, specify the user id here. Both user directory and user id must be correctly defined for the app owner to be updated. Any user ID defined in the user directory defined in Owner user directory column (above).
Publish to stream If this app should be published, specify stream id or name here. If the id is not associated with a stream or the specified stream name does not exist the app will not be published Any existing stream name or id associated with an existing stream.
Publish options
(optional)
Specify publish options here, for example if an already published app with the same name should be overwritten or not.
The default behaviour is publish-replace, which will be used when no “Publish options” column is present in the Excel sheet or that column exists but is empty.
publish-replace: If there already exists a published app with the same name in the specified stream, replace that app with the new one.
publish-another: If there already exists a published app with the same name in the specified stream, publish tnother one.
delete-publish: First delete an already existing app (if there is one), then publish the new app.

The publish options are described in more detail here.

Example: Export tasks to CSV, then import tasks from same CSV

This example will

  1. Export ca 50 tasks to a CSV file
  2. Import tasks from the just created CSV file

The CSV file created during the task export will contain some columns that are not needed during task import (last execution timestamp for each task and similar).
That’s fine though, during the task import Ctrl-Q will only look at the required columns and simply disregard all other columns.

Export tasks to CSV file:

.\ctrl-q.exe task-get `
--auth-type cert `
--host pro2-win1.lab.ptarmiganlabs.net `
--auth-user-dir LAB `
--auth-user-id goran `
--output-format table `
--output-dest file `
--output-file-name tasks.csv `
--output-file-format csv
2024-03-12T09:33:25.950Z info: -----------------------------------------------------------
2024-03-12T09:33:25.950Z info: | Ctrl-Q
2024-03-12T09:33:25.950Z info: |
2024-03-12T09:33:25.950Z info: | Version      : 3.16.0
2024-03-12T09:33:25.950Z info: | Log level    : info
2024-03-12T09:33:25.950Z info: |
2024-03-12T09:33:25.950Z info: | Command      : task-get
2024-03-12T09:33:25.964Z info: |              : get info about one or more tasks
2024-03-12T09:33:25.964Z info: |
2024-03-12T09:33:25.964Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T09:33:25.964Z info: |
2024-03-12T09:33:25.964Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T09:33:25.964Z info: ----------------------------------------------------------
2024-03-12T09:33:25.964Z info:
2024-03-12T09:33:26.089Z info: Successfully retrieved 28 tags from QSEoW
2024-03-12T09:33:27.918Z info: βœ… Writing task table to disk file "tasks.csv".

Now let’s import tasks from the tasks.csv file:

.\ctrl-q.exe task-import `
--auth-type cert `
--host pro2-win1.lab.ptarmiganlabs.net `
--auth-cert-file ./cert/client.pem `
--auth-cert-key-file ./cert/client_key.pem `
--auth-user-dir LAB `
--auth-user-id goran `
--file-type csv `
--file-name tasks.csv

It’s worth noting that all the created tasks will be linked into the task chains that existed when the tasks where first exported into the CSV file.
This happens because the composite event rules that were exported into the CSV file (i.e. “start the task when task A and task B have successfully finished reloaded”) contain task IDs that point to already existing reload tasks in Sense.
When that’s the case the newly created tasks (based on the info in the CSV file) will link to those existing tasks.

This way a newly created task (based on info in the CSV file) can still be configured to start after some already existing task finish reloading.

Note how Ctrl-Q first creates the reload tasks and any associated schedule triggers in a first step, then add any composite triggers in the second step.
This is needed as a composite trigger may refer to an already existing and/or a newly created task (or multiple tasks of course), i.e. all tasks must first be created. Only then is it possible to create composite triggers.

2024-03-12T09:34:09.780Z info: -----------------------------------------------------------
2024-03-12T09:34:09.780Z info: | Ctrl-Q
2024-03-12T09:34:09.780Z info: |
2024-03-12T09:34:09.780Z info: | Version      : 3.16.0
2024-03-12T09:34:09.780Z info: | Log level    : info
2024-03-12T09:34:09.780Z info: |
2024-03-12T09:34:09.794Z info: | Command      : task-import
2024-03-12T09:34:09.794Z info: |              : create tasks based on definitions in a file on disk, optionally also importing apps from QVF files.
2024-03-12T09:34:09.794Z info: |
2024-03-12T09:34:09.794Z info: | Run Ctrl-Q with the '--help' option to see a list of all available options for this command.
2024-03-12T09:34:09.794Z info: |
2024-03-12T09:34:09.794Z info: | https://github.com/ptarmiganlabs/ctrl-q
2024-03-12T09:34:09.794Z info: ----------------------------------------------------------
2024-03-12T09:34:09.794Z info:
2024-03-12T09:34:09.794Z info: Import tasks from definitions in file "tasks.csv"
2024-03-12T09:34:09.935Z info: Successfully retrieved 28 tags from QSEoW
2024-03-12T09:34:10.044Z info: Successfully retrieved 31 custom properties from QSEoW
2024-03-12T09:34:10.155Z info: -------------------------------------------------------------------
2024-03-12T09:34:10.155Z info: Creating tasks...
2024-03-12T09:34:10.294Z info: (1) Created new external program task "App snapshots end of September 2022", new task id: 88bdbd10-eb45-4490-ac14-596e7e9bdaf3.
2024-03-12T09:34:10.419Z info: (2) Created new external program task "Ext program task chaining 1", new task id: 32222dad-ec1b-4a74-bd39-430619bba874.
2024-03-12T09:34:10.529Z info: (3) Created new external program task "Ext program task chaining 1", new task id: 1be0d039-b68f-4916-9fa5-2aa9d27f8344.
2024-03-12T09:34:10.686Z info: (4) Created new external program task "Ext task 1", new task id: ca37875a-d977-4d0f-a034-f2d9e3aee85c.
2024-03-12T09:34:10.810Z info: (5) Created new external program task "Ext task 2", new task id: d6b324ee-73e9-43dc-80be-164bd16daef8.
2024-03-12T09:34:10.951Z info: (6) Created new external program task "New external program task 1", new task id: 2a9f7d8d-9f98-4cb5-af0b-c0b7551064c4.
2024-03-12T09:34:11.077Z info: (7) Created new external program task "Node-RED ext program task demo 1", new task id: 0deb6ea6-896a-4363-a28c-ff0e227d4fc8.
2024-03-12T09:34:11.186Z info: (8) Created new external program task "PowerShell export data connections", new task id: 7eecf18d-479b-4834-9b95-2b5f71cc0a7b.
2024-03-12T09:34:11.388Z info: (9) Created new external program task "PowerShell export tags (ext pgm task)", new task id: 44cef627-81ce-4a5e-ab83-13390d822d93.
2024-03-12T09:34:11.498Z info: (10) Created new external program task "Sample external task", new task id: cfe6f6fe-b557-4e11-af92-1ec7dc05221b.
2024-03-12T09:34:12.077Z info: (11) Created new external program task "[ctrl-q task chain 3] Ext program task chaining", new task id: a751e35a-8ffe-4ee9-bc5f-e863c1f7c1b0.
2024-03-12T09:34:12.186Z info: (12) Created new external program task "[ctrl-q task chain 3] Ext program task chaining", new task id: f45382b1-1b6d-4f32-9549-90fe0ba65aeb.
2024-03-12T09:34:12.498Z info: (13) Created new external program task "[ctrl-q task chain 4] Ext program task chaining", new task id: f03da04c-8d0a-48ee-8643-42d429c69e12.
2024-03-12T09:34:12.623Z info: (14) Created new external program task "[ctrl-q task chain 4] Ext program task chaining", new task id: e00e097a-0316-4fe5-a767-82b00910e774.
2024-03-12T09:34:12.888Z info: (15) Created new reload task "Butler test failing reloads 1 task", new task id: ff1359b8-ff1e-4fef-b871-c44b2afce877.
2024-03-12T09:34:13.139Z info: (16) Created new reload task "Butler test failing reloads 1 task", new task id: a2a21c75-6fcd-4341-b927-47fd7fc7074d.
2024-03-12T09:34:13.436Z info: (17) Created new reload task "Manually triggered reload of Always failing reload (no delay)", new task id: f97e71c4-7a73-4de9-ade8-93dc87abb5f5.
2024-03-12T09:34:13.716Z info: (18) Created new reload task "Manually triggered reload of Butler 7 Slack debug", new task id: 835c8937-d3c5-45a8-93b1-42f987dbf6e8.
2024-03-12T09:34:13.983Z info: (19) Created new reload task "Manually triggered reload of Butler regression test app 1", new task id: 2653f70f-3d12-46f2-b45d-5af48f1c1708.
2024-03-12T09:34:14.217Z info: (20) Created new reload task "Manually triggered reload of Butler regression test app 2", new task id: 81d5ac39-ac60-432e-9331-211454282d01.
2024-03-12T09:34:14.463Z info: (21) Created new reload task "Manually triggered reload of Butler regression test app 3", new task id: 921d36b5-d46e-46f2-9cb8-1c2ef1dad4fe.
...
...
2024-03-12T09:34:38.450Z info: -------------------------------------------------------------------
2024-03-12T09:34:38.450Z info: Creating composite events for the just created tasks...
2024-03-12T09:34:38.607Z info: CREATE COMPOSITE EVENT IN QSEOW: Event name="When [ctrl-q 2] done" for task ID a751e35a-8ffe-4ee9-bc5f-e863c1f7c1b0. Result: 201/Created.
2024-03-12T09:34:38.747Z info: CREATE COMPOSITE EVENT IN QSEOW: Event name="Start ext pgm task when reload task done" for task ID a751e35a-8ffe-4ee9-bc5f-e863c1f7c1b0. Result: 201/Created.
2024-03-12T09:34:38.888Z info: CREATE COMPOSITE EVENT IN QSEOW: Event name="When [ctrl-q task chain 3] done" for task ID f03da04c-8d0a-48ee-8643-42d429c69e12. Result: 201/Created.
2024-03-12T09:34:39.012Z info: CREATE COMPOSITE EVENT IN QSEOW: Event name="When HR metrics done" for task ID 2079c888-537b-4bce-8252-8bac8517eff7. Result: 201/Created.
2024-03-12T09:34:39.137Z info: CREATE COMPOSITE EVENT IN QSEOW: Event name="When Operations monitor has reloaded" for task ID 73e89949-51ea-4b64-b74a-1aa625e064e0. Result: 201/Created.
2024-03-12T09:34:39.263Z info: CREATE COMPOSITE EVENT IN QSEOW: Event name="When NYT comments done" for task ID 28541735-b57a-4b03-85fe-d09062a9adfa. Result: 201/Created.
2024-03-12T09:34:39.395Z info: CREATE COMPOSITE EVENT IN QSEOW: Event name="Task event trigger" for task ID e818fa3f-c8ca-4399-ab21-c61c05087fb9. Result: 201/Created.
...
...

Example: Import apps from QVF files and create associated reload tasks

This example will

  1. Import 3 apps from QVF files. Definitions of which files to import are stored in an Excel file.
    1. Tags and custom properties will be set for the apps.
    2. New app owners will be set.
    3. The apps will be published to streams.
  2. Create reload tasks based on definitions in same Excel file (but on a different sheet).
  3. The reload tasks will be associated with the previously imported apps.
  4. The reload tasks will be linked in a task chain.
  5. Some imported tasks will be triggered by already existing Sense tasks while others will be triggered by newly created tasks.
  6. There will be a 2 second delay after each QVF file has finished uploading, to reduce load on the Sense server.

The task import command looks like this in PowerShell:

.\ctrl-q.exe task-import `
--auth-type cert `
--host pro2-win1.lab.ptarmiganlabs.net `
--auth-cert-file ./cert/client.pem `
--auth-cert-key-file ./cert/client_key.pem `
--auth-user-dir LAB `
--auth-user-id goran `
--file-type excel `
--file-name tasks.xlsx `
--sheet-name "Ctrl-Q task import 1" `
--import-app `
--import-app-sheet-name "App import" `
--sleep-app-upload 2000

Some comments about the above command:

  • The certificates used to authenticate with Sense are stored in the cert subdirectory, right under where Ctrl-Q is started from.
    That’s the default locataion, meaning that the options --auth-cert-file and --auth-cert-key-file are really not needed in this example.
  • The app and task definitions are found in a Excel file (--file-type option) named tasks.xlsx.
  • Task definitions are found in the Excel file’s sheet named Ctrl-Q task import.
  • The --import-app tells Ctrl-Q to import certain apps before tasks defined in the Ctrl-Q task import 1 sheet are created. This parameter is optional. If it is not included no apps will be imported.
  • The --import-app-sheet-name tells Ctrl-Q that a list of apps to be imported (and import parameters for each app) is found the App import sheet of the Excel file.

NOTE 1: A sample defintions Excel file is available in the GitHub repository. NOTE 2: The structure of the Excel sheet specified by the --import-app-sheet-name is described above.

Defining tasks to be created

The format is the same as when importing tasks only (and no apps).
More info here.

Associating new tasks with imported and existing apps

A few special cases apply when tasks are created and apps also imported.

In this situation it’s important that tasks can be associated with either the newly imported apps or already existing apps.
Similarly, for composite task triggers (used to create task chains) it’s important that either newly created tasks or already existing tasks can be referenced.

Let’s say the following three QVF files should be imported into Sense.
Note the App counter column, with values 1, 2 and 3.

QVF app files that should be imported into Qlik Sense

Now let’s look at the tasks to be created. In the image below the main info (task name etc) for each of the four tasks is shown.
Note that the Task id column has both proper GUIDs and simple integers in it.
This will be important when defining composite triggers.

Reload tasks should be created in Qlik Sense

Finally let’s look at the composite triggers associated with the last of the four tasks.
That composite trigger relies on two tasks, one that should fail (TaskFail) to trigger the composite trigger and one that should succeed (TaskSuccessful).

The important part here is the last column, Rule task id:

  • If that column contains a valid GUID it is assumed to be a reference to an existing task.
  • If the column contains an integer it is assumed to be a reference to a newly created task.
    Which task? The one with the same integer number in the Task id column (see previous paragraph).

This way it’s possible to chain new reload tasks to both already existing tasks and new ones.

Reload tasks should be created in Qlik Sense

4 - Examples

Examples explaining how to use Ctrl-Q.

4.1 - Dissecting the task definition file

Importing task definitions can be extremely useful when you want to create a large number of tasks in Sense, but setting up the task definitions file can be a bit tricky. This page explains how to do it.

Page contents:


All example below use Windows Terminal/PowerShell.

Task file examples

The task definition file is a CSV or Excel file that contains all the information needed to create tasks in Sense.
Below you find increasingly complex examples of how to use the task definition file.

Example 1: Single reload task with no triggers

One tag, one custom property, no triggers.
A new task is created.

---
Single reload task
---
flowchart LR
  subgraph New reload task 1
    A[Reload]
  end
| Task counter | Task type | Task name         | Task id | Task enabled | Task timeout | Task retries | App id                               | Partial reload | Manually triggered | Ext program path | Ext program parameters | Task status | Task started | Task ended | Task duration | Task executedon node | Tags            | Custom properties | Event counter | Event type | Event name | Event enabled | Event created date | Event modified date | Event modified by | Schema increment option | Schema increment description | Daylight savings time | Schema start | Schema expiration | Schema filter description | Schema time zone | Time contstraint seconds | Time contstraint minutes | Time contstraint hours | Time contstraint days | Rule counter | Rule state | Rule task name | Rule task id |
| ------------ | --------- | ----------------- | ------- | ------------ | ------------ | ------------ | ------------------------------------ | -------------- | ------------------ | ---------------- | ---------------------- | ----------- | ------------ | ---------- | ------------- | -------------------- | --------------- | ----------------- | ------------- | ---------- | ---------- | ------------- | ------------------ | ------------------- | ----------------- | ----------------------- | ---------------------------- | --------------------- | ------------ | ----------------- | ------------------------- | ---------------- | ------------------------ | ------------------------ | ---------------------- | --------------------- | ------------ | ---------- | -------------- | ------------ |
| 1            | Reload    | New reload task 1 | task-1  | 1            | 1440         | 0            | 4716f284-7790-45c3-a0a5-154c898766a0 | false          | 1                  |                  |                        |             |              |            | 0:00:00       |                      | Butler 5.0 demo | TaskPriority=High |               |            |            |               |                    |                     |                   |                         |                              |                       |              |                   |                           |                  |                          |                          |                        |                       |              |            |                |              |

Example 2: Single reload task with schema trigger

A single schema trigger called “weekly” is added to the created task.

---
Single reload task with schema trigger
---
flowchart LR
  subgraph New reload task 1
    A{{"fa:fa-clock"}} -- Weekly --> B[Reload]
  end
| Task counter | Task type | Task name         | Task id | Task enabled | Task timeout | Task retries | App id                               | Partial reload | Manually triggered | Ext program path | Ext program parameters | Task status | Task started | Task ended | Task duration | Task executedon node | Tags            | Custom properties | Event counter | Event type | Event name | Event enabled | Event created date | Event modified date | Event modified by | Schema increment option | Schema increment description | Daylight savings time | Schema start | Schema expiration | Schema filter description | Schema time zone | Time contstraint seconds | Time contstraint minutes | Time contstraint hours | Time contstraint days | Rule counter | Rule state | Rule task name | Rule task id |
| ------------ | --------- | ----------------- | ------- | ------------ | ------------ | ------------ | ------------------------------------ | -------------- | ------------------ | ---------------- | ---------------------- | ----------- | ------------ | ---------- | ------------- | -------------------- | --------------- | ----------------- | ------------- | ---------- | ---------- | ------------- | ------------------ | ------------------- | ----------------- | ----------------------- | ---------------------------- | --------------------- | ------------ | ----------------- | ------------------------- | ---------------- | ------------------------ | ------------------------ | ---------------------- | --------------------- | ------------ | ---------- | -------------- | ------------ |
| 1            | Reload    | New reload task 1 | task-1  | 1            | 1440         | 0            | 4716f284-7790-45c3-a0a5-154c898766a0 | false          | 1                  |                  |                        |             |              |            | 0:00:00       |                      | Butler 5.0 demo | TaskPriority=High |               |            |            |               |                    |                     |                   |                         |                              |                       |              |                   |                           |                  |                          |                          |                        |                       |              |            |                |              |
| 1            |           |                   |         |              |              |              |                                      |                |                    |                  |                        |             |              |            |               |                      |                 |                   | 1             | Schema     | Weekly     |               |                    |                     | LAB\\goran        | weekly                  | 0 0 1 0                      | ObserveDaylightSavingTime | 2022-10-19T10:19:30.000 | 9999-01-01T00:00:00.000 | * * - 3 1 * * *           | Europe/Paris     |                          |                          |                        |                       |              |            |                |              |

Example 3: Single reload task triggered by existing reload task

The newly created task will be triggered by an already existing task, identified by its task ID.

---
Single reload task with composite trigger
---
flowchart LR
  subgraph Existing task
    A["Existing task
    502fbe0c-6178-447b-ac28-4e531fec2d8d"]
  end
  subgraph New reload task 1
    B_comptrigger[["Composite trigger"]]
    style B_comptrigger fill:#bbf,stroke-width:2px,stroke-dasharray: 5 5
    B[Reload]
  end
  A -- Success --> B_comptrigger
  B_comptrigger --> B
| Task counter | Task type | Task name         | Task id | Task enabled | Task timeout | Task retries | App id                               | Partial reload | Manually triggered | Ext program path | Ext program parameters | Task status | Task started | Task ended | Task duration | Task executedon node | Tags            | Custom properties | Event counter | Event type | Event name           | Event enabled | Event created date | Event modified date | Event modified by | Schema increment option | Schema increment description | Daylight savings time | Schema start | Schema expiration | Schema filter description | Schema time zone | Time contstraint seconds | Time contstraint minutes | Time contstraint hours | Time contstraint days | Rule counter | Rule state     | Rule task name                                    | Rule task id                         |
| ------------ | --------- | ----------------- | ------- | ------------ | ------------ | ------------ | ------------------------------------ | -------------- | ------------------ | ---------------- | ---------------------- | ----------- | ------------ | ---------- | ------------- | -------------------- | --------------- | ----------------- | ------------- | ---------- | -------------------- | ------------- | ------------------ | ------------------- | ----------------- | ----------------------- | ---------------------------- | --------------------- | ------------ | ----------------- | ------------------------- | ---------------- | ------------------------ | ------------------------ | ---------------------- | --------------------- | ------------ | -------------- | ------------------------------------------------- | ------------------------------------ |
| 1            | Reload    | New reload task 1 | task-1  | 1            | 1440         | 0            | 4716f284-7790-45c3-a0a5-154c898766a0 | 0              | 1                  |                  |                        |             |              |            | 0:00:00       |                      | Butler 5.0 demo | TaskPriority=High |               |            |                      |               |                    |                     |                   |                         |                              |                       |              |                   |                           |                  |                          |                          |                        |                       |              |                |                                                   |                                      |
| 1            |           |                   |         |              |              |              |                                      |                |                    |                  |                        |             |              |            |               |                      |                 |                   | 1             | Composite  | When HR metrics done | 1             |                    |                     | LAB\\goran        |                         |                              |                       |              |                   |                           |                  | 0                        | 360                      | 0                      | 0                     |              |                |                                                   |                                      |
| 1            |           |                   |         |              |              |              |                                      |                |                    |                  |                        |             |              |            |               |                      |                 |                   | 1             |            |                      |               |                    |                     |                   |                         |                              |                       |              |                   |                           |                  |                          |                          |                        |                       | 1            | TaskSuccessful | Manually triggered reload of HR metrics 2015-2020 | 6a42a7d0-bee9-4609-b340-8c8c50b3c4d9 |
|              |           |                   |         |              |              |              |                                      |                |                    |                  |                        |             |              |            |               |                      |                 |                   |               |            |                      |               |                    |                     |                   |                         |                              |                       |              |                   |                           |                  |                          |                          |                        |                       |              |                |                                                   |                                      |

Example 4: Two reload tasks, one triggering the other

Two new tasks are created.

  • The first task is triggered by an hourly schema trigger.
  • The second is triggered by successful completion of the first one, plus a daily schema trigger.
---
Two reload tasks, one triggering the other
---
flowchart LR
  subgraph New reload task 1
    A{{"fa:fa-clock"}}
    C[Reload]
  end    
  subgraph New reload task 2
    B{{"fa:fa-clock"}}
    D[Reload]
  end    
  A -- Hourly --> C -- Success --> D
  B -- Daily --> D
| Task counter | Task type | Task name         | Task id | Task enabled | Task timeout | Task retries | App id                               | Partial reload | Manually triggered | Ext program path | Ext program parameters | Task status | Task started | Task ended | Task duration | Task executedon node | Tags            | Custom properties | Event counter | Event type | Event name              | Event enabled | Event created date | Event modified date | Event modified by | Schema increment option | Schema increment description | Daylight savings time     | Schema start            | Schema expiration       | Schema filter description | Schema time zone | Time contstraint seconds | Time contstraint minutes | Time contstraint hours | Time contstraint days | Rule counter | Rule state     | Rule task name | Rule task id |
| ------------ | --------- | ----------------- | ------- | ------------ | ------------ | ------------ | ------------------------------------ | -------------- | ------------------ | ---------------- | ---------------------- | ----------- | ------------ | ---------- | ------------- | -------------------- | --------------- | ----------------- | ------------- | ---------- | ----------------------- | ------------- | ------------------ | ------------------- | ----------------- | ----------------------- | ---------------------------- | ------------------------- | ----------------------- | ----------------------- | ------------------------- | ---------------- | ------------------------ | ------------------------ | ---------------------- | --------------------- | ------------ | -------------- | -------------- | ------------ |
| 1            | Reload    | New reload task 1 | task-1  | 1            | 1440         | 0            | 4716f284-7790-45c3-a0a5-154c898766a0 | 0              | 1                  |                  |                        |             |              |            | 0:00:00       |                      | Butler 5.0 demo | TaskPriority=High |               |            |                         |               |                    |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       |              |                |                |              |
| 1            |           |                   |         |              |              |              |                                      |                |                    |                  |                        |             |              |            |               |                      |                 |                   | 1             | Schema     | Hourly                  |               |                    |                     | LAB\\goran        | hourly                  | 30 0 0 0                     | ObserveDaylightSavingTime | 2021-12-08T14:21:49.000 | 9999-01-01T00:00:00.000 | * * - * * * * *           | Europe/Paris     |                          |                          |                        |                       |              |                |                |              |
| 2            | Reload    | New reload task 2 | task-2  | 1            | 1440         | 0            | df013a07-d219-46c8-8d32-09b87fd87553 | 0              | 1                  |                  |                        |             |              |            | 0:00:00       |                      | Butler 5.0 demo | TaskPriority=High |               |            |                         |               |                    |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       |              |                |                |              |
| 2            |           |                   |         |              |              |              |                                      |                |                    |                  |                        |             |              |            |               |                      |                 |                   | 1             | Schema     | Daily                   | 1             |                    |                     | LAB\\goran        | daily                   | 0 0 1 0                      | ObserveDaylightSavingTime | 2022-10-17T11:37:26.000 | 9999-01-01T00:00:00.000 | * * - * * * * *           | Europe/Paris     |                          |                          |                        |                       |              |                |                |              |
| 2            |           |                   |         |              |              |              |                                      |                |                    |                  |                        |             |              |            |               |                      |                 |                   | 1             | Composite  | When reload task 1 done | 1             |                    |                     | LAB\\goran        |                         |                              |                           |                         |                         |                           |                  | 0                        | 360                      | 0                      | 0                     |              |                |                |              |
| 2            |           |                   |         |              |              |              |                                      |                |                    |                  |                        |             |              |            |               |                      |                 |                   | 1             |            |                         |               |                    |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       | 1            | TaskSuccessful |                | task-1       |

Example 5: External program task, triggered by schema event

---
External program task, triggered by schema event
---
flowchart LR
  subgraph New external program task 1
    A{{"fa:fa-clock"}}
    B[Ext. program]
  end
  A -- Daily --> B
| Task counter | Task type        | Task name                   | Task id | Task enabled | Task timeout | Task retries | App id | Partial reload | Manually triggered | Ext program path                                               | Ext program parameters                                 | Task status | Task started | Task ended | Task duration | Task executedon node | Tags | Custom properties                     | Event counter | Event type | Event name | Event enabled | Event created date | Event modified date | Event modified by | Schema increment option | Schema increment description | Daylight savings time     | Schema start            | Schema expiration       | Schema filter description | Schema time zone | Time contstraint seconds | Time contstraint minutes | Time contstraint hours | Time contstraint days | Rule counter | Rule state | Rule task name | Rule task id |
| ------------ | ---------------- | --------------------------- | ------- | ------------ | ------------ | ------------ | ------ | -------------- | ------------------ | -------------------------------------------------------------- | ------------------------------------------------------ | ----------- | ------------ | ---------- | ------------- | -------------------- | ---- | ------------------------------------- | ------------- | ---------- | ---------- | ------------- | ------------------ | ------------------- | ----------------- | ----------------------- | ---------------------------- | ------------------------- | ----------------------- | ----------------------- | ------------------------- | ---------------- | ------------------------ | ------------------------ | ---------------------- | --------------------- | ------------ | ---------- | -------------- | ------------ |
| 1            | External program | New external program task 1 | task-1  | 1            | 1440         | 3            |        |                |                    | C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe | -File \\\\pro2-win1\\c$\\tools\\script\\ext_task_1.ps1 |             |              |            | 0:00:00       |                      | api1 | Department=Finance / Department=Sales |               |            |            |               |                    |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       |              |            |                |              |
| 1            |                  |                             |         |              |              |              |        |                |                    |                                                                |                                                        |             |              |            |               |                      |      |                                       | 1             | Schema     | Daily      |               |                    |                     | LAB\\goran        | daily                   | 0 0 1 0                      | ObserveDaylightSavingTime | 2020-05-31T20:34:18.000 | 9999-01-01T00:00:00.000 | * * - * * * * *           | Europe/Paris     |                          |                          |                        |                       |              |            |                |              |

Example 6: External program task, triggered by existing tasks

---
External program task, triggered by existing tasks
---
flowchart LR
    A["Existing reload task
    9b8bd484-9cd9-4c83-b8e5-019176364b82"]
    B["Existing external program task
    d5f0b635-1feb-465e-a9c8-33f6e74b1248"]
    subgraph New external program task 1
      C[Ext. program]
      C_comptrigger[["Composite trigger"]]
      style C_comptrigger fill:#bbf,stroke-width:2px,stroke-dasharray: 5 5
      C_comptrigger --> C
    end
    A -- Success --> C_comptrigger
    B -- Fail --> C_comptrigger
| Task counter | Task type        | Task name                   | Task id | Task enabled | Task timeout | Task retries | App id | Partial reload | Manually triggered | Ext program path                                               | Ext program parameters                                 | Task status | Task started | Task ended | Task duration | Task executedon node | Tags | Custom properties                     | Event counter | Event type | Event name                           | Event enabled | Event created date | Event modified date | Event modified by | Schema increment option | Schema increment description | Daylight savings time | Schema start | Schema expiration | Schema filter description | Schema time zone | Time contstraint seconds | Time contstraint minutes | Time contstraint hours | Time contstraint days | Rule counter | Rule state     | Rule task name | Rule task id                         |
| ------------ | ---------------- | --------------------------- | ------- | ------------ | ------------ | ------------ | ------ | -------------- | ------------------ | -------------------------------------------------------------- | ------------------------------------------------------ | ----------- | ------------ | ---------- | ------------- | -------------------- | ---- | ------------------------------------- | ------------- | ---------- | ------------------------------------ | ------------- | ------------------ | ------------------- | ----------------- | ----------------------- | ---------------------------- | --------------------- | ------------ | ----------------- | ------------------------- | ---------------- | ------------------------ | ------------------------ | ---------------------- | --------------------- | ------------ | -------------- | -------------- | ------------------------------------ |
| 1            | External program | New external program task 1 | task-1  | 1            | 1440         | 3            |        |                |                    | C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe | -File \\\\pro2-win1\\c$\\tools\\script\\ext_task_1.ps1 |             |              |            | 0:00:00       |                      | api1 | Department=Finance / Department=Sales |               |            |                                      |               |                    |                     |                   |                         |                              |                       |              |                   |                           |                  |                          |                          |                        |                       |              |                |                |                                      |
| 1            |                  |                             |         |              |              |              |        |                |                    |                                                                |                                                        |             |              |            |               |                      |      |                                       | 2             | Composite  | Trigger when upstream tasks are done |               |                    |                     | LAB\\goran        |                         |                              |                       |              |                   |                           |                  | 0                        | 360                      | 0                      | 0                     |              |                |                |                                      |
| 1            |                  |                             |         |              |              |              |        |                |                    |                                                                |                                                        |             |              |            |               |                      |      |                                       | 2             |            |                                      |               |                    |                     |                   |                         |                              |                       |              |                   |                           |                  |                          |                          |                        |                       | 1            | TaskSuccessful |                | 9b8bd484-9cd9-4c83-b8e5-019176364b82 |
| 1            |                  |                             |         |              |              |              |        |                |                    |                                                                |                                                        |             |              |            |               |                      |      |                                       | 2             |            |                                      |               |                    |                     |                   |                         |                              |                       |              |                   |                           |                  |                          |                          |                        |                       | 2            | TaskFail       |                | d5f0b635-1feb-465e-a9c8-33f6e74b1248 |

Example 7: Complex example with multiple tasks and triggers

Note that some composite trigger rules (the ones with UUIDs in them) refer to tasks that already exist in Sense, and some (e.g. “task-2”) refer to tasks that are defined in the task definition file itself.

The flowchart becomes quite complex for this example:

---
Complex example with multiple tasks and triggers
---
flowchart TD
  subgraph New external program task 1
    6751615b-4627-4d86-bd7e-d6bc1f4a81be["Ext. program"]
  end
  subgraph Ext program task chaining 1
    d30b7f54-1b24-4eb0-befc-e97ad7f0daa6["Ext. program"]
  end
  
  subgraph Ext task 1
    6097da0e-50d8-4c0f-b442-49739b556180["Ext. program"]
    A{{"fa:fa-clock"}} -- Weekly --> 6097da0e-50d8-4c0f-b442-49739b556180

    6097da0e-50d8-4c0f-b442-49739b556180_ct_1[["Composite trigger"]]
    style 6097da0e-50d8-4c0f-b442-49739b556180_ct_1 fill:#bbf,stroke-width:2px,stroke-dasharray: 5 5
    
    6097da0e-50d8-4c0f-b442-49739b556180_ct_1 --> 6097da0e-50d8-4c0f-b442-49739b556180
  end

  subgraph Ext task 2
    78db1ac3-0035-4b5c-bf35-14e1cbd2b0bf["Ext. program"]

    78db1ac3-0035-4b5c-bf35-14e1cbd2b0bf_ct_1[["Composite trigger"]]
    style 78db1ac3-0035-4b5c-bf35-14e1cbd2b0bf_ct_1 fill:#bbf,stroke-width:2px,stroke-dasharray: 5 5
    
    B{{"fa:fa-clock"}} -- Weekly --> 78db1ac3-0035-4b5c-bf35-14e1cbd2b0bf
    78db1ac3-0035-4b5c-bf35-14e1cbd2b0bf_ct_1 --> 78db1ac3-0035-4b5c-bf35-14e1cbd2b0bf
  end
  
  subgraph "[ctrl-q task chain 3] Ext program task chaining"
    166e2d6a-89c4-4021-a04d-01c8c20f1cfa["Ext. program"]

    166e2d6a-89c4-4021-a04d-01c8c20f1cfa_ct_1[["Composite trigger"]]
    style 166e2d6a-89c4-4021-a04d-01c8c20f1cfa_ct_1 fill:#bbf,stroke-width:2px,stroke-dasharray: 5 5
    166e2d6a-89c4-4021-a04d-01c8c20f1cfa_ct_1 --> 166e2d6a-89c4-4021-a04d-01c8c20f1cfa
  end

  subgraph "[ctrl-q task chain 4] Ext program task chaining"
    afc250bc-28c3-49a2-8d63-80966749abe3["Ext. program"]

    afc250bc-28c3-49a2-8d63-80966749abe3_ct_1[["Composite trigger"]]
    style afc250bc-28c3-49a2-8d63-80966749abe3_ct_1 fill:#bbf,stroke-width:2px,stroke-dasharray: 5 5
    afc250bc-28c3-49a2-8d63-80966749abe3_ct_1 --> afc250bc-28c3-49a2-8d63-80966749abe3
  end

  subgraph "Butler test failing reloads 1 task"
    3920e8d7-8109-446f-8bb3-5464df03facc["Reload"]
  end

  subgraph "Reload task of Lab 1_1"
    30c6a76a-ece6-4a4a-b476-56155a5a85b8["Reload"]

    30c6a76a-ece6-4a4a-b476-56155a5a85b8_schema_1{{"fa:fa-clock"}} -- Daily --> 30c6a76a-ece6-4a4a-b476-56155a5a85b8
    30c6a76a-ece6-4a4a-b476-56155a5a85b8_schema_2{{"fa:fa-clock"}} -- Custom cron --> 30c6a76a-ece6-4a4a-b476-56155a5a85b8

    30c6a76a-ece6-4a4a-b476-56155a5a85b8_ct_1[["Composite trigger"]]
    style 30c6a76a-ece6-4a4a-b476-56155a5a85b8_ct_1 fill:#bbf,stroke-width:2px,stroke-dasharray: 5 5
    30c6a76a-ece6-4a4a-b476-56155a5a85b8_ct_1 --> 30c6a76a-ece6-4a4a-b476-56155a5a85b8
  end

  subgraph "[ctrl-q task chain 1] Reload task of Ctrl-Q reload chain app 1-1"
    ece63341-7d57-4093-b972-fd130c2290e7["Reload"]
  end

  subgraph "[ctrl-q task chain 2] Reload task of Ctrl-Q reload chain app 2-1"
    ad188c0e-f196-449d-9662-f33998f56b78["Reload"]

    ad188c0e-f196-449d-9662-f33998f56b78_ct_1[["Composite trigger"]]
    style ad188c0e-f196-449d-9662-f33998f56b78_ct_1 fill:#bbf,stroke-width:2px,stroke-dasharray: 5 5
    ad188c0e-f196-449d-9662-f33998f56b78_ct_1 --> ad188c0e-f196-449d-9662-f33998f56b78
  end

  subgraph "[ctrl-q task chain 5.1] Reload task of Ctrl-Q reload chain app 3-1"
    2e549e47-13e7-4f02-91c2-34f7bf3d57eb["Reload"]

    2e549e47-13e7-4f02-91c2-34f7bf3d57eb_ct_1[["Composite trigger"]]
    style 2e549e47-13e7-4f02-91c2-34f7bf3d57eb_ct_1 fill:#bbf,stroke-width:2px,stroke-dasharray: 5 5
    2e549e47-13e7-4f02-91c2-34f7bf3d57eb_ct_1 --> 2e549e47-13e7-4f02-91c2-34f7bf3d57eb
  end

  subgraph "[ctrl-q task chain 5.2] Reload task of Ctrl-Q reload chain app 3-2"
    f402f48a-8590-4fc1-bf5e-ae30b4d9f2eb["Reload"]

    f402f48a-8590-4fc1-bf5e-ae30b4d9f2eb_ct_1[["Composite trigger"]]
    style f402f48a-8590-4fc1-bf5e-ae30b4d9f2eb_ct_1 fill:#bbf,stroke-width:2px,stroke-dasharray: 5 5
    f402f48a-8590-4fc1-bf5e-ae30b4d9f2eb_ct_1 --> f402f48a-8590-4fc1-bf5e-ae30b4d9f2eb
  end

  subgraph "[ctrl-q task chain 6.1] Reload task of Ctrl-Q reload chain app 1-1"
    c7f83305-6fd5-4926-bc1f-abfc05d0729c["Reload"]

    c7f83305-6fd5-4926-bc1f-abfc05d0729c_ct_1[["Composite trigger"]]
    style c7f83305-6fd5-4926-bc1f-abfc05d0729c_ct_1 fill:#bbf,stroke-width:2px,stroke-dasharray: 5 5
    c7f83305-6fd5-4926-bc1f-abfc05d0729c_ct_1 --> c7f83305-6fd5-4926-bc1f-abfc05d0729c
  end

  subgraph "[ctrl-q task chain 7.1] Reload task of Ctrl-Q reload chain app 1-1"
    b9532a39-a69f-4857-acc1-4762a90fd784["Reload"]

    b9532a39-a69f-4857-acc1-4762a90fd784_ct_1[["Composite trigger"]]
    style b9532a39-a69f-4857-acc1-4762a90fd784_ct_1 fill:#bbf,stroke-width:2px,stroke-dasharray: 5 5
    b9532a39-a69f-4857-acc1-4762a90fd784_ct_1 --> b9532a39-a69f-4857-acc1-4762a90fd784
  end

  subgraph "[ctrl-q task chain 8.1] Reload task of Ctrl-Q reload chain app 1-1"
    ad6114d8-9b79-4342-8d2d-b9565506ec1a["Reload"]

    ad6114d8-9b79-4342-8d2d-b9565506ec1a_ct_1[["Composite trigger"]]
    style ad6114d8-9b79-4342-8d2d-b9565506ec1a_ct_1 fill:#bbf,stroke-width:2px,stroke-dasharray: 5 5
    ad6114d8-9b79-4342-8d2d-b9565506ec1a_ct_1 --> ad6114d8-9b79-4342-8d2d-b9565506ec1a
  end

  subgraph "[ctrl-q task chain 9.1] Reload task of Ctrl-Q reload chain app 1-1"
    5b1cdbe5-58a9-4743-ba3f-68a5dc772391["Reload"]

    5b1cdbe5-58a9-4743-ba3f-68a5dc772391_ct_1[["Composite trigger"]]
    style 5b1cdbe5-58a9-4743-ba3f-68a5dc772391_ct_1 fill:#bbf,stroke-width:2px,stroke-dasharray: 5 5
    5b1cdbe5-58a9-4743-ba3f-68a5dc772391_ct_1 --> 5b1cdbe5-58a9-4743-ba3f-68a5dc772391
  end

  subgraph "[ctrl-q task chain 10.1] Reload task of Ctrl-Q reload chain app 1-1"
    08e2cbca-0687-4c96-8914-dbb0e6515b1f["Reload"]

    08e2cbca-0687-4c96-8914-dbb0e6515b1f_ct_1[["Composite trigger"]]
    style 08e2cbca-0687-4c96-8914-dbb0e6515b1f_ct_1 fill:#bbf,stroke-width:2px,stroke-dasharray: 5 5
    08e2cbca-0687-4c96-8914-dbb0e6515b1f_ct_1 --> 08e2cbca-0687-4c96-8914-dbb0e6515b1f
  end

  subgraph "[ctrl-q task chain 11.1] Reload task of Ctrl-Q reload chain app 1-1"
    63206b08-516c-4e43-8fc9-2e47581d0b1a["Reload"]

    63206b08-516c-4e43-8fc9-2e47581d0b1a_ct_1[["Composite trigger"]]
    style 63206b08-516c-4e43-8fc9-2e47581d0b1a_ct_1 fill:#bbf,stroke-width:2px,stroke-dasharray: 5 5
    63206b08-516c-4e43-8fc9-2e47581d0b1a_ct_1 --> 63206b08-516c-4e43-8fc9-2e47581d0b1a
  end


  77f11a41-af3a-4bca-bf67-725be92a88f6[Existing task 77f11a41-af3a-4bca-bf67-725be92a88f6]
  bea1f18f-b476-4d8e-b9d4-640fe62fbe8a[Existing task bea1f18f-b476-4d8e-b9d4-640fe62fbe8a]
  8b4fe424-d90c-493f-a61d-0ce91cd485c9[Existing task 8b4fe424-d90c-493f-a61d-0ce91cd485c9]
  30f8a2e9-f0d3-482e-af58-aed6b77d3dd5[Existing task 30f8a2e9-f0d3-482e-af58-aed6b77d3dd5]

  77f11a41-af3a-4bca-bf67-725be92a88f6 -- Success --> 6097da0e-50d8-4c0f-b442-49739b556180_ct_1
  bea1f18f-b476-4d8e-b9d4-640fe62fbe8a -- Fail --> 6097da0e-50d8-4c0f-b442-49739b556180_ct_1
  8b4fe424-d90c-493f-a61d-0ce91cd485c9 -- Success --> 6097da0e-50d8-4c0f-b442-49739b556180_ct_1
  30f8a2e9-f0d3-482e-af58-aed6b77d3dd5 -- Success ---> 6097da0e-50d8-4c0f-b442-49739b556180_ct_1
  afc250bc-28c3-49a2-8d63-80966749abe3 -- Success ---> 6097da0e-50d8-4c0f-b442-49739b556180_ct_1

  6097da0e-50d8-4c0f-b442-49739b556180 -- Success --> 78db1ac3-0035-4b5c-bf35-14e1cbd2b0bf_ct_1

  ad188c0e-f196-449d-9662-f33998f56b78 -- Success --> 166e2d6a-89c4-4021-a04d-01c8c20f1cfa_ct_1

  166e2d6a-89c4-4021-a04d-01c8c20f1cfa -- Success--> afc250bc-28c3-49a2-8d63-80966749abe3_ct_1

  77f11a41-af3a-4bca-bf67-725be92a88f6 -- Success ---> 30c6a76a-ece6-4a4a-b476-56155a5a85b8_ct_1
  bea1f18f-b476-4d8e-b9d4-640fe62fbe8a -- Fail ---> 30c6a76a-ece6-4a4a-b476-56155a5a85b8_ct_1
  8b4fe424-d90c-493f-a61d-0ce91cd485c9 -- Success ---> 30c6a76a-ece6-4a4a-b476-56155a5a85b8_ct_1
  30f8a2e9-f0d3-482e-af58-aed6b77d3dd5 -- Success ---> 30c6a76a-ece6-4a4a-b476-56155a5a85b8_ct_1
  afc250bc-28c3-49a2-8d63-80966749abe3 -- Success ---> 30c6a76a-ece6-4a4a-b476-56155a5a85b8_ct_1
  
  5b1cdbe5-58a9-4743-ba3f-68a5dc772391 -- Success --> 08e2cbca-0687-4c96-8914-dbb0e6515b1f_ct_1

  08e2cbca-0687-4c96-8914-dbb0e6515b1f -- Success --> 63206b08-516c-4e43-8fc9-2e47581d0b1a_ct_1

  ece63341-7d57-4093-b972-fd130c2290e7 -- Success --> ad188c0e-f196-449d-9662-f33998f56b78_ct_1

  afc250bc-28c3-49a2-8d63-80966749abe3 -- Success --> 2e549e47-13e7-4f02-91c2-34f7bf3d57eb_ct_1

  afc250bc-28c3-49a2-8d63-80966749abe3 -- Success --> f402f48a-8590-4fc1-bf5e-ae30b4d9f2eb_ct_1

  f402f48a-8590-4fc1-bf5e-ae30b4d9f2eb -- Success --> c7f83305-6fd5-4926-bc1f-abfc05d0729c_ct_1

  c7f83305-6fd5-4926-bc1f-abfc05d0729c -- Success --> b9532a39-a69f-4857-acc1-4762a90fd784_ct_1

  b9532a39-a69f-4857-acc1-4762a90fd784 -- Success --> ad6114d8-9b79-4342-8d2d-b9565506ec1a_ct_1

  ad6114d8-9b79-4342-8d2d-b9565506ec1a -- Success --> 5b1cdbe5-58a9-4743-ba3f-68a5dc772391_ct_1
| Task counter | Task type        | Task name                                                           | Task id        | Task enabled | Task timeout | Task retries | App id                               | Partial reload | Manually triggered | Ext program path                                               | Ext program parameters                                 | Task status    | Task started             | Task ended               | Task duration | Task executedon node            | Tags                     | Custom properties                                                      | Event counter | Event type | Event name                             | Event enabled | Event created date   | Event modified date | Event modified by | Schema increment option | Schema increment description | Daylight savings time     | Schema start            | Schema expiration       | Schema filter description | Schema time zone | Time contstraint seconds | Time contstraint minutes | Time contstraint hours | Time contstraint days | Rule counter | Rule state     | Rule task name                                                      | Rule task id                         |
| ------------ | ---------------- | ------------------------------------------------------------------- | -------------- | ------------ | ------------ | ------------ | ------------------------------------ | -------------- | ------------------ | -------------------------------------------------------------- | ------------------------------------------------------ | -------------- | ------------------------ | ------------------------ | ------------- | ------------------------------- | ------------------------ | ---------------------------------------------------------------------- | ------------- | ---------- | -------------------------------------- | ------------- | -------------------- | ------------------- | ----------------- | ----------------------- | ---------------------------- | ------------------------- | ----------------------- | ----------------------- | ------------------------- | ---------------- | ------------------------ | ------------------------ | ---------------------- | --------------------- | ------------ | -------------- | ------------------------------------------------------------------- | ------------------------------------ |
| 1            | External program | New external program task 1                                         | task-1         | 1            | 1440         | 3            |                                      |                |                    | C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe | -File \\\\pro2-win1\\c$\\tools\\script\\ext_task_1.ps1 |                |                          |                          | 0:00:00       |                                 | api1                     | Department=Finance / Department=Sales                                  |               |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       |              |                |                                                                     |                                      |
| 2            | External program | Ext program task chaining 1                                         | task-2         | 1            | 15           | 0            |                                      |                |                    | powershell.exe                                                 | -File \\\\pro2-win1\\c$\\tools\\script\\ext_task_1.ps1 |                | 2023-09-26T05:58:55.590Z | 2023-09-26T06:23:38.346Z | 0:24:42       | pro2-win1.lab.ptarmiganlabs.net |                          |                                                                        |               |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       |              |                |                                                                     |                                      |
| 3            | External program | Ext task 1                                                          | task-3         | 1            | 1440         | 3            |                                      |                |                    | C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe | -File \\\\pro2-win1\\c$\\tools\\script\\ext_task_1.ps1 |                |                          |                          | 0:00:00       |                                 | api1                     | Department=Finance / Department=Sales                                  |               |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       |              |                |                                                                     |                                      |
| 3            |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             | Schema     | Weekly                                 |               |                      |                     |                   | weekly                  | 0 0 1 0                      | ObserveDaylightSavingTime | 2022-10-19T10:19:30.000 | 9999-01-01T00:00:00.000 | * * - 3 1 * * *           | Europe/Paris     |                          |                          |                        |                       |              |                |                                                                     |                                      |
| 3            |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 2             | Composite  | 2 Trigger when upstream tasks are done |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  | 0                        | 360                      | 0                      | 0                     |              |                |                                                                     |                                      |
| 3            |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 2             |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       | 1            | TaskSuccessful | Manually triggered reload of Butler 7 Slack debug                   | 77f11a41-af3a-4bca-bf67-725be92a88f6 |
| 3            |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 2             |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       | 2            | TaskFail       | Manually triggered reload of App1 πŸ†                                 | bea1f18f-b476-4d8e-b9d4-640fe62fbe8a |
| 3            |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 2             |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       | 3            | TaskSuccessful | Reload task of EV chargers                                          | 8b4fe424-d90c-493f-a61d-0ce91cd485c9 |
| 3            |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 2             |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       | 4            | TaskSuccessful | Reload task of Residential energy analysis                          | 30f8a2e9-f0d3-482e-af58-aed6b77d3dd5 |
| 3            |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 2             |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       | 5            | TaskSuccessful | [ctrl-q task chain 4] Ext program task chaining                     | special-task-1                       |
| 4            | External program | Ext task 2                                                          | task-4         | 1            | 1440         | 3            |                                      |                |                    | C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe | -File \\\\pro2-win1\\c$\\tools\\script\\ext_task_1.ps1 |                |                          |                          | 0:00:00       |                                 |                          |                                                                        |               |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       |              |                |                                                                     |                                      |
| 4            |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             | Schema     | Weekly                                 |               |                      |                     |                   | weekly                  | 0 0 1 0                      | ObserveDaylightSavingTime | 2022-10-19T10:19:30.000 | 9999-01-01T00:00:00.000 | * * - 3 1 * * *           | Europe/Paris     |                          |                          |                        |                       |              |                |                                                                     |                                      |
| 4            |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 2             | Composite  | 2 Trigger when upstream tasks are done |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  | 0                        | 360                      | 0                      | 0                     |              |                |                                                                     |                                      |
| 4            |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 2             |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       | 1            | TaskSuccessful | Ext task 1                                                          | task-3                               |
| 5            | External program | [ctrl-q task chain 3] Ext program task chaining                     | task-5         | 1            | 1440         | 0            |                                      |                |                    | powershell.exe                                                 | -File \\\\pro2-win1\\c$\\tools\\script\\ext_task_1.ps1 |                |                          |                          | 0:00:00       |                                 |                          |                                                                        |               |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       |              |                |                                                                     |                                      |
| 5            |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             | Composite  | When [ctrl-q 2] done                   | 1             |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  | 0                        | 360                      | 0                      | 0                     |              |                |                                                                     |                                      |
| 5            |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       | 1            | TaskSuccessful | [ctrl-q task chain 2] Reload task of Ctrl-Q reload chain app 2-1    | task-9                               |
| 6            | External program | [ctrl-q task chain 4] Ext program task chaining                     | special-task-1 | 1            | 1440         | 0            |                                      |                |                    | powershell.exe                                                 | -File \\\\pro2-win1\\c$\\tools\\script\\ext_task_1.ps1 |                |                          |                          | 0:00:00       |                                 |                          |                                                                        |               |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       |              |                |                                                                     |                                      |
| 6            |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             | Composite  | When [ctrl-q task chain 3] done        | 1             |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  | 0                        | 360                      | 0                      | 0                     |              |                |                                                                     |                                      |
| 6            |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       | 1            | TaskSuccessful | [ctrl-q task chain 3] Ext program task chaining                     | task-5                               |
| 7            | Reload           | Butler test failing reloads 1 task                                  |                | 1            | 1440         | 0            | 4788dc51-2bf6-45f0-a4ad-8bd8d40e1d3f |                | 1                  |                                                                |                                                        |                | 2023-11-09T08:43:06.081Z | 2023-11-09T08:43:33.079Z | 0:00:26       | pro2-win1.lab.ptarmiganlabs.net | startTask1 / Ctrl-Q demo | Butler_AbortedAlertEnableEmail=Yes / Butler_FailedAlertEnableEmail=Yes |               |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       |              |                |                                                                     |                                      |
| 8            | Reload           | Reload task of Lab 1_1                                              |                | 1            | 1440         | 3            | 4716f284-7790-45c3-a0a5-154c898766a0 |                |                    |                                                                |                                                        |                |                          |                          | 0:00:00       |                                 | api1                     | Department=Finance / Department=Sales                                  |               |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       |              |                |                                                                     |                                      |
| 8            |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             | Schema     | Daily                                  | 1             |                      |                     |                   | daily                   | 0 0 1 0                      | ObserveDaylightSavingTime | 2022-10-17T11:37:26.000 | 9999-01-01T00:00:00.000 | * * - * * * * *           | Europe/Paris     |                          |                          |                        |                       |              |                |                                                                     |                                      |
| 8            |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 2             | Schema     | Custom cron                            |               |                      |                     |                   | custom                  | 1 2 3 4                      | ObserveDaylightSavingTime | 2022-10-17T11:37:29.000 | 9999-01-01T00:00:00.000 | * * - * * * * *           | Europe/Paris     |                          |                          |                        |                       |              |                |                                                                     |                                      |
| 8            |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 3             | Composite  | Trigger when upstream tasks are done   |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  | 0                        | 360                      | 0                      | 0                     |              |                |                                                                     |                                      |
| 8            |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 3             |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       | 1            | TaskSuccessful | Manually triggered reload of Butler 7 Slack debug                   | 77f11a41-af3a-4bca-bf67-725be92a88f6 |
| 8            |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 3             |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       | 2            | TaskFail       | Manually triggered reload of App1 πŸ†                                 | bea1f18f-b476-4d8e-b9d4-640fe62fbe8a |
| 8            |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 3             |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       | 3            | TaskSuccessful | Reload task of EV chargers                                          | 8b4fe424-d90c-493f-a61d-0ce91cd485c9 |
| 8            |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 3             |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       | 4            | TaskSuccessful | Reload task of Residential energy analysis                          | 30f8a2e9-f0d3-482e-af58-aed6b77d3dd5 |
| 8            |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 3             |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       | 5            | TaskSuccessful | [ctrl-q task chain 4] Ext program task chaining                     | special-task-1                       |
| 9            | Reload           | [ctrl-q task chain 10.1] Reload task of Ctrl-Q reload chain app 1-1 | task-6         | 1            | 1440         | 0            | 3d711d07-c133-48f7-ab26-8350c5b8fe2e |                |                    |                                                                |                                                        |                |                          |                          | 0:00:00       |                                 |                          |                                                                        |               |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       |              |                |                                                                     |                                      |
| 9            |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             | Composite  | ...                                    | 1             |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  | 0                        | 360                      | 0                      | 0                     |              |                |                                                                     |                                      |
| 9            |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       | 1            | TaskSuccessful | [ctrl-q task chain 9.1] Reload task of Ctrl-Q reload chain app 1-1  | task-15                              |
| 10           | Reload           | [ctrl-q task chain 11.1] Reload task of Ctrl-Q reload chain app 1-1 | task-7         | 1            | 1440         | 0            | 3d711d07-c133-48f7-ab26-8350c5b8fe2e |                |                    |                                                                |                                                        |                |                          |                          | 0:00:00       |                                 |                          |                                                                        |               |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       |              |                |                                                                     |                                      |
| 10           |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             | Composite  | ...                                    | 1             |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  | 0                        | 360                      | 0                      | 0                     |              |                |                                                                     |                                      |
| 10           |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       | 1            | TaskSuccessful | [ctrl-q task chain 10.1] Reload task of Ctrl-Q reload chain app 1-1 | task-6                               |
| 11           | Reload           | [ctrl-q task chain 1] Reload task of Ctrl-Q reload chain app 1-1    | task-8         | 1            | 1440         | 0            | 3d711d07-c133-48f7-ab26-8350c5b8fe2e |                |                    |                                                                |                                                        |                |                          |                          | 0:00:00       |                                 |                          |                                                                        |               |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       |              |                |                                                                     |                                      |
| 12           | Reload           | [ctrl-q task chain 2] Reload task of Ctrl-Q reload chain app 2-1    | task-9         | 1            | 1440         | 0            | 766c96a8-d8ba-47e6-b4a3-e1935bf12d99 |                |                    |                                                                |                                                        |                |                          |                          | 0:00:00       |                                 |                          |                                                                        |               |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       |              |                |                                                                     |                                      |
| 12           |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             | Composite  | When Ctrl-Q [1] done                   | 1             |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  | 0                        | 360                      | 0                      | 0                     |              |                |                                                                     |                                      |
| 12           |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       | 1            | TaskSuccessful | [ctrl-q task chain 1] Reload task of Ctrl-Q reload chain app 1-1    | task-8                               |
| 13           | Reload           | [ctrl-q task chain 5.1] Reload task of Ctrl-Q reload chain app 3-1  | task-10        | 1            | 1440         | 0            | aea0ac54-b377-4325-a1f7-e32a5616ff95 |                |                    |                                                                |                                                        |                |                          |                          | 0:00:00       |                                 |                          |                                                                        |               |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       |              |                |                                                                     |                                      |
| 13           |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             | Composite  | When Ctrl-q [4] done                   | 1             |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  | 0                        | 360                      | 0                      | 0                     |              |                |                                                                     |                                      |
| 13           |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       | 1            | TaskSuccessful | [ctrl-q task chain 4] Ext program task chaining                     | special-task-1                       |
| 14           | Reload           | [ctrl-q task chain 5.2] Reload task of Ctrl-Q reload chain app 3-2  | task-11        | 1            | 1440         | 0            | 972da501-93f7-470d-b8ba-84ef2cfebdc9 |                |                    |                                                                |                                                        |                |                          |                          | 0:00:00       |                                 |                          |                                                                        |               |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       |              |                |                                                                     |                                      |
| 14           |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             | Composite  | When Ctrl-q [4] done                   | 1             |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  | 0                        | 360                      | 0                      | 0                     |              |                |                                                                     |                                      |
| 14           |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       | 1            | TaskSuccessful | [ctrl-q task chain 4] Ext program task chaining                     | special-task-1                       |
| 15           | Reload           | [ctrl-q task chain 6.1] Reload task of Ctrl-Q reload chain app 1-1  | task-12        | 1            | 1440         | 0            | 3d711d07-c133-48f7-ab26-8350c5b8fe2e |                |                    |                                                                |                                                        |                |                          |                          | 0:00:00       |                                 |                          |                                                                        |               |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       |              |                |                                                                     |                                      |
| 15           |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             | Composite  | ...                                    | 1             |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  | 0                        | 360                      | 0                      | 0                     |              |                |                                                                     |                                      |
| 15           |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       | 1            | TaskSuccessful | [ctrl-q task chain 5.2] Reload task of Ctrl-Q reload chain app 3-2  | task-11                              |
| 16           | Reload           | [ctrl-q task chain 7.1] Reload task of Ctrl-Q reload chain app 1-1  | task-13        | 1            | 1440         | 0            | 3d711d07-c133-48f7-ab26-8350c5b8fe2e |                |                    |                                                                |                                                        |                |                          |                          | 0:00:00       |                                 |                          |                                                                        |               |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       |              |                |                                                                     |                                      |
| 16           |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             | Composite  | ...                                    | 1             |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  | 0                        | 360                      | 0                      | 0                     |              |                |                                                                     |                                      |
| 16           |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       | 1            | TaskSuccessful | [ctrl-q task chain 6.1] Reload task of Ctrl-Q reload chain app 1-1  | task-12                              |
| 17           | Reload           | [ctrl-q task chain 8.1] Reload task of Ctrl-Q reload chain app 1-1  | task-14        | 1            | 1440         | 0            | 3d711d07-c133-48f7-ab26-8350c5b8fe2e |                |                    |                                                                |                                                        |                |                          |                          | 0:00:00       |                                 |                          |                                                                        |               |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       |              |                |                                                                     |                                      |
| 17           |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             | Composite  | ...                                    | 1             |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  | 0                        | 360                      | 0                      | 0                     |              |                |                                                                     |                                      |
| 17           |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       | 1            | TaskSuccessful | [ctrl-q task chain 7.1] Reload task of Ctrl-Q reload chain app 1-1  | task-13                              |
| 18           | Reload           | [ctrl-q task chain 9.1] Reload task of Ctrl-Q reload chain app 1-1  | task-15        | 1            | 1440         | 0            | 3d711d07-c133-48f7-ab26-8350c5b8fe2e |                |                    |                                                                |                                                        |                |                          |                          | 0:00:00       |                                 |                          |                                                                        |               |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       |              |                |                                                                     |                                      |
| 18           |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             | Composite  | ...                                    | 1             |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  | 0                        | 360                      | 0                      | 0                     |              |                |                                                                     |                                      |
| 18           |                  |                                                                     |                |              |              |              |                                      |                |                    |                                                                |                                                        |                |                          |                          |               |                                 |                          |                                                                        | 1             |            |                                        |               |                      |                     |                   |                         |                              |                           |                         |                         |                           |                  |                          |                          |                        |                       | 1            | TaskSuccessful | [ctrl-q task chain 8.1] Reload task of Ctrl-Q reload chain app 1-1  | task-14                              |