Download OrgFlow

Try OrgFlow completely free for 2 months, with no limits. No strings attached. No credit card required.

The same download and binaries are used for both trial and paid licenses.

x86 (32-bit)x64 (64-bit)
Installer package (.msi)
ZIP archive

Run the downloaded .msi file to install OrgFlow on your computer.

OrgFlow is not yet signed. When running the .msi installer, you may see warnings about running an unrecognized app or installing software from an unknown publisher. We plan to start signing our binaries and installer with a publisher certificate in the future.

By downloading and using OrgFlow you are agreeing to our End User License Agreement.

x64 (64-bit)
Installer package (.pkg)
ZIP archive

OrgFlow runs on both Intel and Apple Silicon processors.

To use the installer package:

  1. Right-click on the downloaded .pkg file and select Open from the context menu
  2. Click the Open button in the dialog box

Right-clicking is necessary because OrgFlow is not yet signed or notarized by Apple. We plan to start signing and notarizing our binaries and installer with a publisher certificate in the future.

By downloading and using OrgFlow you are agreeing to our End User License Agreement.

x64 (64-bit)
ZIP archive

Either add the orgflow executable to your PATH variable, or always run OrgFlow from the extracted directory.

By downloading and using OrgFlow you are agreeing to our End User License Agreement.

Docker images for OrgFlow can be found here:
https://hub.docker.com/r/orgflow/cli

To run OrgFlow in a Docker container interactively:

$ docker run --interactive --tty --rm orgflow/cli
$ orgflow --help

Please see our docs for more advanced Docker scenarios.

We currently publish Linux-based Docker images only. To run OrgFlow in a Docker container on Windows, your system must be configured to use Linux containers.

By downloading and using OrgFlow you are agreeing to our End User License Agreement.

OrgFlow for GitHub Actions:
https://github.com/marketplace/actions/orgflow-salesforce-devops-for-github

You are not required to use our actions in order to use OrgFlow in your GitHub Actions workflows, but they do a lot of heavy lifting for you and ensure OrgFlow is configured and invoked in a way that ensures an optimal experience in GitHub Actions.

See our demo template repository for complete sample workflows and a guided tutorial.

Our setup action downloads, installs and configures OrgFlow in your GitHub Actions workflow using a single step:

steps:
  # Download and install latest version
  - uses: orgflow-actions/setup@v1
    with:
      license-key: ${{ secrets.ORGFLOW_LICENSEKEY }}
    env:
      ORGFLOW_ACCEPTEULA: "true"
  # Run any OrgFlow command
  - run: orgflow stack:list

By installing and using OrgFlow in GitHub Actions you are agreeing to our End User License Agreement.

Frequently Asked Questions

Yes, OrgFlow requires a valid license key to run. The first time you run an OrgFlow command, you’ll be asked to either provide a valid license key or request a trial license key.

If you already have a paid subscription, enter the license key you received when starting your subscription.

To request a trial license key, simply provide your email address when prompted. A trial license key will be issued and sent to the email address provided. No credit card or other billing information is required. A trial license key lets you use OrgFlow completely free for 2 months, with no limits. To continue to use OrgFlow after your trial license expires, visit our pricing page to find the right subscription plan for your team.

A trial license key entitles you to use OrgFlow for free for 2 months (also for production/commercial use) with an unlimited number of stacks and orgs. This is essentially equivalent with our Enterprise plan, except without the SLA for technical support. We will provide technical support to you during your trial period, but without a guaranteed SLA or response time.

Download OrgFlow from this page and get started. The first time you run an OrgFlow command, you’ll be asked to either provide a valid license key or request a trial license key.

To request a trial license key, simply provide your email address when prompted. A trial license key will be issued and sent to the email address provided. No credit card or other billing information is required. A trial license key lets you use OrgFlow completely free for 2 months, with no limits.

No, you only need to provide a valid email address to which the free 2-month trial license should be sent.

Whether you have a paid subscription or want to try OrgFlow for free, you download the product from this page. The same download and binaries are used for both trial and paid licenses.

To use OrgFlow, you also need:

  • a Salesforce account (see below for more information on supported Salesforce editions).
  • a Git repository, either one offered by a commercial provider (such as GitHub, Azure DevOps or Bitbucket) or a self-hosted one that you set up and manage yourself. OrgFlow supports any standard Git repository.

We do not provide Salesforce accounts and Git repositories as part of our services.

OrgFlow uses the Metadata API to connect to your Salesforce orgs, in order to flow metadata changes between Salesforce and your Git repository.

