Required Permission: You must hold the DEPLOY_APPS permission for the target environment to deploy an app to it. See Who can deploy below.
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. The deployment is tracked with status and history on the app’s Deployments page.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.| Behavior | What it means |
|---|---|
| Per-environment | DEPLOY_APPS is granted independently in each environment. A user with DEPLOY_APPS in Staging cannot promote to Production unless they also hold it in Production. |
| Decoupled from app edit rights | Granting someone the ability to update an app’s configuration does not give them the ability to promote that app. Configure who can build apps and who can release them as separate decisions. |
| Granted through roles | Admins assign DEPLOY_APPS through a role (managed or custom) in the target environment. Role membership is environment-specific — see Environment-specific role membership. |
A user typically needs DEPLOY_APPS in every environment they release to. For a
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:| Configuration | Initial deployment | Later deployments |
|---|---|---|
| AI Search target lag | Copied from source | Target environment’s value is kept |
| Access policies | Copied from source | Target environment’s policies are kept |
After the first deployment, you can set AI Search target lag and access policies per environment; later deployments will not overwrite those choices.
Deploy an app
Navigate to the App
Open the
app you want to deploy in its source environment (the environment where the app currently exists).For example, to deploy an app from Development to Production, open the app in the Development environment.
Open Deployments
In the app’s left navigation, under the Configuration section, click Deployments.The Deployments page shows all available environments with their deployment status.
View Environment Status
Each environment is displayed as a card showing:
- Environment name and description
- Status indicator: Deployed (green), Deploying (yellow), Failed (red), or Not Deployed (gray)
- Deploy button to initiate deployment
Initiate Deployment
Find the target environment (where you want to deploy the app) and click the Deploy button on its card.A confirmation modal appears:
- 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
Review the deployment details and click Deploy to proceed.The deployment process begins:
- Status changes to “Deploying” (yellow)
- Progress bar shows deployment progress
- Upon completion, status changes to “Deployed” (green)
Initial vs. subsequent deployments behave differently for some settings (for example AI Search target lag and Access Policies). See Initial vs. subsequent deployments.
Monitor Deployment
Track deployment progress:
View the Deployment History panel for the full deployment log, including outcome and any error details for failed deployments.
| Status | Description |
|---|---|
| Deploying | Deployment is in progress |
| Deployed | Deployment completed successfully |
| Failed | Deployment encountered an error |
| Not Deployed | App has not been deployed to this environment |
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
After deployment completes, the Deploy button changes to Configure.The card shows:
- Green “Deployed” status pill
- “Complete” progress indicator
- Configure button
Review Items Needing Configuration
The Resolve Issues modal appears with the message: “Review and resolve configuration issues before proceeding with deployment.”The left panel lists all Datasets (Tables and Elements) that need configuration, each showing:
- Dataset name
- Configuration status (“Not configured”)
- Error count indicating fields needing mapping
Select a Dataset
Click on a Dataset in the left panel to configure it.The right panel shows:
- Dataset name and error count
- “Configure data source connection and field mappings”
- Valid fields count and errors count
Configure Data Connection
The CloudLink is pre-selected. Configure the data source:
- 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
After selecting the table, map each field:
For each Target Field listed:
| Target Field | Action |
|---|---|
| Field from the deployed app | Select the corresponding Source Field from the new environment’s table |
- 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
After mapping all fields for all datasets:
- 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
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.| Field | Description |
|---|---|
| Source environment | Where the app was deployed from |
| Target environment | Where it was deployed to |
| Initiated by | User who started the deployment |
| Timestamp | When the deployment started |
| Outcome | Success or Failure |
| Error details | On failures, shown on the same record |
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
Possible Causes:
- 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
Possible Causes:
- 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
Possible Causes:
- 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
Configure Button Not Appearing
Configure Button Not Appearing
Using the Same Snowflake User Across Environments in Different Organizations
Using the Same Snowflake User Across Environments in Different Organizations
Scenario:
You need to use the same Snowflake user account with key-pair authentication for CloudLinks in environments that belong to different organizations.Solution:
Snowflake supports key-pair rotation, which allows you to configure a second public key for the same user account. This enables environments in both organizations to authenticate simultaneously without disrupting existing connections.Steps:
Important: Key-pair rotation is only required when using the same Snowflake user across environments in different organizations. If you are using the same Snowflake user across multiple environments within the same organization, key-pair rotation is not necessary because they share the same public key.
-
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.
Next steps
Understand and Configure Environments
Environment concepts, categories, CloudLink requirements, and setup steps
CloudLink Overview
Detailed CloudLink configuration options
Snowflake Connection
Complete Snowflake setup guide with scripts
Apps Overview
Understanding apps and their components