- Data residency regulations require Omni to run in specific geographic regions (e.g., US, EU, Canada)
- You manage a globally distributed user base where each region requires its own Omni organization
- You need three-tier environment isolation (DEV → STAGE → PROD) across all regions
Architecture overview
A three-region, three-environment deployment has nine logical instances. One region (typically your primary region, e.g., US) designates one development instance as the origin — the single source of all development activity. Each environment tier tracks a different git branch:
- DEV → STAGE: PR from
devbranch intostagebranch - STAGE → PROD: PR from
stagebranch intomainbranch
Git follower mode
Git follower mode designates one Omni model as the leader and others as read-only followers that automatically update when changes merge from the leader’s base branch into the follower’s base branch through a pull request. See git follower mode for the full mechanism. This guide outlines the process for a single git repository; the configuration is similar if regional git repositories are required. The origin DEV, STAGE, and PROD Omni instances hold the leader models. Development branches are opened from DEV and STAGE, their changes are tested, and PRs target the respective branch (dev or stage). When you’re ready to promote to production, create a release branch in git that carries the changes from stage into production’s base branch (e.g., main). The follower models automatically detect the new branch from the origin (leader) production instance and create a matching branch, which is validated before merging.
Git follower mode promotes model changes only. Content (workbooks and dashboards) must be migrated separately using the Content Migration APIs, agent skills, or Omni CLI.
Requirements
Before you begin:- Nine Omni instances across three regions and three environments (or the subset your team needs)
- Organization Admin permissions on all instances
- Connection Admin permissions on each instance’s model connections
- A single git repository in GitHub, GitLab, or Azure DevOps shared across all instances
- Three base branches in that repository:
dev,stage, andmain - Permissions in your git provider to add webhooks and deploy/SSH keys (nine sets — one per instance)
- Structurally identical schemas across all databases in all regions and environments
Initial setup
- In this configuration, there are nine logical instances (three regions × three environments).
- One region’s development instance acts as the origin for all development, with all other regions configured with git follower.
- Each SDLC stage points to a different branch in git:
dev,stage, andmain(for prod).
Development workflow - US DEV (origin)
All development happens on the US DEV origin instance. Other instances in the DEV environment automatically stay in-sync.Open a branch
Validate with the Content Validator
Deployment workflow - US DEV (origin)
Merge model changes to US DEV
- With pull requests required (recommended):
- Open a PR to
devand merge after review. This publishes attached content on the US DEV origin instance only. - Without pull requests: Merge the branch directly from the model IDE.
- Open a PR to
dev, the EU DEV and CA DEV follower instances automatically receive the model update. Deploy content to EU DEV and CA DEV
New content?
New content?
Updating content?
Updating content?
Promotion workflow - US DEV to US STAGE
Because git follower is being used and US DEV is leader to followers EU DEV and CA DEV, all dev model changes propagate to EU DEV and CA DEV. Promoting dev to stage requires moving those changes fromdev to stage via pull request.
Create release branch in git
- In git repository
- Create a new branch off of the base branch(
dev) (e.g.release-to-stage-YYYYMMDD) - Create a pull request that merge your changes into the follower’s base branch (
stagein git)
- Create a new branch off of the base branch(
Migrate content from US DEV to US STAGE instance
Review changes in the Omni US STAGE instance
- In the Omni STAGE instance
- Open the
- Open the
release-to-stage-YYYYMMDDbranch - Test the changes by reviewing the Content Validator for any issues
Merge the release branch into the base stage branch
- In git repository:
- Merge the pull request in git to merge the release branch changes into the base branch (e.g.
stage)Because git follower is enabled betweendevandstage, the follower regions (EU STAGE and CA STAGE) will receive the update
- Merge the pull request in git to merge the release branch changes into the base branch (e.g.
- At this point, your model changes are live in the staging instance
Deploy content to EU STAGE and CA STAGE
Promote from US STAGE to US PROD
Because git follower is being used, and US STAGE is leader to followers EU STAGE and CA STAGE, all stage model changes propagate to EU STAGE and CA STAGE. Promoting stage to prod requires moving those changes fromstage to prod through a pull request.
Create release branch in git
- In git repository
- Create a branch off of the base branch
stage(e.g.release-to-prod-YYYYMMDD) - Create a pull request that merges your changes into the follower’s base branch (
mainorprodin git)
- Create a branch off of the base branch
Migrate content from US STAGE to US PROD instance
Review changes in the Omni PROD instance
- In the Omni PROD instance
- Open the
- Open the
release-to-prod-YYYYMMDDbranch - Test the changes by reviewing the Content Validator for any issues
Merge the release branch into the base main branch
- In git repository:
- Merge the pull request in git to merge the release branch changes into the base branch (likely
mainorprodin git)Because git follower is enabled betweenstageandprod, the follower regions (EU PROD and CA PROD) will receive the update
- Merge the pull request in git to merge the release branch changes into the base branch (likely
- At this point, your model changes are live in the production instance
Deploy content to EU PROD and CA PROD
Schema refreshes across instances
When your source databases change, each instance needs a schema refresh to incorporate the updates. In a nine-instance setup, this requires nine separate refresh operations (or API-triggered refreshes).Permissions model
Best practices
Treat the origin instance as the single source of truth
All model development, all branch work, and all PR activity targetingdev should happen on the US DEV origin instance. Working directly on regional DEV follower instances creates drift and model conflicts.
Keep all nine schemas structurally identical
The shared model definition flows across all nine instances. Schema differences between regions or environments will cause modeling errors when a promotion reaches an instance with a divergent schema. Coordinate schema migrations across all databases before triggering Omni promotions.Use a consistent release branch naming convention
A format likerelease-to-stage-YYYYMMDD or release-to-prod-YYYYMMDD makes promotions traceable and rollbacks straightforward.
Plan content migration per release
Content migration to nine instances is operationally significant. Build it into your release process with a clear checklist of which content needs to move, to which instance, and in what order. Automate where possible using the Content Migration APIs.Next steps
- git follower mode setup — Detailed reference for configuring git follower
- git follower mode best practices — Managing follower workflows at scale
- Migrating dashboards — Migrating content across instances and regions
- Content Validator — Validating content before and after promotions

