Skip to main content

Sandboxes

🔒Paid feature

This is a paid feature and requires involvement of Rossum Sales and/or Rossum Professional Services. Consider contacting the respective teams using the following form: https://rossum.ai/form/contact/

Rossum Sandboxes allow for isolated development of the solution and easy deployments of the tested solution to production.

Using Sandboxes currently requires installation of an external tooling available at: https://github.com/rossumai/deployment-manager

Installation

First, download the installation script for our Sandboxing tool deployment-manager from its Rossum GitHub repository:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/rossumai/deployment-manager/main/install.sh)"

The script will automatically run and install the Sandboxing tool in the ~/.local/bin folder making it available globally under the command prd2.

To upgrade to the latest version, run:

prd2 update

You can find more information here: https://github.com/rossumai/deployment-manager

Alternatively, you can install the tool manually (advanced):

cd $(mktemp -d)
git clone git@github.com:rossumai/deployment-manager.git
cd deployment-manager

python3 -m venv .
source bin/activate
python3 -m pip install pipx

python3 -m pipx install . --force
Using Microsoft Windows?

Sandboxes are currently not supported on Windows. You can, however, use WSL to run the prd2 command: https://learn.microsoft.com/en-us/windows/wsl/install

Available CLI commands

Complete list of commands and their parameters can be found when running prd2 --help:

Usage: prd2 [OPTIONS] COMMAND [ARGS]...

Options:
--version Show the version and exit.
--help Show this message and exit.

Commands:
deploy Group of commands related to deploying from source to...
hook Group of commands related to working with hooks
init Creates a new project directory with the specified...
migrate-mapping Updates the current mapping.yaml to conform with the...
pull Downloads all Rossum objects from the user's default...
purge Deletes all objects in Rossum based on IDs in the...
push Updates local files that were changed into Rossum.
update Updates the PRD command to the latest version.

For more information about each command, run prd2 <command> --help (example for pull command):

Usage: prd2 pull [OPTIONS] [DESTINATIONS]...

Downloads all Rossum objects from the user's default (first) organization.
Creates a local organization directory structure with the configs of these
objects. In case the directory already exists, it first deletes its contents
and then downloads them anew.

Options:
-c, --commit Commits the pulled changes automatically.
-a, --all Downloads all remote files and overwrites
the local ones in the selected destinations.
-s, --skip-objects-without-subdir
If there are objects whose subdir cannot be
determined, user is not manually prompted -
objects are not downloaded.
-m, --message TEXT Commit message for pulling.
--help Show this message and exit.

Available configuration options

The only necessary configuration is in the example-org/credentials.yaml and in the prd_config.yaml files right after running prd2 init. The init command will guide you through the process so you don't have to worry about the configuration later (in fact, it is not advised to update this config manually; instead re-run the init command).

Here is how the credentials file looks like:

example-org/credentials.yaml
token: b1946ac92492d2347c6235b4d2611184

And here is how the prd_config.yaml file looks like (example):

prd_config.yaml
directories:
production-org:
org_id: '123123'
api_base: https://api.elis.rossum.ai/v1
subdirectories:
default:
regex: ''

Configuring mapping.yaml file (DEPRECATED)

DEPRECATED (for v1 only)

Note, this section describes how to configure the mapping.yaml file which is only used in the deprecated v1 version of prd. The latest version of prd2 does not use this file.

Learn how to upgrade to the latest version here: Migration guide from v1 to v2.

Note that this file is automatically generated by the prd pull command. It is typically not necessary to configure it manually unless some more advanced use-case is needed.

# The main key describing `source` organization details:
ORGANIZATION:
# ID of the `source` organization:
id: 123456
# Name of the `source` organization:
name: MyOrganization (Sandbox)
targets:
# ID of the `target` organization (if any):
- target_id: 654321
WORKSPACES:
# IDs of the `source` workspaces:
- id: 123456
# Name of the `source` workspace:
name: 'My Test Workspace'
targets:
# ID(s) of the `target` workspace(s) (there can be none or more than one):
- target_id: null
QUEUES:
# IDs of the `source` queues belonging to the `source` workspace above:
- id: 123456
# Name of the `source` queue:
name: Invoices
targets:
# ID(s) of the `target` queue(s) (there can be none or more than one):
- target_id: null
# (optional) You could override attribute on the target using `attribute_override`
## - for example you can have `name:` on `target` different from the `source`
attribute_override:
name: Invoices (PROD)
INBOX:
# IDs of the `source` inbox belonging to the `source` queue above:
id: 123456
# Name of the `source` inbox:
name: Invoices
targets:
# ID(s) of the `target` inbox(s) (there can be none or more than one):
- target_id: null
HOOKS:
# IDs of the `source` hooks:
- id: 123456
# Name of the `source` hook:
name: Supplier Data Matching
targets:
# ID(s) of the `target` hook(s) (there can be none or more than one):
- target_id: null
SCHEMAS:
# IDs of the `source` schemas:
- id: 123456
# Name of the `source` schema:
name: Tax invoices (US) schema
targets:
# ID(s) of the `target` schema(s) (there can be none or more than one):
- target_id: null