# Migrating assets with change sets and Metadata API

*CRM Analytics and Einstein Discovery Consultant Study Guide · Admin/Configuration · Last updated November 3, 2026 · https://www.certifyforce.com/study-guide/crm-analytics-and-einstein-discovery-consultant/admin-configuration/migrating-assets-with-change-sets-and-metadata-api*

How to move CRM Analytics apps, dashboards, lenses, datasets, dataflows, recipes and user XMD between orgs with change sets or the Metadata API, what never travels (data, views, predicates in packaged dataflows, assignments), and the follow-up work in the target org.

- Certification: Salesforce CRM Analytics and Einstein Discovery Consultant
- Exam section: Admin/Configuration
- Study guide: https://www.certifyforce.com/study-guide/crm-analytics-and-einstein-discovery-consultant

**Official exam objective:**

> Given business requirements, migrate between different environments for deployment.

## What the exam expects

- Build an outbound change set for CRM Analytics assets, adding the components that change sets don't pick up on their own.
- Predict what a deployment leaves behind (data, user views, predicates in packaged dataflows, permission set assignments) and plan the steps in the target org.
- Keep dashboard formatting and dataset XMD overrides by migrating the Analytics Dataset Metadata component or the WaveXmd type.
- Choose the Metadata API types for a source-controlled, CI/CD deployment instead of change sets or JSON copy-and-paste.
- Explain who can package and deploy, and what packaging changes in dataflow JSON.

Key terms: **change set** (moves customizations between orgs that have a deployment connection); **dataset container** (the dataset metadata that migrates, without rows); **user XMD** (JSON that overrides a dataset's labels, colors and formats); **Wave metadata types** (Metadata API types such as WaveDashboard and WaveRecipe); **spidering** (automatic dependency following, which datasets and dataflows don't get).

## Key facts

| Fact | Detail | Source |
|---|---|---|
| Dataset migration | The container and metadata migrate, not rows | [Migrate with Change Sets](https://help.salesforce.com/s/articleView?id=analytics.bi_packaging_migrate.htm&language=en_US&type=5) |
| Private App assets | Not available for change sets | [Migrate with Change Sets](https://help.salesforce.com/s/articleView?id=analytics.bi_packaging_migrate.htm&language=en_US&type=5) |
| Datasets and dataflows | No dependency following; add both manually | [Migrate with Change Sets](https://help.salesforce.com/s/articleView?id=analytics.bi_packaging_migrate.htm&language=en_US&type=5) |
| Recipes | Must have created a dataset; add the related dataflow | [Migrate with Change Sets](https://help.salesforce.com/s/articleView?id=analytics.bi_packaging_migrate.htm&language=en_US&type=5) |
| Packaged dataflow | Source and security predicates aren't included | [Migrate with Change Sets](https://help.salesforce.com/s/articleView?id=analytics.bi_packaging_migrate.htm&language=en_US&type=5) |
| Dashboard views | User-specific, not packaged | [Migrate with Change Sets](https://help.salesforce.com/s/articleView?id=analytics.bi_packaging_migrate.htm&language=en_US&type=5) |
| Keep dashboard formats | Include the Analytics Dataset Metadata component type | [Migrate with Change Sets](https://help.salesforce.com/s/articleView?id=analytics.bi_packaging_migrate.htm&language=en_US&type=5) |
| Permissions | Analytics Admin to create a package; Salesforce admin to deploy | [Migrate with Change Sets](https://help.salesforce.com/s/articleView?id=analytics.bi_packaging_migrate.htm&language=en_US&type=5) |
| Dataflow JSON on packaging | Invalid overrides and comments removed; nodes may reorder | [Migrate with Change Sets](https://help.salesforce.com/s/articleView?id=analytics.bi_packaging_migrate.htm&language=en_US&type=5) |
| Wave metadata types | WaveApplication, WaveComponent, WaveDashboard, WaveDataflow, WaveDataset, WaveLens, WaveRecipe, WaveXmd, WaveTemplateBundle | [Metadata API for CRM Analytics](https://help.salesforce.com/s/articleView?id=analytics.bi_packaging_wave_metadata.htm&language=en_US&type=5) |

## Check yourself

- Why can't an AppExchange partner hide its dashboard JSON the way Apex code is hidden?
- When should a team avoid an unmanaged package for these assets?
- Which metadata type describes a lens's dataset and widget type?
- How can a partner update the user XMD it shipped to customers?

## Sources

- [Migrate CRM Analytics Assets with Change Sets](https://help.salesforce.com/s/articleView?id=analytics.bi_packaging_migrate.htm&language=en_US&type=5)
- [Use the Metadata API for CRM Analytics Assets and User XMD](https://help.salesforce.com/s/articleView?id=analytics.bi_packaging_wave_metadata.htm&language=en_US&type=5)
- [Backup and Restore Previous Versions of CRM Analytics Assets with History API](https://developer.salesforce.com/docs/atlas.en-us.bi_dev_guide_rest.meta/bi_dev_guide_rest/bi_asset_history.htm)

## About the full unit

The "Core concepts", "Exam traps" and "Worked scenario" sections of this unit, its 12 linked practice questions, and unlimited timed mock exams are included with the CRM Analytics and Einstein Discovery Consultant pack (USD $19): https://www.certifyforce.com/practice-exams
