---
title: "Move from dbt Core to the dbt platform: Optimization tips"
source: dbt Core Documentation
source_url: https://github.com/dbt-labs/docs.getdbt.com
licence: Apache-2.0
domain: data-and-analysis
subdomain: dbt-docs
date_added: 2026-04-25
---

## Introduction

Moving from <Constant name="core" /> to <Constant name="dbt" /> streamlines analytics engineering workflows by allowing teams to develop, test, deploy, and explore data products using a single, fully managed software service. It's not just better tooling &mdash; it's about lowering total cost of ownership, powering AI with trusted data, and scaling with governed self-service.

Explore our 3-part-guide series on moving from <Constant name="core" /> to <Constant name="dbt" />. The series is ideal for users aiming for streamlined workflows and enhanced analytics:

import CoreMigrationTable from '/snippets/_core-migration-table.md';

<CoreMigrationTable/>

## What you'll learn
You may have already started your move to <Constant name="dbt" /> and are looking for tips to help you optimize your <Constant name="dbt" /> experience. This guide includes tips and caveats for the following areas:

- [Adapters and connections](/guides/core-migration-3?step=3) 
- [Development tools](/guides/core-migration-3?step=4) 
- [Orchestration](/guides/core-migration-3?step=5)
- [<Constant name="mesh" />](/guides/core-migration-3?step=6)
- [<Constant name="semantic_layer" />](/guides/core-migration-3?step=7)
- [<Constant name="catalog" />](/guides/core-migration-3?step=8)

## Adapters and connections

In <Constant name="dbt" />, you can natively connect to your data platform and test its [connection](/docs/connect-adapters) with a click of a button. This is especially useful for users who are new to <Constant name="dbt" /> or are looking to streamline their connection setup. Here are some tips and caveats to consider:

