Overview

validate command helps you to test ((deployability, apex tests, coverage) a change made to your configuration / code against a target org. This command is typically triggered as part of your Pull Request (PR) or Merge process, to ensure the correctness of configuration/code, before being merged into your main branch.

sfp validates a change by deploying the changed packages into the target org. This is different from 'check only' deployment in other CI/CD solutions.


validate runs against a target org. To validate against a pooled scratch org, fetch one from the pool first (sfp pool fetch) and pass its username — the earlier sfp validate pool command, which fetched from the pool itself, has been removed.

--releaseconfig (also accepted as --domain) is required — validation is always scoped to one or more release configs.

// An example where validate is utilized against a target org 
sfp validate org -o ci \
                 -v devhub  \
                 --releaseconfig config/release-sales.yml \
                 --installdeps
// An example with branch references for intelligent synchronization
sfp validate org -o ci \
                 -v devhub \
                 --releaseconfig config/release-sales.yml \
                 --ref feature-branch \
                 --baseRef main

Both commands also require --repository and --sfp-server-url. Each defaults from an environment variable — GITHUB_REPOSITORY or GITLAB_REPOSITORY, and SFP_SERVER_URL — so they can be omitted in a pipeline that sets them.



The validate org command runs the following checks with the options to enable additional features such as dependency and impact analysis:

  • Checks accuracy of metadata by deploying the metadata to an org
  • Triggers Apex Tests
  • Validates Apex Test Coverage of each package (default: 75%)
  • Toggle between different modes for validation:
    • Thorough (Default) - Comprehensive validation with full deployments and all tests
    • Individual - Validates changed packages individually, ideal for PRs
  • Automatically differentiates between:
    • Packages to synchronize (upstream changes)
    • Packages to validate (PR changes)
  • Deploys only the components that changed, via component checksum skip — on by default, turned off for a run with --no-checksum-skip
  • [optional] - AI-Assisted Error Analysis - Intelligent error analysis and fix suggestions (learn more)
  • [optional] - Validate dependencies between packages for changed components
  • [optional] - Restrict validation to changed packages with --diffcheck (off by default)
  • [optional] - Skip test execution entirely (--skipTesting), or skip only coverage validation (--skipCoverage)
  • [optional] - Keep validating the remaining packages after a package's tests fail (--continueOnTestFailure) — the run still fails at the end
  • [optional] - Write the validation report to a directory (--markdownoutput) or publish the run to the server (--publish-results)
  • [optional] - Embed apex tests inside the deploy with --deploywithtests for faster validate (one round-trip; coverage read from the deploy response)
  • [optional] - Execute custom validation scripts for setup/cleanup workflows