PAM Project Import/Export

PAM Project Import and Export

Commander supports round-trip import and export of PAM project configurations as JSON. Use pam project export to capture an existing project and pam project import to apply it to the same or a different tenant.

Applies to: Keeper Commander 17.3+ (PR #2006 for export, PR #2005 for import dedup guard, merged 2026-04-30)


Commands

Command
Description

pam project export

Export a PAM project configuration to JSON

pam project import

Import a PAM project configuration from JSON


pam project export

Walks the vault graph for a given PAM project configuration UID and emits a JSON document that is directly re-importable via pam project import.

Syntax

pam project export -p <config-uid> [--output <file>]

Parameters

Parameter
Required
Description

-p <config-uid>

Yes

UID of the PAM project configuration to export

--output <file>

No

Write JSON to this file path. If omitted, prints to stdout.

Output schema

The exported JSON matches PROJECT_IMPORT_JSON_TEMPLATE exactly and is always re-importable without modification:

Field
Description

tool_version

Identifies the export generator; activates generator-aware import path

project

PAM project metadata (name, node, shared folder UIDs)

shared_folder_users

Users with access to the shared folder

shared_folder_resources

Resources linked to the shared folder

pam_configuration

Full PAM configuration (gateway, rotation policy, etc.)

pam_data.resources

PAM-managed resources (machines, databases, directories)

pam_data.users

PAM-managed users, de-duplicated across resources

Design properties

  • Deterministic outputsort_keys=True ensures stable JSON suitable for git diffs and drift detection

  • Idempotent re-import — resource UIDs are derived from Keeper record UIDs, which are stable across exports

  • User de-duplication — users shared across multiple resources appear once in pam_data.users

Examples

Export to stdout:

Export to a file for later import or version control:

Round-trip — export from one tenant, import to another:


pam project import

Imports a PAM project from a JSON file. Supports re-importing an export from pam project export or a manually authored import document.

Syntax

Parameters

Parameter
Required
Description

--filepath <file>

Yes

Path to the JSON import document

--dry-run

No

Validate and preview without making changes

Duplicate UID guard (PR #2005)

pam project import now rejects import documents that contain duplicate uid values before creating any records.

Before this fix: Duplicate UIDs were silently preserved, producing an ambiguous dependency graph and incorrect DAG links during record creation.

After this fix: If any uid value appears more than once across resources and users, the import aborts with a clear error message listing the duplicates. Zero records are created.

Valid imports with unique UIDs continue to work unchanged.

Import document format

Import documents must follow the same schema as pam project export output. Key rules:

  • All uid values across pam_data.resources and pam_data.users must be unique

  • tool_version is optional; its presence activates generator-aware import behaviour

  • UIDs should be stable base64-URL-encoded 16-byte values; the importer will generate them if absent

Example


Workflow: environment promotion

A common use case is promoting a PAM project from a staging tenant to production:


Notes

  • pam project export requires the authenticated user to have admin access to the PAM configuration and shared folder.

  • The export walks the vault graph live — ensure Commander has an up-to-date vault sync before exporting (sync command).

  • tool_version: "commander-export-1.0" in exported files activates a dedicated import branch that handles UIDs generated by Commander. Manually authored files without tool_version use the standard import path.

  • The duplicate UID guard in pam project import runs after the UID-normalisation pass, so externally supplied valid unique UIDs continue to work unchanged.

Last updated

Was this helpful?