OrgFlow supports any Salesforce org where the Metadata API is available, including:

  • Enterprise Edition
  • Unlimited Edition
  • Performance Edition
  • Developer Edition
  • Professional Edition with the Web Services API add-on enabled

OrgFlow requires:

  • An operating system supported by .NET 6.0. Please refer to Microsoft's documentation on supported releases for each OS.
  • Git version 2.25 or later.

When running OrgFlow from our Docker images, all requirements are already provided by the images.

Visit our support page to get in touch with us for technical support.

Our installer packages and binaries are not yet digitally signed or notarized.

  • On Windows, when running the .msi installer package you may see warnings about running an unrecognized app or installing software from an unknown publisher.
  • On macOS, specific steps are necessary (see installation instructions for macOS above) when running the .pkg installer package, in order to bypass Gatekeeper in macOS Catalina or later.

We plan to start signing and notarizing our binaries and installer packages with a publisher certificate in the future.

Not currently. However, installation through Homebrew will be provided in the near future.

Not currently. Installation through Windows package managers such as Chocolatey or winget may be provided in the future. If this feature is important to you, please reach out to us at support@orgflow.io.

Not currently. Installation through Linux distro package managers may be provided in the future. If this feature is important to you, please reach out to us at support@orgflow.io.

Change Log

VersionRelease notes
1.11.0 (2022-12-08)

Introducing history diffing ⚡️

Previously, during outbound flow, OrgFlow would always retrieve the full target org for comparison with the repository in order to generate a deployment delta. This retrieve could be a major performance bottleneck during outbound flows, especially with larger orgs.

This release introduces a new diffing method called history diffing where, instead of retrieving the target org, OrgFlow uses the Git branch history to build an accurate diff target, based on the recorded commit hashes at which each component was last successfully deployed. This results in significantly faster outbound flows. It also significantly reduces the risk of overwriting changes in the target org that have not yet been flowed into the Git branch.

The new history diffing is the default for outbound flows during both env:flowout and env:flowmerge commands. A new --forceOrgDiff has been added to opt out of history diffing and force a full retrieve of the target org. This can be necessary in some cases, such as when an environment's sandbox has been manually refreshed.

Other new features and functionality

  • A new env:tags:get command has been added to read an environment's tags
  • New options have been added to the interactive conflict resolution experience:
    • Resolve all as local
    • Resolve all as remote
    • Let me choose local or remote for each file
  • A new --conflicts argument has been added to the env:flowin command, allowing user to specify up-front how merge conflicts should be resolved

Fixes and improvements

  • Improves reliability of retrieving Profile, Translations and CustomObjectTranslation metadata
  • Introduces a new retrieve batching algorithm that yields more even batch distribution and faster retrieval
  • Improves error messages when user provides an incorrect environment name to a command
  • Fixes an issue where Territory2Model metadata components were not correctly retrieved
  • Various UX improvements during interactive merge conflict resolution
  • Metadata is now re-normalized after interactive conflict resolution
  • Adds normalization rules for multilineLayoutFields elements in Layout components
  • Adds normalization rules for LeadConvertSettings metadata
  • Adds normalization rules for Workflow metadata
  • Various performance and reliability improvements during inbound flow
1.10.2 (2022-11-11)

Fixes and improvements

  • Fixes an issue where information about merge conflicts were not printed to output
  • Fixes an issue where folders were not correctly attributed to their authors
  • Fixes an issue where env:create could fail if login credentials had not yet propagated to a freshly created sandbox
  • Improves contents of jUnit file exports
  • Improves normalization of Audience, CustomApplication, CustomObject, DataCategoryGroup, and EntitlementProcess types
1.10.1 (2022-10-28)

Fixes and improvements

  • CLI now allows user to select from a list of available stacks if no stack has been specified
  • Fixes an issue where inbound flow of certain folder components would sometimes fail during the commit phase
1.10.0 (2022-10-25)

Introducing environment branch switching

Environment branch switching allows you to change the backing Git branch for an OrgFlow environment, which means that you can share a sandbox between several long-running feature branches.

