{"id":12283,"date":"2026-06-02T12:15:36","date_gmt":"2026-06-02T19:15:36","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/cosmosdb\/?p=12283"},"modified":"2026-06-02T02:59:49","modified_gmt":"2026-06-02T09:59:49","slug":"azure-cosmos-db-migration-assistant-rdbms-to-nosql-public-preview","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cosmosdb\/azure-cosmos-db-migration-assistant-rdbms-to-nosql-public-preview\/","title":{"rendered":"Public Preview: AI-powered Azure Cosmos DB Migration Assistant for RDBMS to NoSQL"},"content":{"rendered":"<p>Today, we are excited to announce the public preview of <strong>the Azure Cosmos DB Migration Assistant for RDBMS to NoSQL<\/strong>, now available in the Azure Cosmos DB extension for Visual Studio Code.<\/p>\n<p><strong>\ud83d\udcc8 Modernize with confidence<\/strong><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2026\/06\/Body_infographic-1.jpg\"><img decoding=\"async\" class=\"alignnone size-large wp-image-12293\" src=\"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2026\/06\/Body_infographic-1-1024x682.jpg\" alt=\"An infographic picture showing components and end-to-end migration flow phases, explaining benefits migrating from RDBMS to Cosmos NoSQL and listing key requirements how to get started and how to share feedback.\" width=\"1024\" height=\"682\" srcset=\"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2026\/06\/Body_infographic-1-1024x682.jpg 1024w, https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2026\/06\/Body_infographic-1-300x200.jpg 300w, https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2026\/06\/Body_infographic-1-768x512.jpg 768w, https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2026\/06\/Body_infographic-1.jpg 1430w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p><strong>Why migrate from RDBMS to Azure Cosmos DB?<\/strong><\/p>\n<p>Modernizing relational workloads has traditionally been complex, time-consuming, and risky. This new AI-assisted, phase-based workflow replaces manual analysis with structured recommendations and helps you navigate key design choices such as denormalization, partitioning, and NoSQL data modeling. It helps you move from relational databases (SQL Server, PostgreSQL, Oracle, MySQL, Db2) to Azure Cosmos DB for NoSQL faster, more safely, and with greater confidence, while following best practices that help avoid early mistakes and poor design decisions.<\/p>\n<p>But manually modernizing a relational application for NoSQL is difficult and time-consuming. Developers must make high-impact choices\u2014such as denormalization, partition key selection, and indexing\u2014that require deep knowledge of both relational databases and NoSQL technologies. In practice, teams often stitch together many inputs and manually translate schemas and access patterns into a Cosmos DB design. Refactoring application code to match the new NoSQL model adds further complexity and increases the risk of defects.<\/p>\n<p>This is where the <strong>Migration Assistant<\/strong> helps\u2014replacing lengthy manual efforts with <strong>AI-driven recommendations and guided decisions powered by <\/strong><a href=\"https:\/\/github.com\/AzureCosmosDB\/cosmosdb-agent-kit\"><strong>Azure Cosmos DB Agent Kit<\/strong><\/a>.<\/p>\n<p><strong>\u2728 What is Azure Cosmos DB Migration Assistant?<\/strong><\/p>\n<p>The <strong>Azure Cosmos DB Migration Assistant<\/strong> is an end-to-end, AI-guided experience inside the <strong>Azure Cosmos DB extension for Visual Studio Code<\/strong> that helps automate and accelerate the core phases of a migration project:<\/p>\n<ul>\n<li>Analyzes your schema, code, and access patterns<\/li>\n<li>Designs optimal Cosmos DB NoSQL data models<\/li>\n<li>Recommends partitioning and indexing strategies<\/li>\n<\/ul>\n<ul>\n<li>Provisions target resources and loads converted sample data<\/li>\n<li>Generates and executes an AI-driven application code migration plan<\/li>\n<\/ul>\n<p>As part of this process, all artifacts generated by the assistant are persisted locally in the <strong>.cosmosdb-migration\/<\/strong> project folder, making the process <strong>traceable, repeatable, and versionable<\/strong>. This allows you to iterate on and refine design decisions and code artifacts for each migration phase, while applying the same version controls you use for your application and database code.<\/p>\n<p><strong>\ud83e\udded End-to-end Migration Workflow<\/strong><\/p>\n<p>The assistant guides you through five connected phases, each designed to reduce risk and make the move from relational to NoSQL more predictable.<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2026\/06\/CosmosDBMigrationAssistant-flow-diagram.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-12287\" src=\"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2026\/06\/CosmosDBMigrationAssistant-flow-diagram.png\" alt=\"Screenshot showing CosmosDB Migration Assistant mermaid flow diagram with all discovery, assessment, domain decomposition, schema conversion, environment provisioning and application code migration .\" width=\"936\" height=\"962\" srcset=\"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2026\/06\/CosmosDBMigrationAssistant-flow-diagram.png 936w, https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2026\/06\/CosmosDBMigrationAssistant-flow-diagram-292x300.png 292w, https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2026\/06\/CosmosDBMigrationAssistant-flow-diagram-768x789.png 768w, https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2026\/06\/CosmosDBMigrationAssistant-flow-diagram-24x24.png 24w, https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2026\/06\/CosmosDBMigrationAssistant-flow-diagram-48x48.png 48w\" sizes=\"(max-width: 936px) 100vw, 936px\" \/><\/a><\/p>\n<p><strong>\ud83d\udd0d Step-by-step: How it works<\/strong><\/p>\n<ol>\n<li><strong> Discovery<\/strong><\/li>\n<\/ol>\n<p>Migration starts with discovery, where the assistant builds a clear picture of the source application before any design decisions are made. It takes schema DDL, optional volumetrics, optional access patterns, and application repository signals such as language, framework, ORM, and deployment context as inputs. The main challenge at this stage is incomplete or uneven source information, so the assistant combines these inputs into a Discovery Report that captures the current application shape and establishes a reliable migration baseline. Its output is a Discovery Report grounded in both schema and application context.<\/p>\n<p>This baseline helps later phases avoid generic recommendations and prevents design choices from being made too early without enough workload context.<\/p>\n<ol start=\"2\">\n<li><strong> Assessment<\/strong><\/li>\n<\/ol>\n<p>Assessment turns discovery artifacts into a domain-oriented view of the system. It uses the discovery report, normalized access patterns, and relational table relationships as inputs. The key challenge is avoiding a table-by-table carryover from the relational model, so the assistant groups related entities into candidate business domains, clarifies the boundaries that matter for NoSQL modeling, and produces a detailed report of the domain-level decomposition that breaks the migration into manageable units.<\/p>\n<p>This phase helps shift the focus from RDBMS tables to aggregates and application data access scenarios.<\/p>\n<ol start=\"3\">\n<li><strong> Schema Conversion<\/strong><\/li>\n<\/ol>\n<p>Schema conversion translates each assessed domain into a Cosmos DB NoSQL container design. It takes domain definitions, access patterns, and source schema details as inputs. The main challenge here is balancing document shape, partition key selection, and indexing so the model supports real reads and writes without unnecessary cost.<\/p>\n<p>This phase is the most critical because it helps avoid common RDBMS-to-NoSQL schema design anti-patterns, supports the selection and validation of the best partition key candidates and indexing strategies early in the design process, and applies NoSQL design optimizations for scale, performance, and cost from the start.<\/p>\n<p><strong>Main output here:<\/strong> an optimized target NoSQL model that is ready for provisioning and application migration planning.<\/p>\n<ol start=\"4\">\n<li><strong> Provisioning<\/strong><\/li>\n<\/ol>\n<p>Provisioning turns the target design into a runnable environment. Based on the generated target model and your chosen environment, the assistant creates your Azure Cosmos DB environment, database, and containers with the appropriate permissions, and can also prepare and load sample data for testing and access pattern validation.<\/p>\n<p>You can choose a ready-to-test target environment that matches the stage of your migration effort:<\/p>\n<ul>\n<li>Local emulator (early dev\/test)<\/li>\n<li>Existing account<\/li>\n<li>New Azure environment<\/li>\n<\/ul>\n<p><strong>The output of this phase is<\/strong> provisioned Azure Cosmos DB resources, optional sample data, and access setup for validation.<\/p>\n<ol start=\"5\">\n<li><strong> Application Code Migration (Plan and Execute)<\/strong><\/li>\n<\/ol>\n<p>Once the design and environment are ready, the assistant prepares and executes application code migration with GitHub Copilot. This phase has two steps:<\/p>\n<ul>\n<li><strong>Plan Migration<\/strong> \u2192 prepare and review<\/li>\n<li><strong>Start Migration<\/strong> \u2192 apply changes<\/li>\n<\/ul>\n<p><strong>\u00a0<\/strong><\/p>\n<p>In the <strong>Plan Migration<\/strong> step, the assistant uses all artifacts from discovery, assessment, schema conversion, and provisioned resources to build a context-rich migration plan that is ready to review and customize.<\/p>\n<p>After the migration plan is validated, the <strong>Start Migration<\/strong> step can apply those changes in the workspace and convert the application repository code to use Azure Cosmos DB.<\/p>\n<p><strong>\ud83c\udfaf Key benefits<\/strong><\/p>\n<p>Migration Assistant reduces the hardest parts of modernization by replacing manual analysis with AI-assisted guidance across <strong>data modeling<\/strong>, <strong>partitioning<\/strong>, and <strong>indexing<\/strong>. Instead of forcing teams to piece together design decisions from scratch, it provides a structured workflow that helps move relational applications to Azure Cosmos DB for NoSQL faster and with fewer early design mistakes.<\/p>\n<p>It also provides an <strong>end-to-end experience<\/strong> that carries the migration from schema discovery through <strong>application code conversion automation<\/strong>, all inside a <strong>developer-first workflow<\/strong> built into Visual Studio Code and GitHub Copilot. Instead of stopping at schema recommendations, the assistant can generate a context-rich migration plan and help automate the refactoring of data access code, reducing the manual effort and risk involved in converting the application to Azure Cosmos DB for NoSQL. Because the assistant persists artifacts in the <strong>.cosmosdb-migration\/<\/strong> folder, teams can pause and resume work, review outputs between phases, and keep the entire migration process traceable, repeatable, and friendly to source control.<\/p>\n<p><strong>\ud83c\udfa5 See it in action<\/strong><\/p>\n<p>\ud83d\udccc Below is a short demo showing the migration of the popular <a href=\"https:\/\/github.com\/spring-projects\/spring-petclinic\"><em>PetClinic Java Spring-based application<\/em><\/a> from PostgreSQL to Azure Cosmos DB for NoSQL.<\/p>\n<p><strong><iframe src=\"\/\/www.youtube.com\/embed\/2G0lOQEuj4A\" width=\"560\" height=\"314\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/strong><\/p>\n<p><strong>\ud83d\udce6 What\u2019s currently supported<\/strong><\/p>\n<ul>\n<li>\u2705 Source databases: SQL Server, PostgreSQL, Oracle, MySQL, Db2<\/li>\n<li>\u2705 Target: Azure Cosmos DB for NoSQL<\/li>\n<\/ul>\n<ul>\n<li>\u2705 Scope includes:<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Schema conversion<\/li>\n<li>Data modeling<\/li>\n<li>Sample data generation<\/li>\n<li>Application migration planning<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>\ud83d\ude80 Getting started<\/strong><\/p>\n<p>To try it today:<\/p>\n<ol>\n<li>Install <a href=\"https:\/\/devblogs.microsoft.com\/cosmosdb\/azure-cosmos-db-extension-for-vs-code-now-generally-available\/\">Azure Cosmos DB VS Code Extension<\/a><\/li>\n<li>Ensure GitHub Copilot is enabled<\/li>\n<li>Open your application workspace<\/li>\n<\/ol>\n<ol start=\"4\">\n<li>Run <strong>Azure Cosmos DB: New Migration\u2026<\/strong><\/li>\n<\/ol>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2026\/06\/CosmosDBMigrationAssistant-startProject.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-12288\" src=\"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2026\/06\/CosmosDBMigrationAssistant-startProject.png\" alt=\"Screenshot showing VS Code Extension Azure Cosmos DB Workspace option to initialize Migration Assistant Project.\" width=\"925\" height=\"486\" srcset=\"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2026\/06\/CosmosDBMigrationAssistant-startProject.png 925w, https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2026\/06\/CosmosDBMigrationAssistant-startProject-300x158.png 300w, https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-content\/uploads\/sites\/52\/2026\/06\/CosmosDBMigrationAssistant-startProject-768x404.png 768w\" sizes=\"(max-width: 925px) 100vw, 925px\" \/><\/a><\/p>\n<p>To learn more, visit the <a href=\"https:\/\/aka.ms\/cosmosdb-migration-assistant-pub-preview\">Azure Cosmos DB Migration Assistant public preview page<\/a>.<\/p>\n<p><strong>\ud83d\udcac Share your feedback<\/strong><\/p>\n<p>We\u2019d love your input as we evolve this experience:<\/p>\n<p>\ud83d\udc49 <a href=\"https:\/\/aka.ms\/cosmosdb-migration-assistant-report-issue\">Report issues or provide feedback<\/a><\/p>\n<p><strong>\ud83d\udcda Learn more<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/learn.microsoft.com\/azure\/cosmos-db\/overview\">Azure Cosmos DB NoSQL<\/a><\/li>\n<li><a href=\"https:\/\/learn.microsoft.com\/dotnet\/architecture\/cloud-native\/relational-vs-nosql-data\">Relational vs. NoSQL data modeling<\/a><\/li>\n<li><a href=\"https:\/\/learn.microsoft.com\/azure\/cosmos-db\/modeling-data\">Azure Cosmos DB data modeling patterns<\/a><\/li>\n<li><a href=\"https:\/\/learn.microsoft.com\/azure\/cosmos-db\/migrate-relational-data\">Migration guidance for relational data<\/a><\/li>\n<\/ul>\n<p><strong>About Azure Cosmos DB<\/strong><\/p>\n<p>Azure Cosmos DB is a fully managed, serverless NoSQL and vector database for modern app development, including AI applications. With its SLA-backed speed and availability, as well as instant, dynamic scalability, it is ideal for real-time NoSQL and MongoDB applications that require high performance and distributed computing over massive volumes of NoSQL and vector data.<\/p>\n<p>To stay in the loop on Azure Cosmos DB updates, follow us on <a href=\"https:\/\/twitter.com\/AzureCosmosDB\">X<\/a>, <a href=\"https:\/\/aka.ms\/AzureCosmosDBYouTube\">YouTube<\/a>, and <a href=\"https:\/\/www.linkedin.com\/company\/azure-cosmos-db\/\">LinkedIn<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today, we are excited to announce the public preview of the Azure Cosmos DB Migration Assistant for RDBMS to NoSQL, now available in the Azure Cosmos DB extension for Visual Studio Code. \ud83d\udcc8 Modernize with confidence Why migrate from RDBMS to Azure Cosmos DB? Modernizing relational workloads has traditionally been complex, time-consuming, and risky. This [&hellip;]<\/p>\n","protected":false},"author":19704,"featured_media":12309,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[12,1980,14,2017],"tags":[1236,1864,498],"class_list":["post-12283","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-announcements","category-azure-cosmos-db","category-core-sql-api","category-azure-cosmos-db-tools","tag-ai","tag-azurecosmosdb","tag-visual-studio-code"],"acf":[],"blog_post_summary":"<p>Today, we are excited to announce the public preview of the Azure Cosmos DB Migration Assistant for RDBMS to NoSQL, now available in the Azure Cosmos DB extension for Visual Studio Code. \ud83d\udcc8 Modernize with confidence Why migrate from RDBMS to Azure Cosmos DB? Modernizing relational workloads has traditionally been complex, time-consuming, and risky. This [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-json\/wp\/v2\/posts\/12283","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-json\/wp\/v2\/users\/19704"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-json\/wp\/v2\/comments?post=12283"}],"version-history":[{"count":2,"href":"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-json\/wp\/v2\/posts\/12283\/revisions"}],"predecessor-version":[{"id":12311,"href":"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-json\/wp\/v2\/posts\/12283\/revisions\/12311"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-json\/wp\/v2\/media\/12309"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-json\/wp\/v2\/media?parent=12283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-json\/wp\/v2\/categories?post=12283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cosmosdb\/wp-json\/wp\/v2\/tags?post=12283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}