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.

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.

Fix Descriptions (Deprecated)

fix-descriptions is deprecated as of Dodeca 8.10 and no longer performs any operation; it logs a warning and returns. Legacy artifact-description repairs require an older version of Dodeca Shell.