September 2026
Creating an application from the Operations panel
Build in the Operations panel has a New switch, matching -New on the command line, and it decides which applications the run is about. Leave it off and the run is an ordinary build: existing applications are built and a folder that names no Id is skipped. Turn it on and the run creates the applications for folders that name no Id, skipping the ones that already exist. Either way, every application you selected reports what happened to it.
Creating an application also gives its folder an Id, so QOps-Prepare, QOps-Reload, a release and the Portal all address it from then on like any other application. The recorded Id is the project folder name rather than the Qlik application id: the Qlik id stays in App.local, where each environment keeps its own, so a repository that creates an application is not tied to the Qlik it was created on. Only the Id field is written - the rest of the file, including its line endings, is left exactly as it was.
Updating no longer depends on the licence check
QOps-Update installs the new version whether or not the licence checks out. Where the check fails, or cannot run at all, the run says which of the two happened and carries on:
QOps-Update: license check failed. License is invalid: the license has expired. The update runs anyway: QOps-Update does not require a license. Other commands do - run QOps-Activate to restore them.
Every other command still checks the licence for itself, so this changes what you can update, not what you can do.
Configuration and setup
- The configuration wizard is safe to step through and safe to decline. Pressing Enter at the certificate step keeps the value you already have, exactly as the prompt offers; a path that does not exist says so. Pressing Enter at the first step declines the wizard and leaves your configuration untouched.
- A missing profile is reported immediately, and names the file that asked for it - so you know which configuration to fix rather than which command to rerun.
- Your
.gitignorekeeps the rules QOps did not put there. Both the.qopsconfigrule handling andQOps-Pullnow touch only what they are about: rules that merely share a prefix stay, the file survives attaching an origin remote, and it is restored on every path - including one where the pull does not complete. Each says in one line what it did.
Qlik Cloud and engine
- Application descriptions behave like ordinary text. A description can be cleared as well as changed, it no longer grows a line break on each save, and quotes in it arrive intact.
- Connection problems name the setting to change. An expired or wrong Qlik Cloud key names the API key setting and the command that replaces it, and connecting to Qlik Sense without a
SenseUrlsays that is what is missing - on both the repository and the engine connection.
Commands and output
- An empty result says which kind of empty it was.
Nothing foundnow distinguishes "no application projects here" from "projects are here, the filter matched none", names the scan root, and - where nothing was found at all - says that a folder holdingApp.json/App.yamlmust be a direct child of the repository root or of anAppSubfoldersentry. - A refusal reads as a refusal.
QOps-ExportFilesays why it declined instead of returning the silence that looks like a search with no matches. - A command with no
-Filtertells you what it will act on. Reading and writing answer that differently, on purpose.QOps-ShowExtensionswith no filter now lists every extension, instead of stopping at a repository filter that may never have been set and reporting nothing found. A write command still uses the filter saved in the repository, and where none is saved it touches nothing and says so, rather than reporting success having done nothing — pass-Filter *when you do mean all of them. A write that skips one names it and says why. - What QOps writes can be read back. An extension file whose bytes it cannot decode is refused before anything is changed, rather than uploaded with the undecodable parts replaced; and YAML strings containing tabs are quoted, so strict parsers accept them.