| name | ppds-solutions-alm |
| description | Dataverse solution ALM with PPDS — export/import solutions, watch import jobs, inspect components, manage environment variables and connection references, and generate/sync/validate deployment settings files for target environments. Use when the user wants to export or import a solution, move customizations between environments, check why a solution import failed, fix orphaned connection references, set environment variables, or prepare deployment settings for a pipeline. Read ppds-core first for auth and safety rules. |
| license | MIT |
| metadata | {"ppds_cli_version_tested":"1.2.0","ppds_mcp_version_tested":"1.0.0"} |
PPDS Solutions ALM — move customizations, keep the receipts
Exact flags: references/cli-solutions.md,
references/cli-importjobs.md,
references/cli-environmentvariables.md,
references/cli-connectionreferences.md,
references/cli-deployment-settings.md,
references/cli-connections.md,
references/cli-publish.md.
Surface routing: mutations (export/import/publish/set) are CLI-first.
MCP read tools for shell-less hosts: ppds_solutions_list,
ppds_solutions_components, ppds_import_jobs_list, ppds_import_jobs_get,
ppds_environment_variables_list/get/set,
ppds_connection_references_list/get/analyze.
Solution round-trip
ppds solutions list -f json
ppds solutions get MySolution
ppds solutions components MySolution
ppds solutions export MySolution --managed -o ./out/MySolution_managed.zip
ppds solutions import ./out/MySolution_managed.zip --environment <target-url>
ppds importjobs wait <job-id> --timeout 30
ppds solutions publish
ppds solutions url MySolution
- Import is a mutation against the target — safety model rules apply:
state the target URL, get confirmation (especially Production), then run.
export defaults unmanaged; --managed for the deployable artifact.
--allow-outside-workspace is required to write outside the working dir.
- Import failed?
ppds importjobs list, then ppds importjobs get <id>
(and ppds importjobs data <id> for the raw result XML).
Target-environment configuration
ppds environmentvariables list -f json
ppds environmentvariables set <schema-name> "<value>"
ppds connectionreferences list --unbound
ppds connectionreferences analyze
ppds connections list
ppds deployment-settings generate --solution MySolution --output ./deploy/dev.json
ppds deployment-settings sync --solution MySolution --file ./deploy/dev.json
ppds deployment-settings validate --solution MySolution --file ./deploy/dev.json
Common mistakes (do not invent these)
| Wrong | Correct |
|---|
ppds solutions export --name MySolution | positional: ppds solutions export MySolution |
ppds solutions import --path file.zip | positional: ppds solutions import file.zip |
ppds solutions import --async --max-async-wait-time (pac style) | import returns a job; ppds importjobs wait <id> does the waiting |
ppds env-vars / ppds envvars | the group is ppds environmentvariables |
ppds connectionreferences update --connection <id> | binding connections is not a CLI write today — analyze/list diagnose; bind in the Maker portal |
ppds solutions checker / clone / pack | not in this CLI — use pac for those; PPDS covers list/get/export/import/components/publish/url |
Skill boundaries
| Need | Use instead |
|---|
| Reference data / records that ship with the solution | ppds-data |
| Plugin assemblies inside the solution | ppds-plugins |
| Entity/column changes before export | ppds-metadata |
| Web resources inside the solution | ppds-webresources |
| Auth, environment selection, error codes | ppds-core |