QOps 3.0.21

September 2026

QOps-Publish to a shared space keeps the application's Id

When a Qlik Cloud shared space already holds an application of the name you publish, QOps-Publish -Force now updates that application in place: it gets the content of the application you publish from and keeps its own Id, so links, bookmarks and automations pointing at it keep working. The application you publish from stays in your personal space, where your next build finds it; add -RemoveArtefacts to remove it. The first publish, into a space with nothing of that name, still moves the application in.

An update in place carries content, not data: reload the application afterwards, or add -Reload to the publish. Managed spaces and QOps-Release work as before.

Choose which app Id a Portal Publish or Reload uses

An application folder can hold two app Ids: the one in App.local, which is the app your last build on this machine wrote to, and the one in App, committed to the repository. When they are two different Qlik app Ids, the Publish and Reload confirmation now offers an App Id choice, Local Id (App.local) or Id (App), so you can publish the app you just built into your personal space or move the app already shared from the repository into another space. The command preview in the dialog shows the Id your choice resolves to, and the run uses that same Id.

When a folder has only one usable Id, nothing changes and no choice is shown. Defaults are the same as before: Publish uses Local Id, Reload uses Id (App). Prepare, Build and Release are not affected.

Start Prepare or Build from the Studio file tree

Right-click in the Studio file tree to start an operation. On an application's -prj folder the menu offers Prepare, Build and Set local App; on a folder or a single object file inside it, Prepare on path and Build on path, scoped to exactly what you clicked.

The confirmation opens over Studio, names the application and shows the full command, and the run leaves you on the document you were reading. Output goes to the log panel; while that panel is collapsed, a yellow running marker at the bottom shows that a run is going. One operation runs at a time. Set local App still opens the Operations panel, because it needs a second application to map the folder onto.

A scoped Prepare on one file keeps that file

QOps-Prepare -Path on a single object file (a variable, a story or a snapshot) refreshes that file. Variables/Sales.yaml and Variables/Sales name the same object. Empty folders outside the scope are left in place. If an earlier scoped run removed such a file, an unscoped run brings it back; the object itself is still in Qlik.

Local paths on the file commands are counted from where you are standing

QOps-ImportFile, QOps-ExportFile and QOps-ExportQVF read a local path the way PowerShell does: an absolute path as written, a relative path from the folder you are standing in (the one Get-Location reports), and a wildcard against the file names in the one folder you named. Standing in C:\repo\loaders:

-Path C:\data\Customers.csv    ->  C:\data\Customers.csv
-Path .\data\Customers.csv     ->  C:\repo\loaders\data\Customers.csv
-Path data\Customers.csv       ->  the same file, the .\ is optional
-Path ..\shared\Customers.csv  ->  C:\repo\shared\Customers.csv
-Path .\data\*.csv             ->  the .csv files in data, not the ones in data\2026

Being inside a repository does not change this: .qopsconfig decides where the configuration is read from, not where a path is counted from. QOps-ExportFile without -Path still writes into the repository's folder; write -Path . when you mean the folder you are in.

When Qlik Sense refuses to create an app, the log says who asked and where

If a build on Qlik Sense needs a new app and the server refuses, for example with Forbidden [403]:Forbidden(Object write failed.), the log file names the app, the server address and virtual proxy, the user the build connected as and the authentication mode. It also records which rights Qlik Sense would give that user on a new app of that name, and which license the user holds (Professional, Analyzer, User access or none): with user-based licensing only a Professional user can create apps, even when the security rules allow it. Each session also records once which user and address it connects with. Passwords, tokens and certificate contents are never written.

A Qlik Cloud build reads less from the tenant

To find the application a folder belongs to, QOps asks Qlik Cloud for applications only, and for just that one when the folder records its Id. An application's owner is looked up by that one account. The build settles on the same application as before.

Fixes

Application content goes up to Qlik Sense in one request per file, which halves the calls a build makes to upload it.

Two QOps commands can run side by side against Qlik Cloud. Neither stops with a LOGO0.jpg ... being used by another process error, and each uploads the content of its own application.

QOps-RemoveExtensions says that it matches names exactly. Given * or ?, it explains that the name is matched as written and points to QOps-ShowExtensions -Filter to list the matches.

Reload status takes its flags in the Portal. -Wait and -ShowLogs are under Flags / Options, so a status query can be saved as a bookmark together with them.