---
title: "Deployment Patterns"
slug: "deployment-patterns"
updated: 2025-09-15T09:26:56Z
published: 2025-09-15T09:26:56Z
canonical: "knowledge-base.rossum.ai/deployment-patterns"
---

> ## Documentation Index
> Fetch the complete documentation index at: https://knowledge-base.rossum.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Deployment Patterns

Each company has its own deployment pattern. The most common ones (supported by Rossum Sandboxing tool) are:

## Single environment for sandbox and production

This is the simplest pattern for companies who do not have the need for separate sandbox environment.

![](https://cdn.document360.io/1bb6f6bc-c04c-4ace-a1e8-8c4cfd3fbc98/Images/Documentation/Deployment%20patterns%2001.png)

v2 (latest)v1 (deprecated)

To start using this patten, simply initialize a new project in some empty directory using the following command:

```plaintext
prd2 init
```

This command will create a directory structure according to your choices when executing the `init` command. For example:

```bash
? ORG-LEVEL directory name: production-org
? ORG ID: 123123
? Base API URL: (e.g., https://my-org.rossum.app/api/v1) https://example.rossum.app/api/v1
? API token: b1946ac92492d2347c6235b4d2611184
? SUBDIR name: default
? subdir regex (OPTIONAL):
? Would you like to specify another **SUBDIR** inside production-org? No
? Would you like to specify another **ORG-LEVEL** directory? No
╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Initialized a new PRD directory in "."                                                           │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
```

Will create the following tree structure:

```plaintext
.
├── prd_config.yaml
└── production-org
    ├── credentials.yaml
    └── default
```

The project should be ready to go! Try it by pulling all the changes from your remote organization:

```plaintext
prd2 pull production-org
```

Once you commit this initial version to Git, you can update any configuration and deploy it to the same organization using the following command:

```plaintext
prd2 push
```

To start using this patten, simply initialize a new project in some empty directory using the following command:

```plaintext
prd init
```

This command will create a new `credentials.json` file. Fill in your username and password for `source` (you can leave `target` section as is for this simple setup):

```json
credentials.json

{
  "source": {
    "username": "CHANGE ME",
    "password": "CHANGE ME"
  },
  "target": {
    "username": "...",
    "password": "..."
  }
}
```

Also configure the `source_api_base` in `prd_config.yaml` file. By default, it would be:

```yaml
prd_config.yaml

source_api_base: 'https://api.elis.rossum.ai/v1'
use_same_org_as_target: true
```

Now you can pull (and eventually commit into Git) your whole organization configuration:

```plaintext
prd pull
```

Once you commit this initial version to Git, you can update any configuration and deploy it to the same organization using the following command:

```plaintext
prd push
```

## Two environments for sandbox and production

A bit more advanced setup with two environments: sandbox and production. Typically, the solution is first deployed to the sandbox organization (`source`) and once tested, released to production (`target`).

![](https://cdn.document360.io/1bb6f6bc-c04c-4ace-a1e8-8c4cfd3fbc98/Images/Documentation/Deployment%20patterns%2002.png)

v2 (latest)v1 (deprecated)

> [!WARNING]
> 🚧 WORK IN PROGRESS 🚧
> 
> We're still working on this part and would love to hear your thoughts! Feel free to [share your feedback](https://github.com/rossumai/university/discussions) or [submit a pull request](https://github.com/rossumai/university/pulls). Thank you! 🙏

To use this pattern, follow the same steps as outlined in the [Simple environment example](/help/docs/deployment-patterns#single-environment-for-sandbox-and-production) and first init your local repository:

```plaintext
prd init
```

However, now setup both `source` and `target` organizations:

```json
credentials.json

{
  "source": {
    "username": "CHANGE ME",
    "password": "CHANGE ME"
  },
  "target": {
    "username": "CHANGE ME",
    "password": "CHANGE ME"
  }
}
```

Notice that `use_same_org_as_target` is now set to false:

```yaml
prd_config.yaml

source_api_base: 'https://api.elis.rossum.ai/v1'
target_api_base: 'https://api.elis.rossum.ai/v1'
use_same_org_as_target: false
```

To push local changes to the sandbox, run `push` command:

```plaintext
prd push
```

And to release changes to production, run `release` command:

```bash
# Preview the changes first:
prd release --plan-only

# Run the actual release:
prd release
```

The local repository should always contain both `source` and `target` organization configurations. They can both be updated by calling `prd pull` command. You can also run `prd pull source` or `prd pull target` to update only one.

## Three environments for sandbox, UAT, and production

Finally, the most complex pattern with three environments: sandbox, UAT, and production. In this scenario, several environments are chained one after the other.

![](https://cdn.document360.io/1bb6f6bc-c04c-4ace-a1e8-8c4cfd3fbc98/Images/Documentation/Deployment%20patterns%2003.png)

v2 (latest)v1 (deprecated)

> [!WARNING]
> 🚧 WORK IN PROGRESS 🚧
> 
> We're still working on this part and would love to hear your thoughts! Feel free to [share your feedback](https://github.com/rossumai/university/discussions) or [submit a pull request](https://github.com/rossumai/university/pulls). Thank you! 🙏

For sandbox and UAT environment configurations, see the [Two environments example](/help/docs/deployment-patterns#two-environments-for-sandbox-and-production).

To configure the remaining production environment, it is necessary create a new Git branch and maintain there the configuration (from UAT to Production). Alternatively, for better transparency, create a new folder to store this configuration. This is necessary because `prd` currently doesn't support multi-target configurations out of the box.

> [!WARNING]
> 💬 YOUR FEEDBACK MATTERS!
> 
> Help us keep this page accurate and useful. Select **Yes** or **No** below, then use the feedback form to propose a correction, ask for clarification, or request a new article.
