How deployment works
You can deploy in any direction: from a non-production environment to Production, from Production into another environment to test changes, or between non-production environments. What is included in a deployment Automations; record layouts, related views, and form builder configuration; Flow definitions; approval processes; assignment rules; and report and analytics configuration for that app. In addition, any other objects your app depends on are included, recursively — see Related objects included in deployment below. What is not included in a deployment Role membership — which users and groups are assigned to a role — is not part of deployment. Elementum never modifies role membership during any deployment — initial or subsequent. When you deploy an app, element, or task into an environment for the first time, role membership from the source does not carry over. The owner of the deployed object is responsible for configuring role membership in the target environment after the first deploy, directly on the object’s Roles & Permissions page in that environment. No future redeployment of that object will ever overwrite membership settings that have been configured in the target environment. Phone numbers are environment-specific and do not transfer with a deployment. A deployment copies the phone service configuration but leaves the target environment’s copy without a live number, so each environment keeps its own phone number — see Phone services.Related objects included in deployment
When you deploy an app, you’re not just deploying that app — you’re deploying everything the app needs to work. If your app relies on another object for updates or information (another app, element, task, table, or similar), that object is included in the deployment and overwrites whatever version currently exists in the target environment.How dependencies are followed
The system looks at your app and finds every object it references. Then it looks at each of those objects and finds their references. It keeps going — layer after layer — until no new objects are discovered. This is why deploying one app can bring in dozens or hundreds of objects: you’re getting the app’s dependencies, its dependencies’ dependencies, and so on. For example, deploying a Purchase Orders app might pull in:What creates a dependency
Anywhere one object points at another, that connection is followed during deployment. The most common sources of dependencies are:In-progress work on shared objects is deployed too
Because deployment always uses the source environment’s current version of every dependent object, and always overwrites the target, in-progress work on a shared object can be promoted unintentionally. Before deploying an app that has dependencies, coordinate with the owners of any shared objects to confirm what’s in source is ready to promote.Review dependencies before promoting
Because dependencies are followed recursively, review the full set of objects that will move before you promote — especially to Production. Open each dependency in the source environment and confirm its current state is what you want in the target.Who can deploy
Promotion to each environment is gated by the DEPLOY_APPS permission for that environment. Edit or admin rights on an app no longer imply the right to deploy it; users must hold DEPLOY_APPS in the target environment to push an app there.Dev → Stage → Prod pipeline, the same release engineer commonly holds DEPLOY_APPS in both Stage and Prod, while developers hold it only in Dev.Initial vs. subsequent deployments
The first time you deploy an app to a target environment, settings are copied from the source. On later deployments to the same target, most configuration is updated to match the source, but the following destination values are left as you set them in that environment:Access policy changes outside of a deployment
Changes you make to a Data Access policy (outside of a deployment) are scoped to the environment you are signed in to. They do not propagate to other environments.- Removing a group’s access to an app in one environment does not remove that group’s access in any other environment.
- To remove or change access across all environments, repeat the change in each environment separately.
Deploy an app
Navigate to the App
Open Deployments
View Environment Status
- Environment name and description
- Status indicator: Deployed (green), Deploying (yellow), Failed (red), or Not Deployed (gray)
- Deploy button to initiate deployment
Initiate Deployment
- Title: “Deploy App To Environment”
- Message: “Deployment will copy all app configurations and associated objects to the target environment.”
- Visual showing the deployment flow from source to target
- Summary: “Deploy App from [Source] to [Target]”
Confirm and Deploy
- Status changes to “Deploying” (yellow)
- Progress bar shows deployment progress
- Upon completion, status changes to “Deployed” (green)
Monitor Deployment
Post-deployment configuration
Apps whoseApps without external dependencies
For apps that don’t connect to Snowflake data:- Deployment completes immediately
- Environment card shows green “Deployed” status
- No additional configuration required
- App is ready to use in the target environment
Apps with Snowflake dependencies
For apps withOpen configuration
- Green “Deployed” status pill
- “Complete” progress indicator
- Configure button
Review Items Needing Configuration
- Dataset name
- Configuration status (“Not configured”)
- Error count indicating fields needing mapping
Select a Dataset
- Dataset name and error count
- “Configure data source connection and field mappings”
- Valid fields count and errors count
Configure Data Connection
- Database - Select the database from the dropdown
- Schema - Select the schema containing your data
- Table - Select the table that corresponds to this dataset
Map Fields
- Use the dropdown to select the matching Source Field
- Ensure data types align (TEXT to TEXT, NUMBER to NUMBER, etc.)
- Repeat for all fields in the dataset
Save Configuration
- Click Configure Dataset to save the configurations
- Configured items are removed from the list
- Continue until all items are configured
- When the list is empty, the modal closes
Phone services
Phone numbers are environment-specific and are not carried over by a deployment. A deployment copies the phone service itself — including its assigned agent and language settings — but the target environment’s copy arrives unconfigured, without a live phone number. The source environment is untouched and keeps its existing number. This is by design: a phone number can only route calls to a single destination. If the same number were active in two environments (for example, QA and Production), there would be no way to determine which one should receive an incoming call. For that reason, each environment uses its own number, and dev and production numbers are different by default. After deploying, configure the phone service in the target environment before it can take calls:Open the deployed phone service
Provision or import a number
Save the service
Deployment history
Each app keeps a log of deployments: who ran them, source and target environment, time, outcome (Success or Failure), and error details on failed runs. Error details stay on the record even after related background work is removed. Any user who can open the app can open Deployments and read this history. It is paginated and includes the full history, not only recent entries.Example workflows
Develop, then release
Develop, then release
- Add a Development environment from Production.
- Deploy an app into Development and change it there.
- When satisfied, deploy from Development to Production.
Staging before production
Staging before production
- Add Staging (and optionally Development).
- Move apps Development → Staging for review, then Staging → Production when approved.
Training
Training
- Add a Training environment and deploy the apps users will see in Production so they can practice without touching live data.
Troubleshooting
Deployment Fails Immediately
Deployment Fails Immediately
- CloudLink not configured in target environment
- CloudLink credentials invalid or expired
- Network connectivity issues
- Verify CloudLink is configured in the target environment
- Test CloudLink connection in
Organization Settings
- Check Snowflake service account permissions
Cannot See Target Environment
Cannot See Target Environment
- Environment not yet created
- Insufficient permissions to view environments
- Verify the environment exists in
Organization Settings > Environments
- Contact your administrator to check access permissions
Field Mapping Errors
Field Mapping Errors
- Table structure differs between environments
- Missing columns in target environment’s table
- Data type mismatches
- Verify the target table exists and has the expected columns
- Check that column names match or can be mapped correctly
- Ensure data types are compatible between source and target
Using the Same Snowflake User Across Environments in Different Organizations
Using the Same Snowflake User Across Environments in Different Organizations
-
Obtain the Public Key from the Organization You Are Adding the CloudLink To:
- Navigate to
Organization Settings > CloudLinks in the organization where you want to add the CloudLink
- Start creating a new Snowflake CloudLink
- Select Key-pair authentication as the authentication method
- Copy the public key displayed
- Navigate to
-
Configure Key-Pair Rotation in Snowflake:
- Contact your Snowflake administrator to set the
RSA_PUBLIC_KEY_2property for the Snowflake user - Provide the public key copied from the organization where you’re adding the CloudLink
- The Snowflake admin should run:
- Contact your Snowflake administrator to set the
-
Complete CloudLink Setup:
- After the second public key is configured in Snowflake, complete the CloudLink setup in the organization
- Both organizations will now be able to authenticate with the same Snowflake user
- The existing CloudLink in the other organization continues to work without interruption
Deployment practices
- Validate before Production — Deploy and test changes in non-production environments before deploying to Production.
- Deploy one app at a time when practical so failures are easier to trace.
- Use deployment history to confirm what ran, when, and by whom.
- Restrict who can deploy to Production — Grant DEPLOY_APPS in Production only to release-managers; review that role membership periodically. Because role membership is environment-specific, removing DEPLOY_APPS in Production does not affect a user’s ability to deploy in Development or Staging.