### Tips
- Manage [dbt versions](/docs/dbt-versions/upgrade-dbt-version-in-cloud) and ensure team collaboration with <Constant name="dbt" />'s one-click feature, eliminating the need for manual updates and version discrepancies. Select a [release track](/docs/dbt-versions/cloud-release-tracks) for ongoing updates, to always stay up to date with fixes and (optionally) get early access to new functionality for your dbt project.
- <Constant name="dbt" /> supports a whole host of [cloud providers](/docs/cloud/connect-data-platform/about-connections), including Snowflake, Databricks, BigQuery, Fabric, and Redshift (to name a few).
- Use [Extended Attributes](/docs/deploy/deploy-environments#extended-attributes) to set a flexible [profiles.yml](/docs/local/profiles.yml) snippet in your <Constant name="dbt" /> environment settings. It gives you more control over environments (both deployment and development) and extends how <Constant name="dbt" /> connects to the data platform within a given environment.
  - For example, if you have a field in your `profiles.yml` that you’d like to add to the <Constant name="dbt" /> adapter user interface, you can use Extended Attributes to set it.

### Caveats
- Not all parameters are available for adapters.
- A project can only use one warehouse type.

## Development tools

<Constant name="dbt" /> empowers data practitioners to develop in the tool of their choice. It ships with a [<Constant name="dbt" /> CLI](/docs/cloud/cloud-cli-installation) (local) or [<Constant name="studio_ide" />](/docs/cloud/studio-ide/develop-in-studio) (browser-based) to build, test, run, and version control your dbt projects.

Both development tools are tailored to suit different audiences and preferences within your team. To streamline your team's workflow, it's important to know who will prefer the <Constant name="studio_ide" /> and who might lean towards the <Constant name="dbt" /> CLI. This section aims to clarify these preferences.

### Studio IDE
A web-based interface for building, testing, running, and version-controlling dbt projects. It compiles dbt code into SQL and executes it directly on your database. The <Constant name="studio_ide" /> makes developing fast and easy for new and seasoned data practitioners to build and test changes.

**Who might prefer the <Constant name="studio_ide" />?**

- New dbt users or those transitioning from other tools who appreciate a more guided experience through a browser-based interface.
- Team members focused on speed and convenience for getting started with a new or existing project.
- Individuals who prioritize direct feedback from the <Constant name="studio_ide" />, such as seeing unsaved changes.

**Key features**

- The <Constant name="studio_ide" /> has simplified <Constant name="git" /> functionality:
  - Create feature branches from the branch configured in the development environment.
  - View saved but not-committed code changes directly in the <Constant name="studio_ide" />.
- [Format or lint](/docs/cloud/studio-ide/lint-format) your code with `sqlfluff` or `sqlfmt`. This includes support for adding your custom linting rules.
- Allows users to natively [defer to production](/docs/cloud/about-cloud-develop-defer#defer-in-dbt-cloud-cli) metadata directly in their development workflows, reducing the number of objects.
- Support running multiple dbt commands at the same time through [safe parallel execution](/reference/dbt-commands#parallel-execution), a [feature](/docs/cloud/about-cloud/dbt-cloud-features) available in <Constant name="dbt" />'s infrastructure. In contrast, `dbt-core` *doesn't support* safe parallel execution for multiple invocations in the same process.

The <Constant name="studio_ide" /> provides a simplified interface that's accessible to all users, regardless of their technical background. However, there are some capabilities that are intentionally not available in the <Constant name="studio_ide" /> due to its focus on simplicity and ease of use:

- Pre-commit for automated checks before *committing* code is not available (yet).
- Mass-generating files / interacting with the file system are not available.
- Combining/piping commands, such as `dbt run -s (bash command)`, is not available.

### dbt CLI
The <Constant name="dbt" /> CLI allows you to run dbt [commands](/reference/dbt-commands#available-commands) against your <Constant name="dbt" /> development environment from your local command line. For users who seek full control over their development environment and ideal for those comfortable with the command line.

When moving from dbt Core to <Constant name="dbt" />, make sure you check the `.gitignore` file contains the [necessary folders](/docs/cloud/git/version-control-basics#the-gitignore-file). dbt Core doesn't interact with git so <Constant name="dbt" /> doesn't automatically add or verify entries in the `.gitignore` file. Additionally, if the repository already contains dbt code and doesn't require initialization, <Constant name="dbt" /> won't add any missing entries to the `.gitignore file`.

**Who might prefer the <Constant name="dbt" /> CLI?**

- Data practitioners accustomed to working with a specific set of development tooling.
- Users looking for granular control over their <Constant name="git" /> workflows (such as pre-commits for automated checks before committing code).
- Data practitioners who need to perform complex operations, like mass file generation or specific command combinations.

**Key features**

- Allows users to run dbt commands against their <Constant name="dbt" /> development environment from their local command line with minimal configuration.
- Allows users to natively [defer to production](/docs/cloud/about-cloud-develop-defer#defer-in-dbt-cloud-cli) metadata directly in their development workflows, reducing the number of objects.
- Support running multiple dbt commands at the same time through [safe parallel execution](/reference/dbt-commands#parallel-execution), a [feature](/docs/cloud/about-cloud/dbt-cloud-features) available in <Constant name="dbt" />'s infrastructure. In contrast, `dbt-core` *doesn't support* safe parallel execution for multiple invocations in the same process.
- Able to use Visual Studio (VS) Code extensions

## Orchestration

<Constant name="dbt" /> provides robust orchestration that enables you to schedule, run, and monitor dbt jobs with ease. Here are some tips and caveats to consider when using <Constant name="dbt" />'s orchestration features:

### Tips

- Enable [partial parsing](/docs/cloud/account-settings#partial-parsing) between jobs in <Constant name="dbt" /> to significantly speed up project parsing by only processing changed files, optimizing performance for large projects.
- [Run multiple CI/CD](/docs/deploy/continuous-integration) jobs at the same time which will not block production runs. The Job scheduler automatically cancels stale runs  when a newer commit is pushed. This is because each PR will run in its own schema.
- <Constant name="dbt" /> automatically [cancels](/docs/deploy/job-scheduler#run-cancellation-for-over-scheduled-jobs) a scheduled run if the existing run is still executing. This prevents unnecessary, duplicative executions.
- Protect you and your data freshness from third-party outages by enabling <Constant name="dbt" />'s [Git repository caching](/docs/cloud/account-settings#git-repository-caching), which keeps a cache of the project's Git repository. <Lifecycle status="managed,managed_plus" />
- [Link deploy jobs](/docs/deploy/deploy-jobs#trigger-on-job-completion) across <Constant name="dbt" /> projects by configuring your job or using the [Create Job API](/dbt-cloud/api-v2#/operations/Create%20Job) to do this. <Lifecycle status="self_service,managed" />
- [Rerun your jobs](/docs/deploy/retry-jobs) from the start or the point of failure if your dbt job run completed with a status of **`Error.`**

### Caveats
- To automate the setup and configuration of your <Constant name="dbt" /> platform, you can store your job configurations as code within a repository:
  - Check out our [Terraform provider.](https://registry.terraform.io/providers/dbt-labs/dbtcloud/latest/docs/resources/job)
  - Alternatively, check out our [jobs-as-code](https://github.com/dbt-labs/dbt-jobs-as-code) repository, which is a tool built to handle <Constant name="dbt" /> jobs as a well-defined YAML file.
- <Constant name="dbt" /> users and external emails can receive notifications if a job fails, succeeds, or is cancelled. To get notifications for warnings, you can create a [webhook subscription](/guides/zapier-slack) and post to Slack.

## dbt Mesh

[<Constant name="mesh" />](/best-practices/how-we-mesh/mesh-1-intro) helps organizations with mature, complex transformation workflows in dbt increase the flexibility and performance of their dbt projects. It allows you to make use of multiple interconnected dbt projects instead of a single large, monolithic project.

It enables you to interface and navigate between different projects and models with [cross-project dependencies](/docs/mesh/govern/project-dependencies#how-to-write-cross-project-ref), enhancing collaboration and data governance.

Here are some tips and caveats to consider when using <Constant name="mesh" />:

### Tips
- To dynamically resolve [cross-project references](/docs/mesh/govern/project-dependencies#how-to-write-cross-project-ref), all developers need to develop with <Constant name="dbt" /> (either with the <Constant name="dbt" /> CLI or <Constant name="studio_ide" />). Cross-project references aren't natively supported in <Constant name="core" />, except by installing the source code from upstream projects [as packages](/docs/build/packages#how-do-i-add-a-package-to-my-project)
- Link models across projects for a modular and scalable approach for your project and teams.
- Manage access to your dbt models both within and across projects using:
  - **[Groups](/docs/mesh/govern/model-access#groups)** &mdash; Organize nodes in your dbt DAG that share a logical connection and assign an owner to the entire group.
  - **[Model access](/docs/mesh/govern/model-access#access-modifiers)** &mdash; Control which other models or projects can reference this model.
  - **[Model versions](/docs/mesh/govern/model-versions)** &mdash; Enable adoption and deprecation of models as they evolve.
  - **[Model contracts](/docs/mesh/govern/model-contracts)** &mdash; Set clear expectations on the shape of the data to ensure data changes upstream of dbt or within a project's logic don't break downstream consumers' data products.

### Caveats
- To use cross-project references in dbt, each dbt project must correspond to just one <Constant name="dbt" /> project. We strongly discourage defining multiple projects for the same codebase, even if you're trying to manage access permissions, connect to different data warehouses, or separate production and non-production data.  While this was required historically, features like [Staging environments](/docs/dbt-cloud-environments#types-of-environments), Environment-level RBAC (_coming soon_), and [Extended attributes](/docs/dbt-cloud-environments#extended-attributes) will make it unnecessary.
- Project dependencies are uni-directional, meaning they go in one direction. This means dbt checks for cycles across projects (circular dependencies) and raise errors if any are detected. However, we are considering support to allow projects to depend on each other in both directions in the future, with dbt still checking for node-level cycles while allowing cycles at the project level.
- Everyone in the account can view public model metadata, which helps users find data products more easily. This is separate from who can access the actual data, which is controlled by permissions in the data warehouse. For use cases where even metadata about a reusable data asset is sensitive, we are [considering](https://github.com/dbt-labs/dbt-core/issues/9340) an optional extension of protected models.

Refer to the [<Constant name="mesh" /> FAQs](/best-practices/how-we-mesh/mesh-5-faqs) for more questions.

## dbt Semantic Layer

Leverage the [<Constant name="semantic_layer" />](/docs/use-dbt-semantic-layer/dbt-sl), powered by MetricFlow, to create a unified view of your business metrics, ensuring consistency across all analytics tools. The data layer is the foundation for AI as well as analytics &mdash; shared definitions and lineage give AI and BI the same trusted context so answers are consistent and actionable. Here are some tips and caveats to consider when using <Constant name="semantic_layer" />:

### Tips
- Define semantic models and metrics once in <Constant name="dbt" /> with the [<Constant name="semantic_layer" />](/docs/use-dbt-semantic-layer/dbt-sl) (powered by MetricFlow). Reuse them across various analytics platforms, reducing redundancy and errors.
- Use the [<Constant name="semantic_layer" /> APIs](/docs/dbt-cloud-apis/sl-api-overview) to query metrics in downstream tools for consistent, reliable data metrics.
- Connect to several data applications, from business intelligence tools to notebooks, spreadsheets, data catalogs, and more, to query your metrics. [Available integrations](/docs/cloud-integrations/avail-sl-integrations) include Tableau, Google Sheets, Hex, and more.
- Use [exports](/docs/use-dbt-semantic-layer/exports) to write commonly used queries directly within your data platform, on a schedule.

### Caveats
- <Constant name="semantic_layer" /> currently supports the Deployment environment for querying. Development querying experience coming soon.
- Run queries/semantic layer commands in the <Constant name="dbt" /> CLI, however running queries/semantic layer commands in the <Constant name="studio_ide" /> isn't supported *yet.*
- <Constant name="semantic_layer" /> doesn't support using [Single sign-on (SSO)](/docs/cloud/manage-access/sso-overview) for <Constant name="semantic_layer" /> [production credentials](/docs/dbt-cloud-apis/service-tokens#permissions-for-service-account-tokens), however, SSO is supported for development user accounts.

Refer to the [<Constant name="semantic_layer" /> FAQs](/docs/use-dbt-semantic-layer/sl-faqs) for more information.

## dbt Catalog

[<Constant name="catalog" />](/docs/explore/explore-projects) enhances your ability to discover, understand, and troubleshoot your data assets through rich metadata and lineage visualization. Lineage and discovery are essential for governance and for feeding reliable context to AI workflows. Here are some tips and caveats to consider when using <Constant name="catalog" />:

### Tips
- Use the search and filter capabilities in <Constant name="catalog" /> to quickly locate models, sources, and tests, streamlining your workflow.
- View all the [different projects](/docs/explore/explore-multiple-projects) and public models in the account, where the public models are defined, and how they are used to gain a better understanding of your cross-project resources.
- Use the [Lenses](/docs/explore/explore-projects#lenses) feature, which are map-like layers for your DAG, available from your project's lineage graph. Lenses help you further understand your project's contextual metadata at scale, especially to distinguish a particular model or a subset of models.
- Access column-level lineage (CLL) for the resources in your dbt project. <Lifecycle status="managed,managed_plus" />

### Caveats
- There must be at least one successful job run in the production deployment environment for <Constant name="catalog" /> to populate information. 

Familiarize yourself with <Constant name="catalog" />'s features to fully leverage its capabilities to avoid missed opportunities for efficiency gains.

Refer to the [<Constant name="catalog" /> FAQs](/docs/explore/dbt-explorer-faqs) for more information.

## What's next?

<ConfettiTrigger>

Congratulations on making it through the guide 🎉!

We hope you're equipped with useful insights and tips to help you with your move. Something to note is that moving from <Constant name="core" /> to <Constant name="dbt" /> isn't just about evolving your data projects, it's about exploring new levels of collaboration, governance, efficiency, and innovation within your team, and building a data layer that's ready for AI.

For the next steps, continue exploring our 3-part-guide series on moving from <Constant name="core" /> to <Constant name="dbt" />:

<CoreMigrationTable/>

</ConfettiTrigger>

### Resources

If you need any additional help or have some questions, use the following resources:

- [dbt Learn courses](https://learn.getdbt.com) for on-demand video learning.
- Our [Support team](/docs/dbt-support) is always available to help you troubleshoot your <Constant name="dbt" /> issues.
- Join the [dbt Community](https://community.getdbt.com/) to connect with other dbt users, ask questions, and share best practices.
- Subscribe to the [<Constant name="dbt" /> RSS alerts](https://status.getdbt.com/)
- Enterprise accounts have an account management team available to help troubleshoot solutions and account management assistance. [Book a demo](https://www.getdbt.com/contact) to learn more.
- [How <Constant name="dbt" /> compares with <Constant name="core" />](https://www.getdbt.com/product/dbt-core-vs-dbt-cloud) for a detailed comparison of <Constant name="core" /> and <Constant name="dbt" />.

For tailored assistance, you can use the following resources:

- Book [expert-led demos](https://www.getdbt.com/resources/dbt-cloud-demos-with-experts) and insights
- Work with the [dbt Labs' Professional Services](https://www.getdbt.com/dbt-labs/services) team to support your data organization and move.
