Move one dbt Cloud™ project into a Paradime workspace in phases, check it with real Bolt runs, then switch jobs to Bolt one group at a time, with rollback.
The step-by-step migration moves one dbt Cloud™ project into the current Paradime workspace. You apply it in phases, you see the result for each environment, variable and job, and you switch jobs from dbt Cloud™ to Bolt only when you are ready. A built-in DinoAI agent can walk you through it.Use it for every project with more than a few jobs, several environments, job triggers, or secret variables. For a small project, you can still import every job in one step.
Access to the dbt Cloud™ API is included only on the Team and Enterprise plans. On a Starter plan, use a personal access token: a Starter service token cannot read jobs.
Admin access. Run the migration as a workspace Admin. Applying the phases writes integrations, production connections, environment variables, and Bolt schedules, so it needs the rights for each of them.
A token that can read the project. Create a dbt Cloud™ service token with read access to the account and the project. See Create Service Token.
One project per workspace. A dbt Cloud™ project maps to one Paradime workspace. Start the migration from the workspace that will run the project. To migrate several projects, repeat the migration from each matching workspace.
For the switch only: a second token with job write access, for example Job Admin or Account Admin. You add it when you switch the first jobs.
In Paradime, go to Workspace Settings > Integrations, find the dbt Cloud™ integration and click Connect.
Enter the Host name (your account URL, for example https://ab123.us1.dbt.com) and the Service account token. Paradime checks the token and lists the projects it can read. Nothing is imported.
Choose the project that matches this workspace. Paradime reads it and shows what each job, environment, and variable becomes. Nothing is written yet.
Click Migrate step by step. The dbt Cloud™ integration page opens with the migration checklist.
To come back later, open Workspace Settings > Integrations > dbt Cloud™. The page header shows the project and the migration status, with three buttons:
The checklist has one card per phase. Only the current phase is open: the first one with something left to do, or a phase while it runs. Open any other card from its title.
Each phase runs in the background, and the page updates while it runs. Each row shows its status: To do, Done, Failed (with the error), Skipped, Needs input, or Manual. On a row that failed, needs input, or is manual, click Ask DinoAI to have the migration agent explain it.You can apply a phase again at any time. Rows that are already applied are skipped, and failed rows run again. Fix the cause of a failure first, then apply the phase again. Only one phase runs at a time.
Each dbt Cloud™ deployment environment gets a Bolt environment. For each one, choose:
Use an existing Bolt environment. Production defaults to the workspace’s default Bolt environment, and another environment defaults to the Bolt environment with the same name.
Create a new environment, with the dbt™ version and branch from dbt Cloud™.
Skip: Paradime creates no Bolt environment for it. Its jobs still migrate, to the workspace’s default Bolt environment.
Click Apply environments to save your choices and apply them. The other phases wait until then. You can’t change an environment’s target after it’s applied: its schedules and variables already live there.The dbt Cloud™ development environment becomes the Code IDE, so there is nothing to choose. Its row says whether your development connection is set up. Click Set up if it isn’t.
dbt Cloud™ never returns warehouse passwords, keys, or tokens, so you finish each connection yourself:
On an environment’s row, click Set up connection. The usual connection form opens, filled in from dbt Cloud™: the warehouse, its settings, the profile name, the target, and the threads.
Add the secrets, correct any value, and test the connection.
Save it. Paradime takes you back to the migration, and the row shows Connected.
The form is filled in for Snowflake, BigQuery, Databricks, and Redshift. For another warehouse, set up the connection in Connections yourself. An environment that already has a connection keeps it.
Every variable is listed with its dbt Cloud™ value. Project values become workspace variables, and environment values become environment variables.
Apply writes the dbt Cloud™ value of one variable.
Edit lets you change the value first, then Apply it. After a change, the row says Changed from and the dbt Cloud™ value.
Secret variables (DBT_ENV_SECRET_*) have a password field, because dbt Cloud™ never returns their values. Enter the value and click Apply. The row then says Secret set.
When Paradime already has another value, it keeps it, and the row says dbt Cloud has and that value. Click Use dbt Cloud value to replace it.
A job’s own variables say With schedule until the schedules phase creates the job’s schedule.
Click Apply variables to apply the rest at once. It never overwrites a value you applied by hand.
Click Apply schedules. Every job becomes a suspended Bolt schedule, with its triggers and deferral. Paradime writes the schedules first and the links between them second, so a job can run after a parent that is created later. Then it parses the schedules and checks that every link resolves.See how jobs are mapped for each setting.
Jobs that trigger each other in a loop are not linked. The row names the loop.
Click Run checks. Paradime creates one check schedule per environment that runs dbt debug and dbt compile, and runs it in Bolt.Each check shows Running while its Bolt run is in progress, then Done when the run passed. A failed check links to its Bolt run: open it, fix the cause, then run the checks again. The phase is only done when every check passed.
The 6. Switch card opens once the schedules are applied. Nothing switches on its own: you move jobs one group at a time, or a whole environment at once. The card header counts the groups already in Bolt.
A group is one job plus every job linked to it by completion triggers. A job in one product cannot trigger a job in the other, so a chain moves as a whole.
Order. A group that other groups defer to says Switch this group first. Switch it first, so the jobs that defer to it have a successful Bolt run.
State. Each group shows In dbt Cloud, In Bolt, or Partly switched.
Before the first switch, enter a dbt Cloud™ token with job write access and click Save token. Paradime stores it apart from the read token, and uses it only to turn jobs off and on.To switch a group:
Click Check. Each check passes, warns, or fails:
every job has a Bolt schedule, deployed with no parse errors and with every link resolved
the verify check of the job’s environment passed
no dbt Cloud™ run of the group is queued or running
no run of the group is due in the next 10 minutes, in either product
a write token is saved
a deferral target has no successful Bolt run yet (warning only)
If a check fails, fix the cause and click Check again. Switch to Bolt stays disabled while a check fails.
Click Switch to Bolt. Paradime turns the group’s dbt Cloud™ jobs off first, then turns its Bolt schedules on, so no job runs twice. If a step fails, Paradime undoes what it did.
After the first runs, click Compare runs to see the latest runs of each job in both products, with status and duration.
To switch a whole environment, pick it in Switch a whole environment, click Switch N group(s), then confirm. Paradime checks and switches the groups in order, and stops at the first group that fails.To move a group back, click Roll back, then Confirm roll back. Paradime suspends the Bolt schedules first, then gives the dbt Cloud™ jobs their triggers back.If a switch or a rollback stops half-way, for example because dbt Cloud™ does not answer, Paradime undoes what it can. The group then shows Partly switched, and each job shows what is left. Roll the group back, or switch it again.
A switch turns off each job’s schedule and Git triggers in dbt Cloud™. It cannot stop a run that an orchestrator or a script starts through the dbt Cloud™ API, or a run that someone starts by hand. Stop those at the source before you switch. For Airflow, see Migrate from the dbt Cloud™ operators.
Keep the dbt Cloud™ jobs (turned off) for 1 to 2 weeks after the switch, as the migration checklist recommends. A rollback needs them. For the same reason, Start over is refused while any job is switched: the migration keeps the dbt Cloud™ triggers that a rollback restores.
The migration page has a built-in DinoAI agent. Click Migration agent in the page header to open it in a drawer next to the checklist, then click Start the migration agent.
It works through the checklist with you. It reads the same checklist, explains each gap, and asks you one decision at a time, with a button for each option.
It checks your code. It searches your repository for code that reads target.name, DBT_ENV, or DBT_CLOUD_* variables.
It never sees your secrets. It asks for secret values in a secure form. The value goes to Vault, and the agent only gets a reference to it.
It changes nothing without your approval. Before it applies a phase or switches jobs, it shows an approval card that names exactly what it will do. Click Approve or Reject.
Ask DinoAI on a checklist row sends the agent a message about that row. New conversation starts a fresh session, and Open in agent opens the session in DinoAI. The page shows the same session again after a reload.To start the agent, you need to be able to start DinoAI agent sessions and to change environments, variables, connections, integrations, and Bolt schedules. Today that means a workspace Admin. The workspace also needs its Git repository set up. The agent is built in: it ignores your repository’s .dinorules and skills, and it isn’t listed with your workspace’s agents.
A dbt Cloud™ job can run after a job in another dbt Cloud™ project. Each project migrates into its own workspace, so migrate the upstream project first.
Triggers. The job’s link shows Waiting until another Paradime workspace has migrated the parent job. Then apply the schedules phase again: the job gets a trigger on the parent’s schedule in the other workspace. A waiting link does not hold up the other phases.
Deferral. Bolt can’t defer to a schedule in another workspace, so a deferral to another project’s job stays a decision.
Description. The schedule’s description gets a Migrated from dbt Cloud note that names the other project’s job, so the dependency stays visible.
Switch order. A group can’t switch while its parent in the other workspace still runs in dbt Cloud™, because Bolt can’t trigger a dbt Cloud™ job. A job in another workspace that runs after the group gets a warning: switch it right after.
Only a parent that the migration imported can be found. A schedule made by hand in another workspace has no dbt Cloud™ job ID, so link it by hand.
Docs jobs are skipped: the Paradime Catalog refreshes every night. To refresh it after a job, add the Refresh Paradime Catalog command.
Target names. A job’s target name becomes a --target flag only when the environment has a connection with that target name. Otherwise the checklist asks you to decide.
Not migrated: compare changes, lint, run on draft pull requests, cost optimization, job-level dbt™ versions, and warning and cancel notifications. The review lists them for each job.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Paradime","colors":{"primary":"#726AE3","light":"#9291F4","dark":"#5943D6"},"logo":{"light":"https://mintcdn.com/paradime-docs/C-R77mCdstNPsNTv/logo/paradime-logo-light-mode.svg?fit=max\u0026auto=format\u0026n=C-R77mCdstNPsNTv\u0026q=85\u0026s=7a32141c8f01f795c35f0c3c48b2f26a","dark":"https://mintcdn.com/paradime-docs/C-R77mCdstNPsNTv/logo/paradime-logo-dark-mode.svg?fit=max\u0026auto=format\u0026n=C-R77mCdstNPsNTv\u0026q=85\u0026s=e8b1dae8a943bf2a7c4d0088d7cc107b"},"favicon":"https://mintcdn.com/paradime-docs/F1X35JoCsYMKtOFi/favicon.svg?fit=max\u0026auto=format\u0026n=F1X35JoCsYMKtOFi\u0026q=85\u0026s=4ba032ce7ca6b66ccd44805e1e22567a","appearance":{"default":"system"},"background":{"decoration":"gradient"},"navbar":{"links":[{"href":"mailto:support@paradime.io","label":"Support"}],"primary":{"type":"button","label":"Launch Paradime","href":"https://app.paradime.io"}},"footer":{"socials":{"x":"https://x.com/paradimelabs","github":"https://github.com/paradime-io","linkedin":"https://www.linkedin.com/company/paradimelabs"},"links":[{"header":"Resources","items":[{"label":"Paradime Blog","href":"https://www.paradime.io/blog"},{"label":"SQL Resources Hub","href":"https://www.paradime.io/sql"},{"label":"Community","href":"https://paradimers.slack.com/join/shared_invite/zt-1mzax4sb8-jgw~hXRlDHAx~KN0az18bw"}]}]},"fonts":{"family":"Geist"},"icons":{"library":"lucide"},"styling":{"eyebrows":"breadcrumbs","codeblocks":"system","latex":true},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"thumbnails":{"appearance":"light"},"markdown":{"schema":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"paradime-docs","hasAudioNarration":false,"actualSubdomain":"paradime-docs","customDomains":["docs.paradime.io"],"gitSource":{"type":"github","owner":"paradime-io","repo":"paradime-docs-mintlify","deployBranch":"main","contentDirectory":"paradime-docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af2fc2339d0955f178103d8","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"Products","count":294},{"language":"default","tag":"Guides","count":183},{"language":"default","tag":"Integrations","count":166},{"language":"default","tag":"Changelog","count":111},{"language":"default","tag":"DinoAI","count":95},{"language":"default","tag":"Bolt","count":83},{"language":"default","tag":"Developers","count":57},{"language":"default","tag":"Orchestrate data pipelines","count":45},{"language":"default","tag":"Schedule Anatomy","count":45},{"language":"default","tag":"Administration","count":45}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[],"googleFontsInlined":true},"customCss":[{"filePath":"custom.css","content":"#navigation-items>ul.sidebar-group~ul.sidebar-group{margin-top:0}#navigation-items a .rounded-md[style*=\"background\"] svg{background:white!important}div[class*=\"w-[160px]\"] .flex.flex-wrap>span.inline-block.rounded-lg.font-medium{padding:2px 8px;background-color:rgba(114, 106, 227, 0.12);color:#5943D6}#content-area h1,#content-area h2,#content-area h3,#content-area h4{letter-spacing:-0.03em}#content-area #page-title{font-size:2.25rem;line-height:1.1}.nav-logo{height:22px}#background-color::after{content:\"\";position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(to right, rgba(114, 106, 227, 0.13) 1px, transparent 1px),\n linear-gradient(to bottom, rgba(114, 106, 227, 0.13) 1px, transparent 1px);background-size:44px 44px;-webkit-mask-image:radial-gradient(700px circle at 100% 0%, black 12%, transparent 68%),\n radial-gradient(700px circle at 0% 0%, black 12%, transparent 68%);-webkit-mask-composite:source-over;mask-image:radial-gradient(700px circle at 100% 0%, black 12%, transparent 68%),\n radial-gradient(700px circle at 0% 0%, black 12%, transparent 68%);mask-composite:add}#sidebar .sidebar-group-header{color:rgb(113, 113, 122)}#sidebar div:has(>.sidebar-group-header)~div:has(>.sidebar-group-header){border-top:1px solid rgba(128, 128, 140, 0.18);padding-top:1.25rem}img[src*=\"dino-ai\"]{background:transparent!important;filter:brightness(0) invert(0.64)}a[aria-current=\"location\"] img[src*=\"dino-ai\"],a.group:hover img[src*=\"dino-ai\"]{filter:brightness(0) invert(1)}img.sidebar-group-icon[src*=\"slack\"]{filter:brightness(0) invert(0.44)}"}],"page":{"pagePath":"guides/migrations/dbt-cloud-tm-importer/migrate-step-by-step","slug":"/guides/migrations/dbt-cloud-tm-importer/migrate-step-by-step","pageMetadata":{"title":"Migrate from dbt Cloud™ step by step","description":"Move one dbt Cloud™ project into a Paradime workspace in phases, check it with real Bolt runs, then switch jobs to Bolt one group at a time, with rollback.","href":"/guides/migrations/dbt-cloud-tm-importer/migrate-step-by-step"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Move one dbt Cloud™ project into a Paradime workspace in phases, check it with real Bolt runs, then switch jobs to Bolt one group at a time, with rollback.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Frame,Heading,OptimizedImage,Warning}=_components;if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`The step-by-step migration moves one dbt Cloud™ project into the current Paradime workspace. You apply it in phases, you see the result for each environment, variable and job, and you switch jobs from dbt Cloud™ to Bolt only when you are ready. A built-in DinoAI agent can walk you through it.`}),`\n`,_jsxs(_components.p,{children:[`Use it for every project with more than a few jobs, several environments, job triggers, or secret variables. For a small project, you can still `,_jsx(_components.a,{href:`/guides/migrations/dbt-cloud-tm-importer/transferring-dbt-tm-jobs`,children:`import every job in one step`}),`.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Access to the dbt Cloud™ API is included only on the `,_jsx(_components.strong,{children:`Team`}),` and `,_jsx(_components.strong,{children:`Enterprise`}),` plans. On a Starter plan, use a personal access token: a Starter service token cannot read jobs.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`before-you-start`,children:`Before you start`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Admin access.`}),` Run the migration as a workspace Admin. Applying the phases writes integrations, production connections, environment variables, and Bolt schedules, so it needs the rights for each of them.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`A token that can read the project.`}),` Create a dbt Cloud™ service token with read access to the account and the project. See `,_jsx(_components.a,{href:`/guides/migrations/dbt-cloud-tm-importer/transferring-dbt-tm-jobs#create-service-token`,children:`Create Service Token`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`One project per workspace.`}),` A dbt Cloud™ project maps to one Paradime workspace. Start the migration from the workspace that will run the project. To migrate several projects, repeat the migration from each matching workspace.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`For the switch only:`}),` a second token with job write access, for example `,_jsx(_components.strong,{children:`Job Admin`}),` or `,_jsx(_components.strong,{children:`Account Admin`}),`. You add it when you switch the first jobs.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`start-the-migration`,children:`Start the migration`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`In Paradime, go to `,_jsx(_components.strong,{children:`Workspace Settings > Integrations`}),`, find the dbt Cloud™ integration and click `,_jsx(_components.strong,{children:`Connect`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Enter the `,_jsx(_components.strong,{children:`Host name`}),` (your account URL, for example `,_jsx(_components.code,{children:`https://ab123.us1.dbt.com`}),`) and the `,_jsx(_components.strong,{children:`Service account token`}),`. Paradime checks the token and lists the projects it can read. Nothing is imported.`]}),`\n`,_jsx(_components.li,{children:`Choose the project that matches this workspace. Paradime reads it and shows what each job, environment, and variable becomes. Nothing is written yet.`}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Migrate step by step`}),`. The dbt Cloud™ integration page opens with the migration checklist.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`To come back later, open `,_jsx(_components.strong,{children:`Workspace Settings > Integrations > dbt Cloud™`}),`. The page header shows the project and the migration status, with three buttons:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Migration agent`}),` opens the `,_jsx(_components.a,{href:`#the-migration-agent`,children:`migration agent`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Scan again`}),` reads the project from dbt Cloud™ again. What is already applied stays applied.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Start over`}),` forgets the migration, after a second click to confirm. What it created in Paradime stays.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`What changes, and why`}),` holds the full review: for each job, its triggers, commands, and what works differently in Bolt.`]}),`\n`,_jsx(Heading,{level:`2`,id:`apply-the-phases`,children:`Apply the phases`}),`\n`,_jsx(_components.p,{children:`The checklist has one card per phase. Only the current phase is open: the first one with something left to do, or a phase while it runs. Open any other card from its title.`}),`\n`,_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/paradime-docs/uIRt10h9TEZa8ts9/images/dbt-cloud-migration-checklist.jpg?fit=max\u0026auto=format\u0026n=uIRt10h9TEZa8ts9\u0026q=85\u0026s=556ef373a58748bb151f9f0259a01e1d`,alt:`The dbt Cloud™ integration page with the migration checklist: Environments 3 of 3 done, Connections 3 of 3 connected, Variables 19 of 19 done, and the Migration agent, Scan again, and Start over buttons`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`900`,height:`900`,\"data-path\":`images/dbt-cloud-migration-checklist.jpg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/paradime-docs/uIRt10h9TEZa8ts9/images/dbt-cloud-migration-checklist.jpg?w=280\u0026fit=max\u0026auto=format\u0026n=uIRt10h9TEZa8ts9\u0026q=85\u0026s=cd74047198b5c87c3fb8ead4a7bfb1aa 280w, https://mintcdn.com/paradime-docs/uIRt10h9TEZa8ts9/images/dbt-cloud-migration-checklist.jpg?w=560\u0026fit=max\u0026auto=format\u0026n=uIRt10h9TEZa8ts9\u0026q=85\u0026s=1421127450de49f46700da587960434d 560w, https://mintcdn.com/paradime-docs/uIRt10h9TEZa8ts9/images/dbt-cloud-migration-checklist.jpg?w=840\u0026fit=max\u0026auto=format\u0026n=uIRt10h9TEZa8ts9\u0026q=85\u0026s=5c98763ffdbdc37e78e0b15db3e00512 840w, https://mintcdn.com/paradime-docs/uIRt10h9TEZa8ts9/images/dbt-cloud-migration-checklist.jpg?w=1100\u0026fit=max\u0026auto=format\u0026n=uIRt10h9TEZa8ts9\u0026q=85\u0026s=b857116a84792a2a17278813f209dcac 1100w, https://mintcdn.com/paradime-docs/uIRt10h9TEZa8ts9/images/dbt-cloud-migration-checklist.jpg?w=1650\u0026fit=max\u0026auto=format\u0026n=uIRt10h9TEZa8ts9\u0026q=85\u0026s=dc7c70dc30357ad7543d6f0199178df2 1650w, https://mintcdn.com/paradime-docs/uIRt10h9TEZa8ts9/images/dbt-cloud-migration-checklist.jpg?w=2500\u0026fit=max\u0026auto=format\u0026n=uIRt10h9TEZa8ts9\u0026q=85\u0026s=41e175a1b0f0eb22e088be4408902c7b 2500w`})}),`\n`,_jsxs(_components.p,{children:[`Each phase runs in the background, and the page updates while it runs. Each row shows its status: `,_jsx(_components.strong,{children:`To do`}),`, `,_jsx(_components.strong,{children:`Done`}),`, `,_jsx(_components.strong,{children:`Failed`}),` (with the error), `,_jsx(_components.strong,{children:`Skipped`}),`, `,_jsx(_components.strong,{children:`Needs input`}),`, or `,_jsx(_components.strong,{children:`Manual`}),`. On a row that failed, needs input, or is manual, click `,_jsx(_components.strong,{children:`Ask DinoAI`}),` to have the migration agent explain it.`]}),`\n`,_jsx(_components.p,{children:`You can apply a phase again at any time. Rows that are already applied are skipped, and failed rows run again. Fix the cause of a failure first, then apply the phase again. Only one phase runs at a time.`}),`\n`,_jsx(Heading,{level:`3`,id:`1-environments`,children:`1. Environments`}),`\n`,_jsx(_components.p,{children:`Each dbt Cloud™ deployment environment gets a Bolt environment. For each one, choose:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Use`}),` an existing Bolt environment. Production defaults to the workspace’s default Bolt environment, and another environment defaults to the Bolt environment with the same name.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Create a new environment`}),`, with the dbt™ version and branch from dbt Cloud™.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Skip`}),`: Paradime creates no Bolt environment for it. Its jobs still migrate, to the workspace’s default Bolt environment.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Apply environments`}),` to save your choices and apply them. The other phases wait until then. You can’t change an environment’s target after it’s applied: its schedules and variables already live there.`]}),`\n`,_jsxs(_components.p,{children:[`The dbt Cloud™ development environment becomes the Code IDE, so there is nothing to choose. Its row says whether your development connection is set up. Click `,_jsx(_components.strong,{children:`Set up`}),` if it isn’t.`]}),`\n`,_jsx(Heading,{level:`3`,id:`2-connections`,children:`2. Connections`}),`\n`,_jsx(_components.p,{children:`dbt Cloud™ never returns warehouse passwords, keys, or tokens, so you finish each connection yourself:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`On an environment’s row, click `,_jsx(_components.strong,{children:`Set up connection`}),`. The usual connection form opens, filled in from dbt Cloud™: the warehouse, its settings, the profile name, the target, and the threads.`]}),`\n`,_jsx(_components.li,{children:`Add the secrets, correct any value, and test the connection.`}),`\n`,_jsxs(_components.li,{children:[`Save it. Paradime takes you back to the migration, and the row shows `,_jsx(_components.strong,{children:`Connected`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The form is filled in for Snowflake, BigQuery, Databricks, and Redshift. For another warehouse, set up the connection in `,_jsx(_components.a,{href:`/products/settings/connections/index`,children:`Connections`}),` yourself. An environment that already has a connection keeps it.`]}),`\n`,_jsx(Heading,{level:`3`,id:`3-variables`,children:`3. Variables`}),`\n`,_jsx(_components.p,{children:`Every variable is listed with its dbt Cloud™ value. Project values become workspace variables, and environment values become environment variables.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Apply`}),` writes the dbt Cloud™ value of one variable.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Edit`}),` lets you change the value first, then `,_jsx(_components.strong,{children:`Apply`}),` it. After a change, the row says `,_jsx(_components.strong,{children:`Changed from`}),` and the dbt Cloud™ value.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Secret`}),` variables (`,_jsx(_components.code,{children:`DBT_ENV_SECRET_*`}),`) have a password field, because dbt Cloud™ never returns their values. Enter the value and click `,_jsx(_components.strong,{children:`Apply`}),`. The row then says `,_jsx(_components.strong,{children:`Secret set`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`When Paradime already has another value, it keeps it, and the row says `,_jsx(_components.strong,{children:`dbt Cloud has`}),` and that value. Click `,_jsx(_components.strong,{children:`Use dbt Cloud value`}),` to replace it.`]}),`\n`,_jsxs(_components.li,{children:[`A job’s own variables say `,_jsx(_components.strong,{children:`With schedule`}),` until the schedules phase creates the job’s schedule.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Apply variables`}),` to apply the rest at once. It never overwrites a value you applied by hand.`]}),`\n`,_jsx(Heading,{level:`3`,id:`4-schedules`,children:`4. Schedules`}),`\n`,_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Apply schedules`}),`. Every job becomes a `,_jsx(_components.strong,{children:`suspended`}),` Bolt schedule, with its triggers and deferral. Paradime writes the schedules first and the links between them second, so a job can run after a parent that is created later. Then it parses the schedules and checks that every link resolves.`]}),`\n`,_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`/guides/migrations/dbt-cloud-tm-importer/transferring-dbt-tm-jobs#how-dbt-cloud-jobs-are-mapped-to-bolt-schedules`,children:`how jobs are mapped`}),` for each setting.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Jobs that trigger each other in a loop are not linked. The row names the loop.`}),`\n`,_jsxs(_components.li,{children:[`A job that runs after a job in another dbt Cloud™ project shows `,_jsx(_components.strong,{children:`Waiting`}),`. See `,_jsx(_components.a,{href:`#jobs-that-depend-on-another-project`,children:`Jobs that depend on another project`}),`.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`5-verify`,children:`5. Verify`}),`\n`,_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Run checks`}),`. Paradime creates one check schedule per environment that runs `,_jsx(_components.code,{children:`dbt debug`}),` and `,_jsx(_components.code,{children:`dbt compile`}),`, and runs it in Bolt.`]}),`\n`,_jsxs(_components.p,{children:[`Each check shows `,_jsx(_components.strong,{children:`Running`}),` while its Bolt run is in progress, then `,_jsx(_components.strong,{children:`Done`}),` when the run passed. A failed check links to its Bolt run: open it, fix the cause, then run the checks again. The phase is only done when every check passed.`]}),`\n`,_jsx(Heading,{level:`2`,id:`switch-jobs-from-dbt-cloud-to-bolt`,children:`Switch jobs from dbt Cloud™ to Bolt`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`6. Switch`}),` card opens once the schedules are applied. Nothing switches on its own: you move jobs one group at a time, or a whole environment at once. The card header counts the groups already in Bolt.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`A group`}),` is one job plus every job linked to it by completion triggers. A job in one product cannot trigger a job in the other, so a chain moves as a whole.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Order.`}),` A group that other groups defer to says `,_jsx(_components.strong,{children:`Switch this group first`}),`. Switch it first, so the jobs that defer to it have a successful Bolt run.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`State.`}),` Each group shows `,_jsx(_components.strong,{children:`In dbt Cloud`}),`, `,_jsx(_components.strong,{children:`In Bolt`}),`, or `,_jsx(_components.strong,{children:`Partly switched`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Before the first switch, enter a dbt Cloud™ token with job write access and click `,_jsx(_components.strong,{children:`Save token`}),`. Paradime stores it apart from the read token, and uses it only to turn jobs off and on.`]}),`\n`,_jsx(_components.p,{children:`To switch a group:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Check`}),`. Each check passes, warns, or fails:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`every job has a Bolt schedule, deployed with no parse errors and with every link resolved`}),`\n`,_jsx(_components.li,{children:`the verify check of the job’s environment passed`}),`\n`,_jsx(_components.li,{children:`no dbt Cloud™ run of the group is queued or running`}),`\n`,_jsx(_components.li,{children:`no run of the group is due in the next 10 minutes, in either product`}),`\n`,_jsx(_components.li,{children:`a write token is saved`}),`\n`,_jsx(_components.li,{children:`a deferral target has no successful Bolt run yet (warning only)`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`If a check fails, fix the cause and click `,_jsx(_components.strong,{children:`Check`}),` again. `,_jsx(_components.strong,{children:`Switch to Bolt`}),` stays disabled while a check fails.`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Switch to Bolt`}),`. Paradime turns the group’s dbt Cloud™ jobs off first, then turns its Bolt schedules on, so no job runs twice. If a step fails, Paradime undoes what it did.`]}),`\n`,_jsxs(_components.li,{children:[`After the first runs, click `,_jsx(_components.strong,{children:`Compare runs`}),` to see the latest runs of each job in both products, with status and duration.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`To switch a whole environment, pick it in `,_jsx(_components.strong,{children:`Switch a whole environment`}),`, click `,_jsx(_components.strong,{children:`Switch N group(s)`}),`, then confirm. Paradime checks and switches the groups in order, and stops at the first group that fails.`]}),`\n`,_jsxs(_components.p,{children:[`To move a group back, click `,_jsx(_components.strong,{children:`Roll back`}),`, then `,_jsx(_components.strong,{children:`Confirm roll back`}),`. Paradime suspends the Bolt schedules first, then gives the dbt Cloud™ jobs their triggers back.`]}),`\n`,_jsxs(_components.p,{children:[`If a switch or a rollback stops half-way, for example because dbt Cloud™ does not answer, Paradime undoes what it can. The group then shows `,_jsx(_components.strong,{children:`Partly switched`}),`, and each job shows what is left. Roll the group back, or switch it again.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`A switch turns off each job’s schedule and Git triggers in dbt Cloud™. It cannot stop a run that an orchestrator or a script starts through the dbt Cloud™ API, or a run that someone starts by hand. Stop those at the source before you switch. For Airflow, see `,_jsx(_components.a,{href:`/products/bolt/external-triggers/airflow#migrate-from-the-dbt-cloud-operators`,children:`Migrate from the dbt Cloud™ operators`}),`.`]})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Keep the dbt Cloud™ jobs (turned off) for 1 to 2 weeks after the switch, as the `,_jsx(_components.a,{href:`/guides/migrations/dbt-cloud-tm-importer/migration-checklist`,children:`migration checklist`}),` recommends. A rollback needs them. For the same reason, `,_jsx(_components.strong,{children:`Start over`}),` is refused while any job is switched: the migration keeps the dbt Cloud™ triggers that a rollback restores.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`the-migration-agent`,children:`The migration agent`}),`\n`,_jsxs(_components.p,{children:[`The migration page has a built-in DinoAI agent. Click `,_jsx(_components.strong,{children:`Migration agent`}),` in the page header to open it in a drawer next to the checklist, then click `,_jsx(_components.strong,{children:`Start the migration agent`}),`.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`It works through the checklist with you.`}),` It reads the same checklist, explains each gap, and asks you one decision at a time, with a button for each option.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`It checks your code.`}),` It searches your repository for code that reads `,_jsx(_components.code,{children:`target.name`}),`, `,_jsx(_components.code,{children:`DBT_ENV`}),`, or `,_jsx(_components.code,{children:`DBT_CLOUD_*`}),` variables.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`It never sees your secrets.`}),` It asks for secret values in a secure form. The value goes to Vault, and the agent only gets a reference to it.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`It changes nothing without your approval.`}),` Before it applies a phase or switches jobs, it shows an approval card that names exactly what it will do. Click `,_jsx(_components.strong,{children:`Approve`}),` or `,_jsx(_components.strong,{children:`Reject`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Ask DinoAI`}),` on a checklist row sends the agent a message about that row. `,_jsx(_components.strong,{children:`New conversation`}),` starts a fresh session, and `,_jsx(_components.strong,{children:`Open in agent`}),` opens the session in DinoAI. The page shows the same session again after a reload.`]}),`\n`,_jsxs(_components.p,{children:[`To start the agent, you need to be able to start DinoAI agent sessions and to change environments, variables, connections, integrations, and Bolt schedules. Today that means a workspace Admin. The workspace also needs its Git repository set up. The agent is built in: it ignores your repository’s `,_jsx(_components.code,{children:`.dinorules`}),` and skills, and it isn’t listed with your workspace’s agents.`]}),`\n`,_jsx(Heading,{level:`2`,id:`jobs-that-depend-on-another-project`,children:`Jobs that depend on another project`}),`\n`,_jsx(_components.p,{children:`A dbt Cloud™ job can run after a job in another dbt Cloud™ project. Each project migrates into its own workspace, so migrate the upstream project first.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Triggers.`}),` The job’s link shows `,_jsx(_components.strong,{children:`Waiting`}),` until another Paradime workspace has migrated the parent job. Then apply the schedules phase again: the job gets a trigger on the parent’s schedule in the other workspace. A waiting link does not hold up the other phases.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Deferral.`}),` Bolt can’t defer to a schedule in another workspace, so a deferral to another project’s job stays a decision.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Description.`}),` The schedule’s description gets a `,_jsx(_components.strong,{children:`Migrated from dbt Cloud`}),` note that names the other project’s job, so the dependency stays visible.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Switch order.`}),` A group can’t switch while its parent in the other workspace still runs in dbt Cloud™, because Bolt can’t trigger a dbt Cloud™ job. A job in another workspace that runs after the group gets a warning: switch it right after.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Only a parent that the migration imported can be found. A schedule made by hand in another workspace has no dbt Cloud™ job ID, so link it by hand.`}),`\n`,_jsx(Heading,{level:`2`,id:`known-limits`,children:`Known limits`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Docs jobs`}),` are skipped: the Paradime Catalog refreshes every night. To refresh it after a job, add the `,_jsx(_components.a,{href:`/products/bolt/creating-schedules/command-settings/paradime-refresh-catalog`,children:`Refresh Paradime Catalog`}),` command.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Target names.`}),` A job’s target name becomes a `,_jsx(_components.code,{children:`--target`}),` flag only when the environment has a connection with that target name. Otherwise the checklist asks you to decide.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Not migrated:`}),` compare changes, lint, run on draft pull requests, cost optimization, job-level dbt™ versions, and warning and cancel notifications. The review lists them for each job.`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Migrate from dbt Cloud™ step by step","description":"Move one dbt Cloud™ project into a Paradime workspace in phases, check it with real Bolt runs, then switch jobs to Bolt one group at a time, with rollback.","href":"/guides/migrations/dbt-cloud-tm-importer/migrate-step-by-step"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Before you start","slug":"before-you-start","depth":2,"children":[]},{"title":"Start the migration","slug":"start-the-migration","depth":2,"children":[]},{"title":"Apply the phases","slug":"apply-the-phases","depth":2,"children":[{"title":"1. Environments","slug":"1-environments","depth":3,"children":[]},{"title":"2. Connections","slug":"2-connections","depth":3,"children":[]},{"title":"3. Variables","slug":"3-variables","depth":3,"children":[]},{"title":"4. Schedules","slug":"4-schedules","depth":3,"children":[]},{"title":"5. Verify","slug":"5-verify","depth":3,"children":[]}]},{"title":"Switch jobs from dbt Cloud™ to Bolt","slug":"switch-jobs-from-dbt-cloud-to-bolt","depth":2,"children":[]},{"title":"The migration agent","slug":"the-migration-agent","depth":2,"children":[]},{"title":"Jobs that depend on another project","slug":"jobs-that-depend-on-another-project","depth":2,"children":[]},{"title":"Known limits","slug":"known-limits","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/paradime-docs/d89c3c6c95bfc95f/snitcher.js"],"subdomain":"paradime-docs","siteName":"Paradime","title":"Migrate from dbt Cloud™ step by step - Paradime","relatedPagesConfig":{"enabled":true,"limit":5,"mode":"automatic"},"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-26T10:38:49.221Z","originalFileLocation":"guides/migrations/dbt-cloud-tm-importer/migrate-step-by-step.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Move one dbt Cloud™ project into a Paradime workspace in phases, check it with real Bolt runs, then switch jobs to Bolt one group at a time, with rollback.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Paradime\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/paradime-docs/M6Wm7PyWfTcwC_Oc/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/paradime-docs/M6Wm7PyWfTcwC_Oc/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/paradime-docs/M6Wm7PyWfTcwC_Oc/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/paradime-docs/M6Wm7PyWfTcwC_Oc/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/paradime-docs/M6Wm7PyWfTcwC_Oc/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/paradime-docs/M6Wm7PyWfTcwC_Oc/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/paradime-docs/M6Wm7PyWfTcwC_Oc/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/paradime-docs/M6Wm7PyWfTcwC_Oc/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/paradime-docs/M6Wm7PyWfTcwC_Oc/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Migrate from dbt Cloud™ step by step - Paradime\">\u003cmeta data-mint-head property=\"og:description\" content=\"Move one dbt Cloud™ project into a Paradime workspace in phases, check it with real Bolt runs, then switch jobs to Bolt one group at a time, with rollback.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Paradime\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.paradime.io/guides/migrations/dbt-cloud-tm-importer/migrate-step-by-step\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://paradime-docs.mintlify.site/_mintlify/api/og/v2?division=dbt%E2%84%A2+cloud+to+Paradime\u0026amp;title=Migrate+from+dbt+Cloud%E2%84%A2+step+by+step\u0026amp;description=Move+one+dbt+Cloud%E2%84%A2+project+into+a+Paradime+workspace+in+phases%2C+check+it+with+real+Bolt+runs%2C+then+switch+jobs+to+Bolt+one+group+at+a+time%2C+with+rollback.\u0026amp;theme=e98f82616320db913a88f7c5\u0026amp;signature=f53be5fca98fb3c4787c5a7fac2921c9c381ce5b6e8c816a6b99d10cdb599076\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Migrate from dbt Cloud™ step by step - Paradime\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Move one dbt Cloud™ project into a Paradime workspace in phases, check it with real Bolt runs, then switch jobs to Bolt one group at a time, with rollback.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://paradime-docs.mintlify.site/_mintlify/api/og/v2?division=dbt%E2%84%A2+cloud+to+Paradime\u0026amp;title=Migrate+from+dbt+Cloud%E2%84%A2+step+by+step\u0026amp;description=Move+one+dbt+Cloud%E2%84%A2+project+into+a+Paradime+workspace+in+phases%2C+check+it+with+real+Bolt+runs%2C+then+switch+jobs+to+Bolt+one+group+at+a+time%2C+with+rollback.\u0026amp;theme=e98f82616320db913a88f7c5\u0026amp;signature=f53be5fca98fb3c4787c5a7fac2921c9c381ce5b6e8c816a6b99d10cdb599076\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/paradime-docs/M6Wm7PyWfTcwC_Oc/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Paradime\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#726AE3\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.paradime.io/guides/migrations/dbt-cloud-tm-importer/migrate-step-by-step\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/migrations/dbt-cloud-tm-importer/migrate-step-by-step.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.paradime.io/#organization\",\"name\":\"Paradime\",\"url\":\"https://docs.paradime.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/paradime-docs/C-R77mCdstNPsNTv/logo/paradime-logo-light-mode.svg?fit=max\u0026auto=format\u0026n=C-R77mCdstNPsNTv\u0026q=85\u0026s=7a32141c8f01f795c35f0c3c48b2f26a\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.paradime.io#website\",\"name\":\"Paradime\",\"url\":\"https://docs.paradime.io\",\"publisher\":{\"@id\":\"https://docs.paradime.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.paradime.io/guides/migrations/dbt-cloud-tm-importer/migrate-step-by-step#webpage\",\"url\":\"https://docs.paradime.io/guides/migrations/dbt-cloud-tm-importer/migrate-step-by-step\",\"name\":\"Migrate from dbt Cloud™ step by step\",\"description\":\"Move one dbt Cloud™ project into a Paradime workspace in phases, check it with real Bolt runs, then switch jobs to Bolt one group at a time, with rollback.\",\"dateModified\":\"2026-10-26T10:38:49.221Z\",\"isPartOf\":{\"@id\":\"https://docs.paradime.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.paradime.io/guides/migrations/dbt-cloud-tm-importer/migrate-step-by-step#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.paradime.io/guides/migrations/dbt-cloud-tm-importer/migrate-step-by-step#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Migrate to Paradime\",\"item\":\"https://docs.paradime.io/guides/migrations\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"dbt™ cloud to Paradime\",\"item\":\"https://docs.paradime.io/guides/migrations/dbt-cloud-tm-importer\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Migrate from dbt Cloud™ step by step\",\"item\":\"https://docs.paradime.io/guides/migrations/dbt-cloud-tm-importer/migrate-step-by-step\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.paradime.io/guides/migrations/dbt-cloud-tm-importer/migrate-step-by-step#article\",\"headline\":\"Migrate from dbt Cloud™ step by step\",\"name\":\"Migrate from dbt Cloud™ step by step\",\"description\":\"Move one dbt Cloud™ project into a Paradime workspace in phases, check it with real Bolt runs, then switch jobs to Bolt one group at a time, with rollback.\",\"url\":\"https://docs.paradime.io/guides/migrations/dbt-cloud-tm-importer/migrate-step-by-step\",\"mainEntityOfPage\":{\"@id\":\"https://docs.paradime.io/guides/migrations/dbt-cloud-tm-importer/migrate-step-by-step#webpage\"},\"dateModified\":\"2026-10-26T10:38:49.221Z\",\"publisher\":{\"@id\":\"https://docs.paradime.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.paradime.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Paradime\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Paradime\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/guides/migrations/dbt-cloud-tm-importer/migrate-step-by-step.md","siteName":"Paradime","nav":{"global":null,"tabs":[{"tab":"Start here","pages":[{"title":"Start here","href":""}]},{"tab":"Guides","pages":[{"group":"Foundations","icon":"lightbulb","pages":[{"title":"Foundations","sidebarTitle":"Overview","href":"/guides/foundations"},{"title":"How Paradime works","href":"/guides/foundations/how-paradime-works"},{"title":"What is dbt™?","href":"/guides/foundations/what-is-dbt"},{"title":"Environments and connections","href":"/guides/foundations/environments-and-connections"},{"title":"What is DinoAI?","href":"/guides/foundations/what-is-dinoai"},{"title":"What is Bolt?","href":"/guides/foundations/what-is-bolt"},{"title":"Monitoring and discovery","href":"/guides/foundations/monitoring-and-discovery"},{"title":"Key terms","href":"/guides/foundations/key-terms"}]},{"group":"Automate with AI agents","icon":"bot","pages":[{"title":"Automate with AI agents","sidebarTitle":"Overview","href":"/guides/programmable-agents/index"},{"group":"Build \u0026 run agents","pages":[{"title":"Build an agent in the UI","href":"/guides/programmable-agents/build-in-the-agent-ui"},{"title":"Run an agent with Bolt","href":"/guides/programmable-agents/run-an-agent-with-bolt"},{"title":"Run an agent from a webhook","href":"/guides/programmable-agents/run-an-agent-from-a-webhook"},{"title":"Build a custom bot on the agent API","sidebarTitle":"Build a custom bot","href":"/guides/programmable-agents/build-a-custom-bot"}]},{"group":"Pipeline reliability \u0026 on-call","pages":[{"title":"Bolt pipeline healer","href":"/guides/programmable-agents/bolt-pipeline-healer"},{"title":"Bolt CI healer","href":"/guides/programmable-agents/bolt-ci-healer"},{"title":"MongoDB schema drift healer","href":"/guides/programmable-agents/mongo-schema-drift-healer"},{"title":"Pipeline incident commander (Airflow)","href":"/guides/programmable-agents/incident-commander"},{"title":"Self-heal Dagster pipelines","href":"/guides/programmable-agents/self-healing-pipelines-dagster"},{"title":"Snowflake Task migrator","href":"/guides/programmable-agents/snowflake-task-migrator"}]},{"group":"Code quality","pages":[{"title":"Set up DinoAI Code Review","href":"/guides/programmable-agents/set-up-dinoai-code-review"},{"title":"End-to-end PR reviewer","href":"/guides/programmable-agents/end-to-end-pr-reviewer"},{"title":"End-to-end PR reviewer (Jira)","href":"/guides/programmable-agents/end-to-end-pr-reviewer-jira"},{"title":"dbt™ impact assessor","href":"/guides/programmable-agents/impact-assessor"},{"title":"dbt™ test maintainer","href":"/guides/programmable-agents/test-maintainer"},{"title":"dbt™ documentation backfiller","href":"/guides/programmable-agents/doc-backfiller"},{"title":"PR reviewer with the DinoAI GitHub Action","sidebarTitle":"PR reviewer with the GitHub Action (alternative)","href":"/guides/programmable-agents/github-action-pr-reviewer"}]},{"group":"Slack bots","pages":[{"title":"Jira intake agent","href":"/guides/programmable-agents/jira-intake-agent"},{"title":"Linear intake agent","href":"/guides/programmable-agents/linear-intake-agent"}]},{"group":"Backlog \u0026 tickets","pages":[{"title":"GitHub Issues backlog agent","href":"/guides/programmable-agents/github-issues-backlog-agent"},{"title":"Linear backlog agent","href":"/guides/programmable-agents/linear-backlog-agent"},{"title":"Jira backlog agent","href":"/guides/programmable-agents/jira-backlog-agent"},{"title":"Jira change request agent","href":"/guides/programmable-agents/jira-change-request-agent"},{"title":"MongoDB schema drift triager","href":"/guides/programmable-agents/mongodb-schema-drift-triager"}]},{"group":"Cost optimization","pages":[{"title":"Query cost optimizer (Snowflake)","href":"/guides/programmable-agents/dbt-tm-model-query-cost-optimizer-snowflake"},{"title":"Query cost optimizer (BigQuery)","href":"/guides/programmable-agents/dbt-tm-model-query-cost-optimizer-bigquery"}]},{"group":"Analytics \u0026 reporting","pages":[{"title":"Weekly Metrics Pulse Reporter","href":"/guides/programmable-agents/weekly-metrics-pulse-agent"},{"title":"Renewal Prep Agent","href":"/guides/programmable-agents/renewal-prep-agent"}]}]},{"group":"Set up \u0026 configure","icon":"settings","pages":[{"title":"Set up \u0026 configure","sidebarTitle":"Overview","href":"/guides/set-up-and-configure/index"},{"group":"Workspace setup","root":{"title":"Getting Started with your Paradime Workspace","href":"/guides/paradime-101/getting-started-with-your-paradime-workspace/index"},"pages":[{"title":"Create a workspace","href":"/guides/paradime-101/getting-started-with-your-paradime-workspace/creating-a-workspace"},{"title":"Create and manage environments","href":"/guides/paradime-101/getting-started-with-your-paradime-workspace/setting-up-data-warehouse-connections"},{"title":"Manage workspace configurations","href":"/guides/paradime-101/getting-started-with-your-paradime-workspace/managing-workspace-configurations"},{"title":"Manage users","href":"/guides/paradime-101/getting-started-with-your-paradime-workspace/managing-users-in-the-workspace"},{"title":"Upgrade dbt Core™ version","href":"/guides/upgrade-dbt-core-version"}]},{"group":"Connections","root":{"title":"Data Warehouse essentials","href":"/guides/data-warehouse-essentials/index"},"pages":[{"title":"Manage connections","sidebarTitle":"Overview","href":"/guides/data-warehouse-essentials/manage-connections/index"},{"title":"Configure a connection","href":"/guides/data-warehouse-essentials/manage-connections/configure-a-connection"},{"title":"Copy a connection to another environment","sidebarTitle":"Copy a connection","href":"/guides/data-warehouse-essentials/manage-connections/copy-a-connection"},{"title":"Set an alternative default connection","href":"/guides/data-warehouse-essentials/manage-connections/set-alternative-default-connection"},{"title":"Delete a connection","href":"/guides/data-warehouse-essentials/manage-connections/delete-connections"},{"title":"Optional connection attributes","href":"/guides/data-warehouse-essentials/optional-connection-attributes"},{"title":"Set up a BigQuery multi-project service account","href":"/guides/data-warehouse-essentials/bigquery-multi-project-service-account"},{"title":"Snowflake DinoAI Agent Key-Pair Setup","href":"/guides/paradime-101/getting-started-with-the-dinoai-background-agent/snowflake-dinoai-agent-key-pair-setup"}]},{"group":"Data mesh \u0026 multi-project","pages":[{"title":"Data Mesh Setup","href":"/guides/data-mesh-setup/index"},{"title":"Configure cross-project dependencies","href":"/guides/data-mesh-setup/configure-project-dependencies"},{"title":"Cross-project references on dbt™ 2.0","href":"/guides/data-mesh-setup/cross-project-refs-on-dbt-v2"},{"title":"Model access","href":"/guides/data-mesh-setup/model-access"},{"title":"Model groups","href":"/guides/data-mesh-setup/model-groups"},{"title":"Workspaces and data mesh","href":"/guides/paradime-fundamentals/workspaces-and-data-mesh"},{"title":"PII Anonymization with dbt™ Mesh Setup","href":"/guides/pii-anonymization-with-dbt-tm-mesh-setup"}]}]},{"group":"Orchestrate data pipelines","icon":"workflow","pages":[{"title":"Orchestrate data pipelines","sidebarTitle":"Overview","href":"/guides/ship-to-production/index"},{"group":"Create \u0026 schedule jobs","pages":[{"title":"Create a schedule","href":"/guides/paradime-101/running-dbt-in-production-with-bolt/creating-bolt-schedules"},{"title":"Schedule types and triggers","href":"/guides/paradime-101/running-dbt-in-production-with-bolt/understanding-schedule-types-and-triggers"},{"title":"Orchestrate your whole stack","href":"/guides/orchestrate-data-pipelines/orchestrate-your-whole-stack"},{"title":"Manage schedules as code","href":"/guides/orchestrate-data-pipelines/manage-schedules-as-code"},{"title":"Run SQL statements in Bolt schedules","sidebarTitle":"Run SQL statements in Bolt","href":"/guides/running-sql-statements-in-bolt"}]},{"group":"Data ingestion with dlt","root":{"title":"Using dlt in Paradime","href":"/guides/using-dlt-in-paradime/index"},"pages":[{"title":"dlt credentials via environment variables","href":"/guides/using-dlt-in-paradime/dlt-source-and-destination-credentials-via-environment-variables"},{"title":"Reuse dbt™ BigQuery credentials in dlt pipelines","href":"/guides/using-dlt-in-paradime/reuse-dbt-tm-connection-credentials-in-dlt-pipelines-bigquery"},{"title":"Ingest Google Sheets into Snowflake with dltHub","href":"/guides/using-dlt-in-paradime/python-data-pipeline-using-dlthub-google-sheets-to-snowflake"}]},{"group":"Set up CI/CD","pages":[{"title":"Set up Turbo CI","href":"/guides/orchestrate-data-pipelines/set-up-turbo-ci"},{"title":"Run several Turbo CI checks on a pull request","sidebarTitle":"Run several Turbo CI checks","href":"/guides/orchestrate-data-pipelines/run-several-turbo-ci-checks"},{"title":"Chain Turbo CI checks to run in order","sidebarTitle":"Chain Turbo CI checks","href":"/guides/orchestrate-data-pipelines/chain-turbo-ci-checks"},{"title":"Set up continuous deployment","href":"/guides/orchestrate-data-pipelines/set-up-continuous-deployment"},{"title":"Run several jobs when a pull request merges","sidebarTitle":"Run several jobs on merge","href":"/guides/orchestrate-data-pipelines/run-several-jobs-on-merge"},{"title":"Make merges take turns with a merge queue","sidebarTitle":"Set up a merge queue","href":"/guides/orchestrate-data-pipelines/set-up-a-merge-queue"},{"title":"Compare column-level lineage on pull requests","href":"/guides/orchestrate-data-pipelines/compare-column-level-lineage"},{"title":"Migrate Turbo CI from --target flags to a CI environment","sidebarTitle":"Turbo CI to a CI environment","href":"/guides/migrations/migrate-turbo-ci-to-a-dedicated-environment"}]},{"group":"Monitor \u0026 operate","pages":[{"title":"View run history and analytics","href":"/guides/paradime-101/running-dbt-in-production-with-bolt/viewing-run-history-and-analytics"},{"title":"Set up notifications","href":"/guides/paradime-101/running-dbt-in-production-with-bolt/setting-up-notifications"},{"title":"Debug a failed run","href":"/guides/paradime-101/running-dbt-in-production-with-bolt/debugging-failed-runs"},{"title":"Set up alerts","href":"/guides/orchestrate-data-pipelines/set-up-alerts"},{"title":"Set up self-healing","href":"/guides/orchestrate-data-pipelines/set-up-self-healing"},{"title":"Send failures to your incident tools","href":"/guides/orchestrate-data-pipelines/send-failures-to-incident-tools"}]},{"group":"Templates","root":{"title":"Job templates","href":"/guides/orchestrate-data-pipelines/templates/index"},"pages":[{"group":"dbt™ jobs","root":{"title":"dbt™ Templates","href":"/guides/orchestrate-data-pipelines/templates/dbt-tm-templates/index"},"pages":[{"title":"Run and Test all your dbt™ Models","href":"/guides/orchestrate-data-pipelines/templates/dbt-tm-templates/run-and-test-all-your-dbt-tm-models"},{"title":"Snapshot Source Data Freshness","href":"/guides/orchestrate-data-pipelines/templates/dbt-tm-templates/snapshot-source-data-freshness"},{"title":"Build and Test Models with New Source Data","href":"/guides/orchestrate-data-pipelines/templates/dbt-tm-templates/deferred-model-execution"}]},{"group":"CI/CD","root":{"title":"CI/CD Templates","href":"/guides/orchestrate-data-pipelines/templates/ci-cd-templates/index"},"pages":[{"title":"Test Code Changes On Pull Requests","href":"/guides/orchestrate-data-pipelines/templates/ci-cd-templates/test-code-changes-on-pull-requests"},{"title":"Lint and Test Code Changes On Pull Requests","href":"/guides/orchestrate-data-pipelines/templates/ci-cd-templates/lint-and-test-code-changes-on-pull-requests"},{"title":"Deploy Code Changes On Merge","href":"/guides/orchestrate-data-pipelines/templates/ci-cd-templates/deploy-code-changes-on-merge"}]},{"group":"Observability","root":{"title":"Observability Templates","href":"/guides/orchestrate-data-pipelines/templates/observability-templates/index"},"pages":[{"title":"Send Elementary alerts to Slack","href":"/guides/orchestrate-data-pipelines/templates/observability-templates/send-elementary-alerts-to-slack"},{"title":"Send Elementary alerts to MS Teams","href":"/guides/orchestrate-data-pipelines/templates/observability-templates/send-elementary-alerts-to-ms-teams"}]},{"group":"Ticketing","root":{"title":"Ticketing Templates","href":"/guides/orchestrate-data-pipelines/templates/ticketing-templates/index"},"pages":[{"title":"Create Jira Tickets","href":"/guides/orchestrate-data-pipelines/templates/ticketing-templates/create-jira-tickets"},{"title":"Create Linear Issues","href":"/guides/orchestrate-data-pipelines/templates/ticketing-templates/create-linear-issues"},{"title":"Create Azure DevOps Items","href":"/guides/orchestrate-data-pipelines/templates/ticketing-templates/create-azure-devops-items"}]},{"group":"Reverse ETL","root":{"title":"Reverse ETL Templates","href":"/guides/orchestrate-data-pipelines/templates/reverse-etl-templates/index"},"pages":[{"title":"Trigger Census Syncs","href":"/guides/orchestrate-data-pipelines/templates/reverse-etl-templates/trigger-census-syncs"},{"title":"Trigger Hightouch Syncs","href":"/guides/orchestrate-data-pipelines/templates/reverse-etl-templates/trigger-hightouch-syncs"},{"title":"Trigger Hightouch Sequence Sync","href":"/guides/orchestrate-data-pipelines/templates/reverse-etl-templates/trigger-hightouch-sequence-sync"}]},{"group":"Dashboards","root":{"title":"Dashboard Templates","href":"/guides/orchestrate-data-pipelines/templates/dashboard-templates/index"},"pages":[{"title":"Trigger Hex Projects","href":"/guides/orchestrate-data-pipelines/templates/dashboard-templates/trigger-hex-projects"}]},{"group":"Incidents","root":{"title":"Incident Templates","href":"/guides/orchestrate-data-pipelines/templates/incident-templates/index"},"pages":[{"title":"Create Datadog Incident","href":"/guides/orchestrate-data-pipelines/templates/incident-templates/create-datadog-incident"},{"title":"Create PagerDuty Incident","href":"/guides/orchestrate-data-pipelines/templates/incident-templates/create-pagerduty-incident"},{"title":"Create Incident in incident.io","href":"/guides/orchestrate-data-pipelines/templates/incident-templates/create-incident-in-incident.io"},{"title":"Create New Relic Incidents","href":"/guides/orchestrate-data-pipelines/templates/incident-templates/create-new-relic-incidents"},{"title":"Create Rootly Incident","href":"/guides/orchestrate-data-pipelines/templates/incident-templates/create-rootly-incident"}]}]},{"group":"Trigger Bolt externally","pages":[{"title":"Trigger Bolt externally","href":"/guides/orchestrate-data-pipelines/trigger-bolt-externally"},{"title":"Use a webhook payload in a Bolt run","href":"/guides/orchestrate-data-pipelines/use-a-webhook-payload-in-a-run"}]}]},{"group":"Optimize builds with Paradime State","icon":"zap","pages":[{"title":"Paradime State","sidebarTitle":"Overview","href":"/guides/paradime-state/index"},{"title":"Turn on Paradime State","href":"/guides/paradime-state/turn-on-paradime-state"},{"title":"Paradime State configuration reference","sidebarTitle":"Configuration reference","href":"/guides/paradime-state/configuration-reference"},{"title":"Read a Paradime State run","sidebarTitle":"Read a run","href":"/guides/paradime-state/read-a-run"},{"title":"Troubleshoot Paradime State","sidebarTitle":"Troubleshooting","href":"/guides/paradime-state/troubleshooting"}]},{"group":"Migrate to Paradime","icon":"arrow-left-right","pages":[{"title":"Migrations","sidebarTitle":"Overview","href":"/guides/migrations/index"},{"group":"dbt™ cloud to Paradime","root":{"title":"dbt™ cloud to Paradime","description":"Migrate from dbt Cloud™ to Paradime: move a project step by step with checks and rollback, or import its jobs in one step, with a DinoAI migration agent.","href":"/guides/migrations/dbt-cloud-tm-importer/index"},"pages":[{"title":"Migrate from dbt Cloud™ step by step","href":"/guides/migrations/dbt-cloud-tm-importer/migrate-step-by-step"},{"title":"Transferring dbt™ Jobs","description":"Import your dbt Cloud™ jobs into Paradime Bolt schedules with a single click using the built-in importer, available on the Team and Enterprise plans.","href":"/guides/migrations/dbt-cloud-tm-importer/transferring-dbt-tm-jobs"},{"title":"Translating Key Terms","href":"/guides/migrations/dbt-cloud-tm-importer/translation-of-key-terms"},{"title":"Migration Playbook","href":"/guides/migrations/dbt-cloud-tm-importer/migration-from-dbt-cloud-playbook"},{"title":"Migration Checklist","href":"/guides/migrations/dbt-cloud-tm-importer/migration-checklist"}]},{"title":"Migrate dbt™ jobs from GitHub Actions to Paradime Bolt","href":"/guides/migrations/migrating-dbt-tm-jobs-from-github-actions-to-paradime-bolt"},{"group":"dbt™ version upgrades","root":{"title":"dbt™ version upgrades","sidebarTitle":"Overview","href":"/guides/migrations/dbt-version-upgrades/index"},"pages":[{"title":"Upgrade to dbt™ 1.9","href":"/guides/migrations/dbt-version-upgrades/upgrade-to-dbt-1.9"},{"title":"Upgrade to dbt™ 1.10","href":"/guides/migrations/dbt-version-upgrades/upgrade-to-dbt-1.10"},{"title":"Upgrade to dbt™ 1.11","href":"/guides/migrations/dbt-version-upgrades/upgrade-to-dbt-1.11"},{"title":"Upgrade to dbt™ 1.12","href":"/guides/migrations/dbt-version-upgrades/upgrade-to-dbt-1.12"},{"title":"Prepare for dbt™ v2","href":"/guides/migrations/dbt-version-upgrades/prepare-for-dbt-v2"},{"title":"Upgrade with the DinoAI agent","href":"/guides/migrations/dbt-version-upgrades/upgrade-with-the-dinoai-agent"}]}]},{"group":"Develop in Paradime","icon":"code","pages":[{"title":"Develop in Paradime","sidebarTitle":"Overview","href":"/guides/develop-in-paradime/index"},{"group":"Build in the IDE","pages":[{"title":"Set up a dbt™ project","href":"/guides/paradime-101/getting-started-with-the-paradime-ide/setting-up-a-dbt-project"},{"title":"Create a dbt™ model","href":"/guides/paradime-101/getting-started-with-the-paradime-ide/creating-a-dbt-model"},{"title":"Explore data in the Code IDE","href":"/guides/paradime-101/getting-started-with-the-paradime-ide/data-exploration-in-the-code-ide"},{"title":"Defer to production","href":"/guides/paradime-fundamentals/dbt-tm-defer-to-production"},{"title":"Visualize data lineage","href":"/guides/paradime-101/getting-started-with-the-paradime-ide/utilizing-advanced-developer-features/visualize-data-lineage"},{"title":"Enforce SQL and YAML best practices","href":"/guides/paradime-101/getting-started-with-the-paradime-ide/utilizing-advanced-developer-features/enforce-sql-and-yaml-best-practices"},{"title":"Work with CSV files","href":"/guides/paradime-101/getting-started-with-the-paradime-ide/utilizing-advanced-developer-features/working-with-csv-files"}]},{"group":"Build with DinoAI","root":{"title":"DinoAI copilot use cases","sidebarTitle":"Overview","href":"/guides/dinoai-copilot-use-cases/index"},"pages":[{"title":"Create sources from your warehouse","href":"/guides/dinoai-copilot-use-cases/creating-sources-from-your-warehouse"},{"title":"Generate dbt™ models","href":"/guides/dinoai-copilot-use-cases/generating-dbt-tm-models"},{"title":"Build marts models","href":"/guides/dinoai-copilot-use-cases/building-marts-models"},{"title":"Generate documentation","href":"/guides/dinoai-copilot-use-cases/generating-documentation"},{"title":"Configure data pipelines","href":"/guides/dinoai-copilot-use-cases/configuring-data-pipelines"},{"title":"Fix errors with Jira","href":"/guides/dinoai-copilot-use-cases/fixing-errors-with-jira"},{"title":"Debug failed dbt™ commands with terminal context","href":"/guides/dinoai-copilot-use-cases/debugging-failed-dbt-tm-commands-with-terminal-context"},{"title":"Research with Perplexity","href":"/guides/dinoai-copilot-use-cases/researching-with-perplexity"},{"title":"Provide additional context using PDFs","href":"/guides/dinoai-copilot-use-cases/providing-additional-context-using-pdfs"},{"title":"Generate pull request descriptions","href":"/guides/dinoai-copilot-use-cases/generating-pull-request-descriptions"},{"title":"Set up .dinorules using your project as context","href":"/guides/dinoai-copilot-use-cases/using-your-project-as-context-to-set-up-.dinorules"},{"title":"Accelerating dbt™ Development","href":"/guides/paradime-101/getting-started-with-the-paradime-ide/dinoai-accelerating-your-analytics-engineering-workflow/accelerating-dbt-development"},{"title":"Accelerating GitOps","href":"/guides/paradime-101/getting-started-with-the-paradime-ide/dinoai-accelerating-your-analytics-engineering-workflow/accelerating-git-ops"},{"title":"Accelerating Data Governance","href":"/guides/paradime-101/getting-started-with-the-paradime-ide/dinoai-accelerating-your-analytics-engineering-workflow/accelerating-data-governance"}]},{"group":"Version control with Git","root":{"title":"Working with Git","href":"/guides/working-with-git/index"},"pages":[{"title":"Use Git Lite","href":"/guides/working-with-git/git-lite"},{"title":"Use Git Advanced","href":"/guides/working-with-git/git-advanced"},{"title":"Work with read-only branches","href":"/guides/working-with-git/read-only-branches"},{"title":"Resolve merge conflicts","href":"/guides/working-with-git/merge-conflicts"},{"title":"Delete branches","href":"/guides/working-with-git/delete-branches"},{"title":"Explore Git history with GitLens","href":"/guides/working-with-git/gitlens"},{"title":"Set up a GitHub merge queue with Paradime Turbo CI","href":"/guides/working-with-git/github-merge-queue"},{"title":"Connecting a repository asynchronously","href":"/guides/working-with-git/connecting-a-repository-asynchronously"},{"title":"Configure signed commits with SSH keys","href":"/guides/working-with-git/configuring-signed-commits-on-paradime-with-ssh-keys"},{"title":"Protect the main branch on GitHub","href":"/guides/working-with-git/github-branch-protection-guide-preventing-direct-commits-to-main"}]}]},{"group":"Learn dbt™","icon":"graduation-cap","pages":[{"title":"dbt™ fundamentals","sidebarTitle":"Overview","href":"/guides/dbt-fundamentals/index"},{"group":"Getting started with dbt™","root":{"title":"Getting started with dbt™","href":"/guides/dbt-fundamentals/getting-started-with-dbt/index"},"pages":[{"title":"Introduction","href":"/guides/dbt-fundamentals/getting-started-with-dbt/introduction"},{"title":"Project Strucuture","href":"/guides/dbt-fundamentals/getting-started-with-dbt/project-strucuture"},{"title":"Working with Sources","href":"/guides/dbt-fundamentals/getting-started-with-dbt/working-with-sources"},{"title":"Testing Data Quality","href":"/guides/dbt-fundamentals/getting-started-with-dbt/testing-data-quality"},{"title":"Models and Transformations","href":"/guides/dbt-fundamentals/getting-started-with-dbt/models-and-transformations"}]},{"group":"Configuring your dbt™ Project","root":{"title":"Configuring your dbt™ Project","href":"/guides/dbt-fundamentals/configuring-your-dbt-project/index"},"pages":[{"title":"Setting up your dbt_project.yml","href":"/guides/dbt-fundamentals/configuring-your-dbt-project/setting-up-your-dbt_project.yml"},{"title":"Defining Your Sources in sources.yml","href":"/guides/dbt-fundamentals/configuring-your-dbt-project/define-your-sources.yml"},{"title":"Testing Source Freshness","href":"/guides/dbt-fundamentals/configuring-your-dbt-project/testing-source-freshness"},{"title":"Unit Testing","href":"/guides/dbt-fundamentals/configuring-your-dbt-project/unit-testing"},{"title":"Working with Tags","href":"/guides/dbt-fundamentals/configuring-your-dbt-project/working-with-tags-in-your-dbt-tm-project"},{"title":"Managing Seeds","href":"/guides/dbt-fundamentals/configuring-your-dbt-project/managing-seeds"},{"title":"Environment Management","href":"/guides/dbt-fundamentals/configuring-your-dbt-project/environment-management"},{"title":"Variables and Parameters","href":"/guides/dbt-fundamentals/configuring-your-dbt-project/variables-and-parameters"},{"title":"Macros","href":"/guides/dbt-fundamentals/configuring-your-dbt-project/macros"},{"title":"Custom Tests","href":"/guides/dbt-fundamentals/configuring-your-dbt-project/custom-tests"},{"title":"Hooks \u0026 Operational Tasks","href":"/guides/dbt-fundamentals/configuring-your-dbt-project/hooks-and-operational-tasks"},{"title":"Packages","href":"/guides/dbt-fundamentals/configuring-your-dbt-project/packages"}]},{"group":"Model Materializations","root":{"title":"Model Materializations","href":"/guides/dbt-fundamentals/model-materializations/index"},"pages":[{"title":"Table Materialization","href":"/guides/dbt-fundamentals/model-materializations/table-materialization"},{"title":"View Materialization","href":"/guides/dbt-fundamentals/model-materializations/view-materialization"},{"group":"Incremental Materialization","root":{"title":"Incremental Materialization","href":"/guides/dbt-fundamentals/model-materializations/incremental-materialization/index"},"pages":[{"title":"Using Merge for Incremental Models","href":"/guides/dbt-fundamentals/model-materializations/incremental-materialization/using-merge-for-incremental-models"},{"title":"Using Delete+Insert for Incremental Models","href":"/guides/dbt-fundamentals/model-materializations/incremental-materialization/using-delete+insert-for-incremental-models"},{"title":"Using Append for Incremental Models","href":"/guides/dbt-fundamentals/model-materializations/incremental-materialization/using-append-for-incremental-models"},{"title":"Using Microbatch for Incremental Models","href":"/guides/dbt-fundamentals/model-materializations/incremental-materialization/using-microbatch-for-incremental-models"}]},{"title":"Ephemeral Materialization","href":"/guides/dbt-fundamentals/model-materializations/ephemeral-materialization"},{"title":"Snapshots","href":"/guides/dbt-fundamentals/model-materializations/snapshots"}]},{"group":"Running dbt™","root":{"title":"Running dbt™","href":"/guides/dbt-fundamentals/running-dbt/index"},"pages":[{"group":"Mastering the dbt™ CLI","root":{"title":"Mastering the dbt™ CLI","href":"/guides/dbt-fundamentals/running-dbt/mastering-the-dbt-cli/index"},"pages":[{"title":"Commands","href":"/guides/dbt-fundamentals/running-dbt/mastering-the-dbt-cli/commands"},{"title":"dbt selector methods for precise CLI runs and tests","href":"/guides/dbt-fundamentals/running-dbt/mastering-the-dbt-cli/methods"},{"title":"Selector Methods","href":"/guides/dbt-fundamentals/running-dbt/mastering-the-dbt-cli/selector-methods"},{"title":"Graph Operators","href":"/guides/dbt-fundamentals/running-dbt/mastering-the-dbt-cli/graph-operators"}]}]}]}]},{"tab":"Products","pages":[{"title":"Products","href":"/products/dino-ai"}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/integrations"}]},{"tab":"Developers","pages":[{"title":"Developers","href":"/developers"}]},{"tab":"GraphQL Schema (generated - do not remove; powers API Reference pages)","hidden":true,"pages":[{"title":"GraphQL Schema (generated - do not remove; powers API Reference pages)","href":"/graphql-reference/queries/apiKeyIdentity"}]},{"tab":"Help \u0026 Resources","pages":[{"title":"Help \u0026 Resources","href":"/get-help/support"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/overview"}]}]},"basePath":"","title":"Migrate from dbt Cloud™ step by step - Paradime","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-u3J1-UOn.js","DynamicMarkdown-B-f2cqXQ.js","zoom-image-lightbox-DTFzvaXJ.js","lightbox-handle-r17bVUz3.js"]}