See our documentation on branch switching for more details.

  • env:branch:switch allows you to change the backing Git branch of an environment - docs (#2853)
  • env:branch:list lists all the Git branches that have been associated with a given environment (#2854)
  • env:snapshot:list has a new --showAllBranches argument to help support branch switching (#2855)
  • env:rollback now supports rolling back to a target snapshot associated to a Git branch other then the environment's current Git branch (#2856, #2857)

New features and functionality

  • Adds --tags argument to env:create to allow tags to be set on an environment as it is created (#2548)
  • Adds --environmentTags argument to stack:create to allow tags to be set on the production environment as it is created (#2548)
  • Adds --withoutTags argument to env:list to enable filter of environment by the absence of a tag or tagged value

Fixes and improvements

  • Fixes an issue where merge conflicts were not printed to output
  • Fixes an issue where some snapshots would be missing when running the env:snapshot:list command

Other notes

The OrgFlow CLI connects to some of our cloud based APIs to facilitate things such as the environment state store, update checks, and license validation. We always strive to maintain backwards compatibility between previously released versions of OrgFlow and these APIs.

However, as OrgFlow has grown, we've realized that our licensing API cannot keep up as we add new features and functionality.

As a result, we have had to redesign this API so that we can continue to add new features in a reliable way. Unfortunately, there was no way to maintain backwards compatibility with versions of the CLI below 1.10.0.

Although this required update might be an inconvenience, it helps to put in the groundwork to prevent further breaking changes between the CLI and our APIs.

We always recommend that you keep up to date with the latest versions of OrgFlow. By keeping up to date you get access to the latest features, as well as bug fixes and performance improvements.

We adopt semantic versioning, so you can be confident that updating to the same major version (v1.x.x) will not break any of your scripts or workflows.

If you have manually installed the OrgFlow CLI, re-download and install the latest version from the top of this page.

If you are running OrgFlow in an automated context with the Docker image or the setup action, then you need to make sure that you are not pinned to a version below 1.10.0. The Docker tag latest ensures that you are always running on the latest version. The setup action will install the most recent version by default, or if you have specified a version for this action, then we recommend specifying 1 for this value in order to ensure you are always running on the latest version of the OrgFlow CLI.

1.9.0 (2022-10-17)

New features and functionality

  • Adds the ability for env:flowout --checkOnly to use an existing repository instead of cloning, using a new --useLocalRepo argument
  • Adds the ability for env:flowin to perform a check-only inbound flow using a new --checkOnly argument

Fixes and improvements

  • Improves normalization of workflow time trigger metadata (#2045)
  • Improves normalization of ModerationRule components (#2841)
  • Adds support for flowing Settings components reliably (#2042)
  • Changes the --output=json argument to always print compact single-line JSON
  • Improves support for flowing PermissionSet and related types
1.8.2 (2022-10-09)

Fixes and improvements

  • Improves error messages and diagnostics when encountering invalid or corrupted metadata
1.8.1 (2022-10-01)

Fixes and improvements

  • 2851 - Fixes an issue where Salesforce authentication prompts could appear multiple times during a command
  • Fixes an issue where JSON output of md:stats would be incorrect
  • Improves command start-up time by parallelizing several initial checks
  • Improves normalization of ObjectTranslation components to reduce merge conflicts
  • Improves progress output during env:list
1.8.0 (2022-09-04)

Introducing Environment Tags

Tags are arbitrary name/value pairs that you can set on the environments in your OrgFlow stack. Their meaning and use are completely up to you and the processes and pipelines you build around them.

Tags are a simple but powerful new automation feature of OrgFlow. They allow you to develop automation that treats environments differently without having to hard-code environment names. Instead, you can set different tags on different environments and base your automation logic on those tags.

See our documentation on environment tags for more details.

New features and functionality

  • 2540 - env:tags:set allows you to set tags on environments (docs)
  • 2541 - env:tags:delete allows you to delete tags from environments (docs)
  • 2845 - env:list has a new --withTags argument to filter environments based on tags, and a new --useRegex argument to use regular expression syntax in tag values
  • 2846 - env:list has a new --nameOnly argument to print only environment names

Fixes and improvements

  • 2844 - Fixes an issue where the CLI would retry indefinitely on transient errors when calling licensing service instead of falling back to using a cached verification token
1.7.2 (2022-08-20)

Fixes and improvements

  • Improves cancellation behavior when CLI receives SIGTERM without preceding SIGINT (improves compatibility with Azure Pipelines)
1.7.1 (2022-07-21)

Fixes and improvements

  • Fixes an issue that prevented the CLI from checking for available updates
1.7.0 (2022-07-20)

New features and functionality

  • 2652 - env:flowout and env:flowmerge commands now support an --allOrNothing option to ensure that either all detected changes are deployed successfully, or nothing at all (see documentation for more information)

Fixes and improvements

  • Fixes an issue where current prompts and messages would sometimes appear to be printed too far up the terminal window
1.6.1 (2022-06-16)

Fixes and improvements

  • 2839 - Enhanced Salesforce domains are now fully supported. When a "my" domain is configured as the base sign-in URL on the stack, sandbox sign-in URLs will now be correctly inferred. Example: for company Acme and sandbox BETA, sign-in URL will be inferred to either Acme--BETA.my.salesforce.com or Acme--BETA.sandbox.my.salesforce.com depending on whether enhanced domains for sandboxes were enabled at the time of create/refresh.
1.6.0 (2022-05-27)

Introducing Snapshots and Rollback

Snapshots automatically save copies of important state data about your Git repository and Salesforce metadata at key points, to allow an environment to later be rolled back to one of those points. Snapshots are automatically created after every successful inbound and outbound flow (starting from version 1.5.0).

Rollback allows you to roll back Salesforce metadata (in your Git branch and your Salesforce org) to match the state it was in at the time a snapshot was taken.

New features and functionality

  • 2813 - env:snapshot:list allows you to list all the snapshots for a given environment
  • 2814 - env:rollback allows you to roll back the metadata for a given environment to match the state it was in at the point of the target snapshot
  • 2818 - env:snapshot:delete allows you to delete snapshots from a given environment

Fixes and improvements

  • 2812 - The output of the env:flowin, env:flowout, and env:flowmerge commands now include any snapshot numbers that were created
1.5.0 (2022-05-13)

Snapshots

Starting with this release, snapshots are saved after successful inbound and outbound flows.

New features and functionality

  • 2834 - Adds --waitForLock argument to allow waiting for locked environments to be released (applies to env:flowin, env:flowout, env:flowmerge, env:create and env:delete commands)
  • 2810 - Inbound flow now creates a snapshot after successful completion
  • 2810 - Outbound flow now creates a snapshot after successful completion

Fixes and improvements

  • 2667 - CLI now continuously prints test failures to STDERR during deployments and test runs
  • 2672 - CLI now prints a link to the corresponding test execution UI in Salesforce when executing Apex tests
  • 2820 - env:flowout and env:flowmerge commands now print each deployment attempt to STDERR regardless of --output argument
  • 2821 - env:flowout and env:flowmerge commands now print result details to STDOUT even if flow is unsuccessful
  • 2822 - When using --output=json and STDOUT is redirected, pretty results are now also printed to STDERR for better observability
  • 2829 - env:flowmerge command now pushes merge result to remote only if outbound flow was successful
1.4.1 (2022-04-12)

Fixes and improvements

  • Fixes issue in env:flowout and env:flowmorge commands where --jUnitTo could not be specified if --testLevel was not also specified
  • Fixes issue in env:flowmorge command where --testLevel=runSpecifiedTests and --tests could not be specified together
  • Fixes various UX issues around progress display
  • 2231 - Fixes issue where locally saved credential files could be orphaned when a stack is deleted
  • 2623 - Fixes issue where some instances of your license key might not get correctly masked in log files
  • 2625 - Improves jUnit output files to better comply with the expected schema
  • 2797 - Fixes issue where an outbound flow might fail to exclude nested components
  • 2806 - Fixes issue where inbound flow could record incorrect environment parity hashes in the state store
1.4.0 (2022-03-24)

New features and functionality

  • 2387 - Adds support for cancellation via several additional POSIX signals (SIGINT, SIGQUIT, SIGHUP, SIGTERM) to maximize compatibility with different hosting environments
  • 2387 - Adds support for faster deployment cancellation via the ORGFLOW_DEPLOYMENTS__ENABLEFASTCANCELLATION environment variable for cases where the host imposes time limits on cancellation, e.g. build agents

Fixes and improvements

  • 2679 - Fixes issue where env:create and sb:create commands would not include the sandbox name in the output
  • 2771 - Fixes issue where inbound excluded components might be recorded incorrectly in the state store
  • 2783 - Fixes issue where interactive exclude could fail after submitting selection
  • 2794 - Improves rollback logic during env:flowmerge in cases where the merged branch could not be pushed to the remote repo
  • 2795 - Improves env:flowmerge command output to include failed tests
  • 2796 - Fixes issue where env:flowout and env:flowmerge commands would print "validation-only" on a non-validation only deployment, and vice versa
1.3.1 (2022-02-25)

Fixes and improvements

  • 2770 - Fixes issue where time token in log file paths would not be correctly substituted
  • 2788 - Fixes issue where CLI could sometimes fail with exit code 7 when many instances were started simultaneously
  • 2790 - Fixes issue CLI download packages for Windows were missing required dependency Microsoft.Azure.Cosmos.ServiceInterop.dll
1.3.0 (2022-02-01)

New features and functionality

  • 2459 - Adds ability for Git credentials to be saved locally on the current device
  • 2764 - Adds ability to specify the format of warning and error messages
1.2.5 (2022-01-28)

Fixes and improvements

  • 2703 - Fixes issue where stack:create would not commit any metadata if --archivePath began with a /
  • 2745 - Fixes issue where env:flowout and env:flowmerge would not return the correct exit code if there were any test failures during a check-only deployment
  • 2762 - Fixes issue where stack:create could delete a pre-existing stack with the same name
1.2.3 (2021-12-15)

Fixes and improvements

  • 2708 - Fixes issue where sb:list --output=json incorrectly labelled a property in the output
  • 2709 - Fixes issue where env:flowin --output=json could fail when printing output
1.2.2 (2021-12-08)

Fixes and improvements

  • 2666 - Fixes issue where UserCriteria metadata might not be normalized as expected
  • 2669 - Fixes issue where reading or writing user data could conflict with concurrent processes
  • 2673 - Fixes issue where auth:key:save --clear would require a valid encryption key

Other notes

This release also moves the CLI from .NET 5 to .NET 6. This change should not impact you, but it may be worth while noting that the orgflow/cli Docker image is now built upon the dotnet/aspnet:6.0 image (as opposed to the dotnet/aspnet:5.0 image).

1.2.1 (2021-11-24)

Fixes and improvements

  • 2280 - Fixes issue where conflict resolution during inbound flow could result in missing commits in Git repository
  • 2599 - Adds more detailed diagnostic logging during inbound flows
  • 2626 - Fixes issue where env:test and tool:test JSON outputs did not contain information about test classes executed
  • 2627 - Fixes issue where env:create would throw an exception when using JSON output format
  • 2628 - Fixes issue where stack:create include prompt would incorrently require at least one selection
  • 2629 - Changes sb:list JSON output to be an array
  • 2630 - env:delete no longer deletes the sandbox or branch by default
  • 2649 - Improves tabular output format of stack:list
  • 2650 - stack:create output now contains more information about the created stack
  • Improves memory efficiency during metadata ZIP file extraction
1.1.2 (2021-10-25)

Fixes and improvements

  • 2598 - Fixes issue where log file paths could include invalid characters
  • 2612 - Fixes issue where stack:create could fail if stderr or stdinput was redirected
  • 2613 - Fixes issue where md:gitcommit would always print output in the 'pretty' format
  • 2614 - Fixes issue where md:retrieve would always print output in the 'pretty' format
  • 2615 - Fixes issue where stack:create could generate incorrect include specs
1.1.1 (2021-10-20)

Fixes and improvements

  • 2596 - Fixes issue where undeployable component records could be corrupted during an outbound flow
1.1.0 (2021-10-14)

New features and functionality

  • 2565 - Adds ability to output test results in JUnit format to env:flowmerge
  • 2573 - Adds tokenization to log file paths

Fixes and improvements

  • 2232 - Adds masking of sensitive values to logging
  • 2410 - Updates Salesforce Connected App information
  • 2416 - Updates --include argument on stack:create to allow multiple selection
  • 2420 - Fixes issue where env:test might not use stored Salesforce credentials (if any)
  • 2448, 2449, 2450, 2451 - Improves metric collection for product improvement and troubleshooting
  • 2485 - Removes outdated information from Windows installer
  • 2498 - Fixes issue where an exception could be thrown during the deployment process
  • 2514 - Fixes issue where stack:create could prompt for values that have already been provided
  • 2547 - Fixes issue where auth:git:save could fail if no password is provided
  • 2551 - Fixes issue where env:create could create an invalid environment record in the state store
  • 2552 - Fixes issue where Windows installer could suggest an incorrect installation folder
1.0.4 (2021-09-17)

Fixes and improvements

  • 2386 - Improves normalization engine to support conditional filtering, and updates normalization rules for Global Value Sets to support inactive value normalization
  • 2486 - Updates text in macOS installer dialogs
  • 2498 - Fixes issue where undeployable folderized components would cause failure during env:flowout
  • 2511 - Fixes issue where env:unlock would incorrectly require an encryption key
  • 2513 - Fixes issue where stack:delete could fail if console input was redirected
1.0.3 (2021-08-28)

First public release 🎉

Icon For Arrow-up