Releases: UiPath-Services/UiPathOrch
Release list
v1.11.6
Changed
Assets
Set-OrchCredentialAssetnow warns instead of silently skipping when a new credential
asset is requested without a password — a credential asset cannot exist without a secret
(a password, or anExternalNamethat references a credential store), so a create request
that supplies neither used to be dropped with no output at all. It now emits a warning
(Skipped '<name>': creating a new credential asset requires a password.) and skips the row,
which also surfaces a mistyped or since-deleted asset name in a bulk-update CSV — those fall
through to the create path with the password column masked (empty). Updating an existing
credential is unchanged: omitting the password preserves the stored one, and changing the
username without a password is still rejected server-side (errorCode 1500).
Fixed
Assets
- Per-user asset values now honor folder access through directory groups / tenant roles.
Set-OrchAsset,Set-OrchCredentialAsset,Set-OrchSecretAssetandCopy-OrchAssetused to
require the-UserNameaccount to be directly assigned to the target folder — rejecting
-UserNameas "not assigned" (or dropping the copied per-user value) whenever the account only
reached the folder through an assignedDirectoryGroupor a tenant role. The client-side
folder-scope preflight has been removed: the cmdlets now resolve-UserNameagainst the tenant
user list and let Orchestrator decide. Direct PUT probes against cloud Orchestrator and on-prem
22.10.1 confirmed the server accepts a per-user value for any existing tenant user regardless of
direct folder assignment, and rejects a genuinely-invalid user atomically (HTTP 400) without the
silent value-drop / Global-Value wipe the preflight was originally built to avoid. A directory
user who is not yet a tenant user still has no per-user identity to reference; add them to the
destination first withAdd-OrchFolderUser/Copy-OrchFolderUser(as you would copy a package
before a process), then re-run the asset set/copy.
v1.11.5
Fixed
Provider
- Subfolders under a personal workspace are visible again —
dir/cd/Get-Item/
wildcard resolution /Remove-Itemnow see the folders a solution deploy creates inside a
personal workspace (FolderTypeSolution). Orchestrator changed this server-side: these
subfolders used to arrive through/odata/FolderstaggedFeedTypePersonalWorkspace(their
-Recurseordering was fixed back in 0.9.12.2), but the endpoint no longer returns them at all —
$filter=ParentId eq <pwId>comes back empty and/odata/Folders(<subfolderId>)404s — so the
whole subtree had become invisible. The folder catalog now also grafts these in from
/api/Folders/GetAllForCurrentUser. Confidential-app connections skip the extra call (the
endpoint returns an empty list for them anyway), and older Orchestrator versions that predate it
degrade gracefully. Note: this restores visibility; deleting aSolutionfolder may still be
refused server-side depending on the solution's lifecycle. - All personal-workspace subfolders are fetched, not just the first page —
/api/Folders/GetAllForCurrentUser(the source of the personal-workspace subtree) is a paged
endpoint whosetakeis capped at 1000; the folder catalog issued a single un-paged request, so
a tenant with more folders than one page would have silently dropped the tail (and any personal-
workspace subfolders in it). It now pages onskipuntil the response'sCounttotal is reached. -Recurselists a personal workspace's subfolders right after the workspace, not scattered
among regular folders — the grafted subfolders used to sort alphabetically by name in among
every other folder's subtree instead of following their personal-workspace root. Both folder
orderings now group personal-workspace subtrees with their root:dir -Recurseplaces them
right after the root-level listing, and the folder walk behind the-Recurseentity cmdlets
(Get-OrchAsset -Recurse,Get-OrchCredentialAsset,Get-OrchProcess, … — everything that
usesEnumFolders) groups each workspace's subtree immediately after it, so e.g. a workspace
subfolder's assets now list right after the workspace's own. Matches the non-recurse view and
the Orchestrator web UI.
Platform Management
Get-PmGroupLicense -ExpandAllocationno longer truncates a group's members at 50 — the
Automation Cloud license allocations endpoint began capping each page at 50 regardless of the
requested page size, so a group with more than 50 licensed members silently returned only the
first 50 (a group with 50 or fewer was unaffected, which is why the truncation looked
intermittent). The cmdlet now keeps paging onskipuntil the server returns an empty page.
Verified live on Automation Cloud — the endpoint honorsskipand reportstotalCount.- The Automation-Cloud-only licensing cmdlets now fail with a clear message on on-prem
Orchestrator —Get-PmGroupLicense/Get-PmUserLicense/Get-PmLicense/
Get-PmLicenseAllocation/Get-PmLicenseContract/Get-PmLicenseInventorycall license
endpoints that exist only on Automation Cloud. On-prem Orchestrator answers the unknown route
with its SPAindex.html(HTTP 200), which the cmdlets used to deserialize as JSON and surface
as a cryptic'<' is an invalid start of a value. They now report that the operation is
available only on Automation Cloud.
v1.11.4
Added
Cmdlets
New-OrchUserMappingCsvnow also enumerates robot accounts (TypeDirectoryRobot), not just
directory users — robot accounts own most per-user asset values in practice, and their names
routinely differ between tenants, so leaving them out meant discovering the missing rows one drop
warning at a time. Robot rows resolve against the destination tenant user list (the directory
search may not return robot accounts; the tenant list is also what the copy matches per-user
values against): same-named robots auto-fill, renamed ones are left empty to map by hand, and
the row can simply be deleted when that robot's values are not needed. Robot rows carry "robot"
in the SourceSource column.Test-OrchUserMappingCsvnow checks tenant-user reachability first
for every row — which both validates robot rows correctly and makes the check order match what
the copy actually does.
Fixed
Cmdlets
-
Folder-assignment checks and listings now read the union of
GetUsersForFolder's
includeInherited=trueandfalseforms instead of trusting thetrueform to be a superset.
In one customer Automation Cloud environment thetrueform omitted a directly-assigned robot
account that thefalseform returned, so the asset copy dropped that robot's per-user values as
"not assigned" (skipping per-user-only assets entirely),Set-OrchAsset/Set-OrchCredentialAsset
/Set-OrchSecretAsset -UserNamewould have refused it, name completion (including
New/Update-OrchTrigger -MachineRobots) missed it, andGet-OrchFolderUser -IncludeInherited
paradoxically hid an assignment the no-switch form showed. The asymmetry is environment-dependent
(it does not reproduce everywhere), but the union is correct by construction either way:
-IncludeInheritednow means "inherited in addition to direct" rather than "whatever the server's
trueform returns". Workaround on older versions: assign the account to a parent folder (the
inherited entry is visible to thetrueform). -
User mapping CSV lookups are no longer case-sensitive on
SourceUserName— every other
UserName comparison in the pipeline ignores case, so a hand-typed row whose casing differed from
the tenant's spelling silently failed to map. -
The "not assigned" drop warning's
Copy-OrchFolderUserexample now uses the source user name
in-UserName— it previously showed the CSV-mapped destination name, which filters the source
folder and would have matched nothing; when a mapping renamed the user the example now also
points at passing the same-UserMappingCsv.
Changed
Cmdlets
-
Test-OrchUserMappingCsvshows a per-entry progress bar — rows whose source user needs the
folder-by-folder fallback scan, or whose destination hits the directory search, can take a while
on large CSVs. -
Test-OrchUserMappingCsvaggregates its "not yet a tenant user" findings into one warning and a
separate Pending count instead of warning per row — on a fresh cross-org destination nearly every
directory-user row is in that state until folder users are copied (assignment creates the tenant user
automatically), so per-row warnings drowned the report in expected noise. When only Pending entries
remain, the closing verdict now says to copy folder users before assets instead of flagging the CSV. -
Cmdlets that need an endpoint the connected Orchestrator predates now say so.
Get-OrchLibrary/
Get-OrchLibraryVersionwith-HostFeedon Orchestrator below API v17 (the library-feeds endpoint is
absent through 23.4 and present from 25.10, measured) andGet-OrchProductVersionbelow API v12
(/api/Status/Versionis absent on 20.10.16) used to surface a bareNot Found; both now report
"Orchestrator API Version N does not support this operation."Get-OrchPSDriveis unchanged — it
already tolerated the failure and leaves the ProductVersion column blank.
Diagnostics & robustness
- Every Orchestrator-version gate now carries live measurements. The remaining "does this work on
v12 / v14 / v15?" TODO comments were replaced with evidence measured against 20.10.16, 21.10.4,
22.4.4, 22.10.0, 23.4.0, and 25.10.2 (plus Automation Cloud), and the API-trigger copy gate was
aligned with the cache floor it already deferred to. No behavior changes beyond the error messages
above.
v1.11.3
Added
Cmdlets
Test-OrchUserMappingCsvnow also verifies eachDestinationUserNameis reachable as a destination
tenant user, not just resolvable in the destination directory. The copy cmdlets re-home per-user
asset values against the destination tenant user list, so a mapping that only resolved at directory
level validated clean and then dropped every per-user value at copy time. Such entries now warn up
front, with a pointer at copying folder users (which auto-assigns directory users) before assets.
Provider
- Asset copies now end with a one-line drop summary — the total number of dropped per-user values
and the distinct users / machines that failed to resolve — so the unresolved owners are listed even
after the per-value warnings hit the throttle. The repeated "does not have user with Name" warning
(destination tenant lacks the user entirely) is now throttled through the same budget as the
"not assigned" one, and its users are included in the summary.
v1.11.2
Fixed
Cmdlets
-
Add-OrchUserbatch import no longer applies the last CSV row'sUpdatePolicyType/UpdatePolicyVersion
andES_*execution settings to every user. Rows with different values collapsed to the final row's
settings (or to none, when the final row left them blank); they now post per row, like the other
per-row fields. -
Set-OrchAssetwith a mix of existing and new names now creates the new assets. Once any-Name
matched an existing asset, every name took the update branch —Set-OrchAsset Text Existing,BrandNew -Value xupdatedExistingand silently never createdBrandNew. -
New-OrchTrigger/Update-OrchTrigger-MachineRobotsnow writes the robot relation the trigger
screen displays. The server persists that relation from theExecutorRobotsarray the web dialog
always sends alongside the pairs; without it the assignment saved but read back with an empty Account /
RobotUserNamenull (observed on 22.10). The array is now derived from the pairs automatically unless
-ExecutorRobotsis given explicitly. Below API v12 the pairs are stripped (the DTO has no
MachineRobotsmember there) and the derivedExecutorRobotscarries the whole assignment;
-ExecutorRobotsalone on API v12+ now warns about the likely mix-up. -
Get-OrchFolderUser -ExportCsv'sDomaincolumn now round-trips intoAdd-OrchFolderUser.
-Domaindid not bind from the pipeline, so re-imports silently posted theautogendefault for
every row; it now binds per row, likeAdd-OrchUser -Domain.
Provider
-
Remove-Itemon an Orchestrator folder it cannot resolve now reports ObjectNotFound instead of
silently succeeding, and resolves the path literally like every other single-item operation — a
leftover leaf-only wildcard unescape turned deleting a folder whose name contains a literal
backtick-escaped wildcard into a silent no-op. -
DU/TM drives no longer accept nested garbage paths (
Test-Path Du1:\NoSuchThing\RealProject
returned true because only the last segment was matched) and tolerate a nullPSDriveInfoby
resolving the drive from the path. Their 2-argGetChildItems(and the Orchestrator provider's) now
delegates plain-Recurseas unlimited depth instead of 0 (unreachable via the current engine).
Diagnostics & robustness
-
Connection failures now carry the underlying socket/TLS error in the message and inner exception —
an untrusted certificate no longer surfaces as a bare "Could not connect … on any of N address(es)". -
Import-OrchConfigreports a clear error for a config file without a"PSDrives"array instead of
a rawNullReferenceException; the DU/TM drive bootstrap likewise mounts nothing instead of failing. -
-UseInPrivatesign-ins no longer accumulate throwaway Edge profiles in%TEMP%— each launch
sweeps the profiles earlier sign-ins left behind (recent or in-use ones are skipped). -
Directory-object completion tooltips fall back to the identifier again when the identity name is
null (an operator-precedence slip made the fallback unreachable).
Authentication
-
On-prem user/password drives now populate
AccessToken/Claims/IsAuthenticated. The flow
never stored the token in the auth manager, soGet-OrchPSDriveshowed empty diagnostics for a
successfully signed-in drive. -
A failed on-prem user/password sign-in now reports the server's actual error
(Authentication failed: <status> — <server message>) instead of the generic empty-token message — or
a raw JSON parse error on a proxy's HTML page. The response body is still never dumped.
v1.11.1
Added
Cmdlets
-
Add-OrchUsergains a-Domainparameter, mirroringAdd-OrchFolderUser -Domain: on an
EntraID-federated OnPrem organization where the web UI exposes a concrete domain (e.g.frc/root)
instead ofautogen, pass it here so the directory lookup and the posted user both use it. It stays
opt-in — omit it and the historicalautogendefault applies (Automation Cloud / non-federated OnPrem). -
-Domainnow has argument completion onAdd-OrchUserandAdd-OrchFolderUser. Candidates come
from/api/DirectoryService/GetDomainswith the default domain offered first. Non-federated tenants and
Automation Cloud return no domains, so the completer is silently empty there andautogencontinues to
apply. -
Get-OrchUser,Get-OrchUserDetailandGet-OrchFolderUser-ExportCsvnow include aDomain
column (afterType). It round-trips back intoAdd-OrchUser -Domain/Add-OrchFolderUser -Domain
onImport-Csv | Add-Orch…. The value is the user's directory domain where the server reports one (the
partition domain on federated OnPrem) and is empty on non-federated tenants / Automation Cloud.
Fixed
Cmdlets
-
Get-OrchProcessno longer fails with "OData query options are invalid" on API v20+
Orchestrator. The/odata/Releaseslist unconditionally requested$expand=Environment, but the
Environmentnavigation (along withEnvironmentName/EnvironmentId) was removed fromReleaseDto
in API v20 — so newer builds (confirmed on staging26.3.0-s197) rejected the query with a400
("Could not find a property named 'Environment' on type ...ReleaseDto"). The expand now includes
Environmentonly below v20, where classic-folder deployments may still populate it; an unknown API
version keeps it, preserving legacy behavior. Nothing consumed the nestedEnvironmentobject, and
EnvironmentName(used byCompare-OrchProcess) is a flat field returned independently of the expand. -
Get-OrchPSDrivenow fillsProductVersionfor already-connected drives without-Force. The
column added in 1.11.0 only populated under-Force(or afterGet-OrchProductVersion), so a drive
that was already signed in still showed it blank. A plainGet-OrchPSDrivenow fetches
/api/Status/Versionfor drives that are already authenticated (one cheap call on the existing token);
cold drives are still left untouched, so listing every drive never triggers an interactive sign-in. -
A malformed
-MachineRobotsJSON value now fails with a clear, actionable error and skips the
trigger instead of being reported under a generic "deserialize" message and then still issuing the
update. The error names the offending value and the expected shape
('[{"UserName":"<account>","MachineName":"<machine>"}]'); the trigger is left untouched. Applies to
New-OrchTrigger,Update-OrchTrigger,New-OrchApiTriggerandUpdate-OrchApiTrigger.
v1.11.0
Added
Cmdlets
Get-OrchPSDrivenow shows aProductVersioncolumn (betweenRootandApiVer) with the
Orchestrator product version reported by/api/Status/Version, also exposed as theProductVersion
property on the output object. It is a passive, cached read: a plainGet-OrchPSDrivethat lists
every drive never triggers a network call or an interactive sign-in, so the value appears only once it
has been fetched — byGet-OrchProductVersionor byGet-OrchPSDrive -Force(which now warms the
cache). Drives whose version has not been fetched show an empty value.
Changed
Cmdlets
-
BREAKING —
Import-OrchConfignow always re-reads the configuration file and re-mounts the drives,
and the-Forceswitch has been removed. Previously the cmdlet silently did nothing when the file
was unchanged since the last mount, which was confusing — runningImport-OrchConfigand seeing
nothing happen — and the work saved is negligible. Re-mounting clears each drive's cached sign-in, so
the next use of a drive re-authenticates; that is intentional, and is how you pick up a fresh
directory sign-in after signing in to the organization URL in the browser. Scripts that passed
Import-OrchConfig -Forceshould drop the switch. -
The local-user advisory shown for an Entra-ID-integrated organization was reworded to match the
Orchestrator web banner: it now names the organization-specific sign-in URL and the
sign-out → org-URL →Import-OrchConfigrecovery steps.
Fixed
Cmdlets
- The Entra-ID local-user advisory is now actually displayed. It was detected correctly, but a gate
latched shut before the advisory could be shown: a probe taken before the token / partition id / auth
setting were available, or an unrelated advisory (e.g. theIgnoreSslErrorsnotice) draining first,
would permanently suppress it for the rest of the session. The gate now latches only on a conclusive
outcome and is re-armed onSwitch-OrchCurrentUser.
v1.10.0
Added
Cmdlets
-
Copy-OrchBucketItem— copy the files inside storage buckets directly from one folder, drive, or
tenant to another. The bucket-file counterpart ofCopy-OrchQueueItem: a folder copy
(Copy-Item -Recurse) andCopy-OrchBucketreproduce only the bucket definition, while this
carries the contents. Each file is streamed from the source's pre-signed read URI straight into the
destination's pre-signed write URI with no local staging — the read runs through the source
drive's connection and the write through the destination's, so each side's proxy/SSL applies. (The
Export-OrchBucketItem→ disk →Import-OrchBucketItemround-trip remains the right tool when you
need the files on local disk for backup, inspection, or editing.)-Name,-FullPathand
-Destinationare mandatory and positional (matching theExport-OrchBucketItemargument order);
there is no silent "copy everything" default, so pass*to mean all buckets or all files.
-DestinationBucketretargets a single source bucket to a differently-named destination bucket and
tab-completes against the destination folder's buckets. Copying a bucket onto itself is a no-op (it
warns), while a same-folder copy to a different bucket is allowed; a copy is also skipped per file
when the source and destination resolve to the same physical storage object (e.g. two Orchestrator
buckets — even in different tenants — backed by the same external S3/Azure bucket), so a file is
never streamed onto itself. The source content-type is preserved. The successfully-copied source files are emitted, so
Copy-OrchBucketItem … | Remove-OrchBucketItemperforms a transaction-safe copy-then-delete move. -
The bucket-item cmdlets compose via the pipeline.
Get-OrchBucketItem,Export-OrchBucketItem,
Copy-OrchBucketItem, andRemove-OrchBucketItemnow alias-Nameas-Bucket, so a piped
bucket-file object binds the bucket/folder/file by property name. This makesGet-OrchBucketItema
filterable file-selector front end: select with the full power ofWhere-Object(by size,
content-type, date, … — beyond what a-FullPathwildcard can express) and pipe the exact set into
Export-(download),Copy-(copy), orRemove-OrchBucketItem(delete). For example,
Get-OrchBucketItem docs * | Where-Object ContentType -eq 'application/pdf' | Export-OrchBucketItem -Destination C:\pdfs.
Changed
Cmdlets
- BREAKING:
Remove-OrchBucketItemnow requires-Nameand-FullPath. Both were previously
optional, so a bareRemove-OrchBucketItem -Recurse— orRemove-OrchBucketItem MyBucketwithout
-FullPath— would delete files by omission, in the worst case every file in every bucket. They are
now mandatory, aligning the cmdlet with the rest of theRemove-Orch*family (which all require a
mandatory-Name) and closing that footgun. To delete all files in a bucket, pass*explicitly:
Remove-OrchBucketItem MyBucket *.
Fixed
Cmdlets
-
Import-OrchBucketItemnow sets a correct content-type for many more file extensions. A range of
common formats were missing from the extension → MIME-type table, so they were uploaded as
application/octet-stream. Added mappings for text/config/code (.md,.markdown,.yaml/.yml,
.log,.tsv,.ini,.conf,.properties,.toml,.sql,.mjs,.xaml), modern images
(.avif,.heic/.heif,.jfif), audio/video (.m4a,.aac,.ogg,.opus,.wma,.webm,
.mkv,.m4v,.mpeg/.mpg,.3gp), archives (.tgz,.bz2,.xz), OpenDocument/EPUB
(.odt,.ods,.odp,.epub), and fonts (.woff,.woff2,.ttf,.otf,.eot)..jswas also
updated from the deprecatedapplication/javascripttotext/javascript(RFC 9239), matching.mjs.
Files whose extension is still unknown remainapplication/octet-stream, andCopy-OrchBucketItem
continues to preserve the source's content-type. -
A transient server error no longer wedges the cache for the rest of the session. HTTP 500
and 502 responses were treated as deterministic and cached per slot, so after a single transient
blip every later call for that entity — including tab-completion — re-threw the cached error without
retrying, untilClear-OrchCache/Import-OrchConfig. They are now cached only briefly (a
2-minute TTL) and then expire, so the slot self-heals once the server recovers: tab-completion
stays fast during the outage but recovers on its own afterward. Genuinely deterministic statuses
(400/403/404/410/501) still cache until explicitly cleared, and statuses the retry layer already
treats as transient (429/503/504) are still never cached — keeping the cache and retry layers
consistent about what "transient" means.
v1.9.7
Added
Cmdlets
- Progress bars across the module, now naming the item currently being processed. The name was
previously left off because showing wide characters (Japanese/Chinese/Korean/emoji) in a progress
bar breaks its rendering (PowerShell issue #21293); this release works around that by replacing
each run of wide characters with[N](N = hidden character count), keeping the narrow/ASCII parts
of a name visible (e.g.Invoice請求Folder→Invoice[2]Folder), so the bars can finally be
informative. Read cmdlets that fan out over folders/drives (e.g.Get-OrchAsset,Get-OrchQueue,
Get-OrchProcess, theGet-Orch*Version/*Itempairs, the Du/Df/Tm getters) show a real
percentage as their parallel fetches complete; mutation cmdlets (Set/Remove/Add/Update/
Newacross assets, queues, triggers, users, folder users/machines, licenses, …) show per-item
progress as they write. A version gate restores full names once the upstream fix (PR #26185) ships.
Changed
Cmdlets
Get-OrchProcess(list-only path) fetches each folder's processes in parallel (cap=4) via
OrchThreadPool.RunForEach, instead of one folder at a time, matching the other folder-scoped Get
cmdlets.- The two-phase Get cmdlets now show a real percentage.
Get-OrchPackageVersion,
Get-OrchLibraryVersion,Get-OrchTestDataQueueItem,Get-OrchUserDetail,
Get-Orch{Asset,Bucket,Queue}Link,Get-PmGroupLicense, andGet-PmGroupMemberrun their two
phases sequentially (list parents, then fetch children) so each phase's bar has a known
denominator.Get-OrchUserDetail's bar in particular changes from a running index with no total to
a real percentage. Trade-off: output no longer streams during the listing phase — negligible for
the common single/few-folder case, a slightly later first object under a large-Recurse.
Internal
- Added
ProgressExtensions.WithProgressBar<T>()— an enumerable wrapper mirroringWithCancellation
— for single-threaded loops, andOrchThreadPoolImpl.GetResultWithProgress()for parallel
RunForEachloops (fills the bar with the true completed-count, names the item being awaited). - Removed
ChainedThreadPool/OrchThreadPool.RunForEachChained(~200 lines of streaming
producer/queue/dual-phase-semaphore code): every two-phase cmdlet now uses two sequential
RunForEachpasses, leaving a single parallel primitive.
v1.9.6
Added
Cmdlets
Get-OrchQueueItem -Id— fetch specific queue items by id. Accepts multiple comma-separated
values, emitted as a single ODataId in (...)filter (one server round trip, with the same
$expand'd shape and Path / PathName / Name enrichment as every other filter). Tab completion on
-Idsuggests ids already loaded in the cache for the targeted queue(s) and excludes ids already
typed on the same-Idlist. Live-verified on Automation Cloud v20.
Changed
Provider
Copy-OrchAssetper-user-value drop warnings are now actionable, and-WhatIfpreviews them.
When a per-user asset value's user or machine isn't assigned to the destination folder, that value
is dropped (the server would otherwise silently discard it, and could wipe the asset's global value).
The warning now states the valueis droppedand shows a copy-paste-ready remediation —
Copy-OrchFolderUser -Path <src> -UserName <user> -Destination <dst>(orCopy-OrchFolderMachine
for machines), with paths / names single-quote escaped.-WhatIfemits the same warnings without
copying, so the loss is visible before committing. To avoid flooding when many values drop, after
the 5th drop in one copy a single bulk hint
(Copy-OrchFolderUser -Path <src> * -Destination <dst>) is emitted and the rest are suppressed.
Scoped to directCopy-OrchAsset;Copy-Item -Recursealso copies folder users / machines, so
nothing is dropped there. Live-verified on Automation Cloud v20.
Fixed
Cmdlets
Update-OrchQueue(and any queue edit) failed on Orchestrator v11–v13. When a field absent
from the olderQueueDefinitionDto(Tags,Encrypted,IsProcessInCurrentFolder,
FoldersCount) reached the request, the server rejected the whole call with
"queueDefinitionDto must not be null"(HTTP 400). These< v14fields are now stripped for the
Edit/Putpaths as well asCreate(in the sharedStripQueueFieldsForApiVersion), so queue
edits survive on v11–v13. Live-reproduced and fixed on 21.10.4 (API v13). (Long-standing — the
strip previously covered only the create path.)Get-OrchBucketLinkcould return stale folder-sharing after a folder move / cache clear.
ClearFolderCachedropped the folder'sAssetLinksandQueueLinksentries but not
BucketLinks— all three are the same id-keyed tenant cache and none are auto-cleared per folder,
so a staleBucketLinksentry survived e.g.Move-Item.ClearFolderCachenow drops
BucketLinksfor the folder too, symmetric with assets and queues. (Long-standing.)
Internal
- Consolidated queue retention defaulting into
OrchAPISession.CreateQueue(kept the CloudNone→Deleteguard). - Queue-item by-id now goes through the
QueueItemscache as anId in (...)filter; removed theGetQueueItemByIdendpoint. - Removed a duplicate
SearchPmDirectoryCacheclear inClearTenantCache; folded the trigger executor-robot fetch intoTriggersDetailed(removed theGetTriggershim). - Moved the provider's
Invoke-Itemhandler toInvokeItem.cs; simplifiedConsoleCancelHandler. CopyAssetsrefactor: the real copy and-WhatIfpreview share one drop path, throttled byDropWarningBudget.