Artifact Commands
All artifacts in a Dodeca repository are uniquely identified by a combination of tenant, artifact ID, category, and version. These commands list, inspect, export, copy, delete, and search/update the contents of artifacts in the current tenant.
List Artifacts
List binary artifacts in the current tenant:
dshell/SAMPLE:>list-artifacts
Narrow the listing with --category and/or --id, add --latest-only to show only the highest version per ID/category, and add --include-system to include system/special artifacts that are otherwise omitted:
dshell/SAMPLE:>list-artifacts --category VIEW --latest-only
--add-columns adds extra columns to the default listing, and --output JSON writes the results as JSON instead of a table.
Print Artifact Contents
Many Dodeca objects are stored as compressed XML. Use print-artifact to decompress and display the contents of a single artifact:
dshell/SAMPLE:>print-artifact --artifact IncStmt --category VIEW --version 1
The contents are then displayed:
<View>
<ViewInformation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ID>IncStmt</ID>
<Name>Income Statement</Name>
<ViewTypeID>ExcelEssbase</ViewTypeID>
<NamedPropertySets />
</ViewInformation>
<Properties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<AllowSave>true</AllowSave>
<AllowSharing>true</AllowSharing>
...
--category and --version (default 1) can be omitted when the artifact ID alone is unambiguous. For example, if a tenant has multiple artifacts named IncStmt:
dshell/SAMPLE:>print-artifact --artifact IncStmt
Ambiguous artifact specification 'IncStmt' as there are 2 artifacts that match (GENERAL/1, VIEW/1)
The error identifies the matching category/version combinations so the specification can be narrowed:
dshell/SAMPLE:>print-artifact --artifact IncStmt --category VIEW
Add --bytes to print the raw byte content instead of decoded text, and --output-file to write the contents to a file instead of printing them.
Export a Single Artifact
export-raw-artifact exports the decoded contents of a single artifact to a file (there is no bulk/multi-artifact export command). When --output-file is not specified, the file is written to the current directory using the name <tenant>.<artifact-id>.<category>.<version>.<extension>. Most artifacts use the xml extension; artifacts in the GENERAL category use the extension from the artifact’s stored filename, falling back to xml when that filename has none. For example, exporting the IncStmt spreadsheet creates SAMPLE.IncStmt.GENERAL.1.xlsx:
dshell/SAMPLE:>export-raw-artifact --artifact IncStmt --category GENERAL --version 1
Use --output-file for an exact filename, optionally including a path (the parent directory must already exist; an existing file at that path is overwritten):
dshell/SAMPLE:>export-raw-artifact --artifact IncStmt --category GENERAL --version 1 --output-file "./artifacts/Income Statement.xlsx"
Copy an Artifact
Copy an artifact to a new ID within the current tenant:
dshell/SAMPLE:>copy-artifact --artifact IncStmt --category VIEW --version 1 --new-id IncStmtCopy
Delete Artifacts
Delete a single artifact:
dshell/SAMPLE:>delete-artifact --artifact IncStmtCopy --category VIEW --version 1
Delete every binary artifact in the current tenant:
dshell/SAMPLE:>delete-all-artifacts
Deploy a Recovery App
Deploy a minimal Smart Client recovery application artifact to the current tenant, useful for restoring client access after a configuration problem:
dshell/SAMPLE:>recovery-app
--recovery-app-id sets the artifact ID to use (defaults to RECOVERY).
Find and Update Artifact Content
evaluate-artifact-property and update-artifact-property search literal text, a regular expression, or an XPath 1.0 expression across one or more artifacts, and optionally apply an update. Select the artifacts to operate on with --id, --category, and --version (any may be omitted to widen the selection; --latest-only restricts to the highest version per ID/category, and --all-artifacts is required to explicitly select every artifact in the tenant when ID, category, and version are all omitted). --expect-artifact-count and --expect-match-count fail the command unless the selection/results match an exact expected count, which is useful for guarding automation against an unexpectedly broad or narrow match.
Find every artifact containing a literal string:
dshell/SAMPLE:>evaluate-artifact-property --expression "Sample.Basic" --category VIEW
Use --regex or --xpath to interpret --expression as a Java regular expression or an XPath 1.0 expression instead of literal text (mutually exclusive); --ignore-case applies to literal/regex matching only:
dshell/SAMPLE:>evaluate-artifact-property --expression "//EssbaseConnectionID" --xpath --category VIEW
update-artifact-property takes the same selection and expression options plus --new-value (the literal replacement text, XPath node value, or regex replacement string). It is preview-only unless --apply is given, and reports would-update/updated/unchanged counts either way:
dshell/SAMPLE:>update-artifact-property --expression "//EssbaseConnectionID" --xpath --new-value "Sample.Basic2" --category VIEW
dshell/SAMPLE:>update-artifact-property --expression "//EssbaseConnectionID" --xpath --new-value "Sample.Basic2" --category VIEW --apply
For an XPath update, --old-value acts as a compare-and-set guard: the update is only applied to nodes whose current value exactly matches. --ignore-locks allows updating locked artifacts (see Artifact Lock Commands), and --output JSON writes results as JSON instead of a table.