September 2026
Reloads you can start in one run and check in another
QOps-Reload -Detached works against Qlik Cloud. The run hands every selected application's reload to the tenant and returns as soon as they are accepted, a row per application with the reload id and its state. -Wait holds until they finish. QOps-Reload -Status answers in a later run without starting anything, and -ShowLogs N returns the last N lines for anything that failed - on Qlik Cloud without needing -Wait. The states read the same as on Qlik Sense, and an application the tenant has never reloaded reports NeverStarted.
In the Portal that pair is Operations → Reload and Operations → Reload status. Reload status is a button of its own because it starts nothing: you can ask while a reload is still running.
-Timeout <seconds> sets how long one run waits, on Qlik Sense and Qlik Cloud. On Qlik Cloud, ReloadTimeoutSeconds in .qopsconfig sets it for the repository, and -Timeout takes precedence. Waiting is all it governs: when the time runs out nothing is cancelled, the reload carries on, and the run names what was still running so you can ask about it afterwards. On Qlik Cloud such a reload reports as Unfinished - neither a failure nor a success, so pipelines and the Portal treat it as unconfirmed.
Folders inside a Qlik Cloud space
QOps-ImportFile, QOps-ExportFile and QOps-RemoveFile all take -QlikPath, the folder inside the space to work in. Name it and -File may be the plain file name, and the command touches nothing outside that folder - worth having on QOps-RemoveFile, where a pattern otherwise reaches every folder in the space. On QOps-ImportFile this parameter was -TargetPath in 3.0.18; that spelling still works as an alias, so nothing written against the older release needs changing.
QOps-ImportFile -Root takes a whole tree and keeps its shape: -Path is matched against each file's path relative to the root, and each file lands in -QlikPath plus its own folder.
QOps-ImportFile -Space Sales -Root .\data -Path *.csv -QlikPath Extracts
.\data\a.csv -> Extracts/a.csv
.\data\2026\b.csv -> Extracts/2026/b.csv
That completes the round trip: export a set of files, change one, import them back, and each returns to the folder it came from - at every level of the tree, replacing rather than duplicating. Without -Root one folder is read, as before.
In the Portal the folder field is on all three commands, and Import file also offers Root.
On an export the folder you name is not repeated on disk: with -QlikPath archive, archive/2025/sales.qvd is written to <-Path>\2025\sales.qvd, which is what makes -QlikPath out and -Root back inverses of each other.
Publishing into a shared or managed space
Edit, build, publish now delivers to a shared space as it does to a managed one. QOps-Publish refuses a name the space already holds and says so - add -Force to replace; QOps-Release replaces it. Two things are worth knowing. The application that arrives in a shared space has a different id from the one it replaces, so anything addressing the previous copy by id - a link, a task, a bookmark - needs pointing at the new one. And where a space already holds several applications of one name, a publish replaces one of them and says how many it left; the rest are yours to delete.
A publish whose -Filter names an application that is already in the target space now stops and names both it and the one in your personal space that your last build wrote to. Take the id it names - QOps records it in App.local - and publish that.
From the Portal: Build, then Publish. Publish takes the application id from the folder's App.local, falling back to its App file. Where a build writes has not changed.
Pointing a folder at the application it means on this environment
The Operations panel has a Set local App button. It runs QOps-SetLocalApp, which is what you reach for after cloning a repository onto an environment where the applications already exist under different ids: it records, for this machine only, which application each folder works on. The target is chosen from a list of the applications on the environment you are connected to, never typed.
Fixes
QOps-Publish run without -Filter says what it needs, and shows the shape to pass, instead of reporting nothing found. It takes the application, the name and the target space from -Filter and does not use the filter saved in .qopsconfig.
Housekeeping no longer interrupts the command you ran. The daily tidy of the log folder leaves alone any file something is still writing to, and finishes the rest instead of stopping at the first it cannot remove.
Preparing straight after a build leaves untouched sheets alone, so a routine build-then-prepare no longer leaves a diff that says nothing about the application.
An extension whose .qext is not valid UTF-8 is refused before anything is uploaded, naming the file and the byte; the extension already on the server is left as it is, and a byte order mark survives the rewrite. If you built such an extension previously, its text on the server is worth a look - convert the file to UTF-8 and build again.