<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Azure Pipeline Notes</title>
    <description>The latest articles on DEV Community by Azure Pipeline Notes (@azurepipelinenotes).</description>
    <link>https://dev.to/azurepipelinenotes</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4107042%2F697d0a00-5e13-49b5-bee4-8b271ce62dde.png</url>
      <title>DEV Community: Azure Pipeline Notes</title>
      <link>https://dev.to/azurepipelinenotes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/azurepipelinenotes"/>
    <language>en</language>
    <item>
      <title>Migrate Azure Data Factory to Fabric in 2026 (what the built-in tool actually does)</title>
      <dc:creator>Azure Pipeline Notes</dc:creator>
      <pubDate>Thu, 03 Sep 2026 01:42:57 +0000</pubDate>
      <link>https://dev.to/azurepipelinenotes/migrate-azure-data-factory-to-fabric-in-2026-what-the-built-in-tool-actually-does-1i36</link>
      <guid>https://dev.to/azurepipelinenotes/migrate-azure-data-factory-to-fabric-in-2026-what-the-built-in-tool-actually-does-1i36</guid>
      <description>&lt;h1&gt;
  
  
  Migrate Azure Data Factory to Fabric in 2026 (what the built-in tool actually does)
&lt;/h1&gt;

&lt;p&gt;Microsoft now lets you move Azure Data Factory pipelines into Fabric Data Factory from inside ADF itself. The button is labeled &lt;strong&gt;Migrate to Fabric (Preview)&lt;/strong&gt;. It is not a one-click cutover, and Azure Data Factory is not being shut off.&lt;/p&gt;

&lt;p&gt;This is written for data engineers and platform teams at Microsoft-heavy shops in the US, UK, and the rest of Europe. If you run ADF in East US, West Europe, or North Europe, and someone just asked â€œshould we move to Fabric this quarter,â€ this is the practical version of that conversation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Last checked:&lt;/strong&gt; September 2026, against Microsoftâ€™s current upgrade docs. The feature is still Preview. Screens and supported activities will keep moving.&lt;/p&gt;




&lt;h2&gt;
  
  
  ADF is not dying. The investment is.
&lt;/h2&gt;

&lt;p&gt;There is no deprecation date for Azure Data Factory. You can keep running ADF and Fabric side by side. Execution of a mounted factory still happens on your Azure resources, on the same subscription that already holds your IR and linked services.&lt;/p&gt;

&lt;p&gt;The direction of travel is still obvious. New pipeline features, Copilot, OneLake, lakehouse, and warehouse integration land in Fabric first. New pipelines you put in ADF are pipelines you will eventually move. That is the actual reason to care, not a countdown clock.&lt;/p&gt;

&lt;p&gt;If you are starting a greenfield pipeline today and you already have Fabric capacity (F-SKU) in East US or North Europe, build it in Fabric. If you have years of ADF, do not rebuild the estate this quarter.&lt;/p&gt;




&lt;h2&gt;
  
  
  What you need before you click anything
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;An existing ADF instance with pipelines&lt;/li&gt;
&lt;li&gt;A Microsoft Fabric tenant&lt;/li&gt;
&lt;li&gt;A Fabric workspace in the &lt;strong&gt;same Microsoft Entra ID tenant&lt;/strong&gt; as the factory&lt;/li&gt;
&lt;li&gt;Contributor (or higher) on that workspace if you start from the Fabric side&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Skip this and the mount step fails in a boring way. Cross-tenant factories will not mount. Same tenant, different region is fine. Capacity still has to exist in a Fabric region you actually use.&lt;/p&gt;




&lt;h2&gt;
  
  
  Two doors, one landing zone
&lt;/h2&gt;

&lt;p&gt;You can start in ADF or in Fabric. They meet at the same migrate step.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start in ADF&lt;/strong&gt; if you have not assessed the factory yet. This is the default I would use. You get a read-only readiness scan before anything is copied.&lt;/p&gt;

&lt;p&gt;In the ADF authoring canvas: &lt;strong&gt;Migrate to Fabric (Preview) â†’ Get started (preview)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start in Fabric&lt;/strong&gt; if you already know which factory you want to bring over and you are fine skipping the in-ADF assessment. Workspace toolbar â†’ &lt;strong&gt;Migrate&lt;/strong&gt; â†’ &lt;strong&gt;Data Factory&lt;/strong&gt;, then pick the instance.&lt;/p&gt;

&lt;p&gt;Starting in Fabric skips the assessment. If you care about readiness (you should), start in ADF.&lt;/p&gt;

&lt;h3&gt;
  
  
  The four assessment statuses
&lt;/h3&gt;

&lt;p&gt;Every factory and every pipeline gets one of these:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ready&lt;/td&gt;
&lt;td&gt;Safe to migrate as-is&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Needs review&lt;/td&gt;
&lt;td&gt;Small changes first. Global parameters are the usual example.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coming soon&lt;/td&gt;
&lt;td&gt;Fabric support is planned. Leave it in ADF for now.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Not compatible&lt;/td&gt;
&lt;td&gt;No equivalent. Redesign, or keep it in ADF.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Drill into a pipeline and you see the activity that caused the status. Export the result to CSV and drop it in the team channel. The assessment does not change your factory. You can rerun it after you clean things up.&lt;/p&gt;

&lt;p&gt;Unsupported activities do &lt;strong&gt;not&lt;/strong&gt; block the whole factory. Only the pipelines that contain them are stuck. Everything else can move in a separate batch.&lt;/p&gt;




&lt;h2&gt;
  
  
  Mounting is not migrating
&lt;/h2&gt;

&lt;p&gt;After the assessment, you pick a Fabric workspace and &lt;strong&gt;mount&lt;/strong&gt; the factory.&lt;/p&gt;

&lt;p&gt;Mounting is a snapshot. It lets you see the ADF structure inside Fabric. It does not copy pipelines, it does not alter ADF, and it does not start running anything in Fabric.&lt;/p&gt;

&lt;p&gt;Nothing moves until you explicitly choose &lt;strong&gt;Migrate to Fabric (Preview)&lt;/strong&gt; on the mounted factory and pick pipelines.&lt;/p&gt;

&lt;p&gt;This is the step people skip in their heads. Then they panic in Slack because â€œwe migratedâ€ when they only mounted.&lt;/p&gt;




&lt;h2&gt;
  
  
  What happens when you actually migrate
&lt;/h2&gt;

&lt;p&gt;You select pipelines. You do not have to take the whole factory. Do not start with the 2:00 a.m. Eastern finance load.&lt;/p&gt;

&lt;p&gt;Then you map ADF &lt;strong&gt;linked services&lt;/strong&gt; to Fabric &lt;strong&gt;connections&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For a short list of common Azure connectors, the tool tries to create the Fabric connection for you, including account key, SAS, service principal, and system-assigned managed identity (mapped to workspace identity). That list currently includes Blob Storage, ADLS Gen2, SQL Server, Azure SQL Database, Azure SQL Managed Instance, Cosmos DB (NoSQL and MongoDB), Azure Data Explorer, PostgreSQL, and MySQL.&lt;/p&gt;

&lt;p&gt;Everything else: pick an existing Fabric connection or create one, then confirm.&lt;/p&gt;

&lt;p&gt;If you map nothing, the pipelines still migrate. Activities that need those connections land &lt;strong&gt;deactivated&lt;/strong&gt;. You wire them up later. That is useful for a dry run. It is a Sev-2 if you re-enable triggers without noticing.&lt;/p&gt;

&lt;p&gt;Migrated pipelines go into a folder named &lt;code&gt;{factory}_Migration&lt;/code&gt;. Pipeline names are prefixed with the source factory name so they do not collide. If a pipeline with the same name already exists in the workspace, that one is &lt;strong&gt;skipped&lt;/strong&gt;. Rerunning a migration means you delete the previous copies in Fabric first.&lt;/p&gt;

&lt;h3&gt;
  
  
  Triggers after migration
&lt;/h3&gt;

&lt;p&gt;Schedule triggers come across &lt;strong&gt;disabled&lt;/strong&gt;. That is on purpose.&lt;/p&gt;

&lt;p&gt;You re-enable them after you have tested. Other trigger types do not get a free ride:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Custom event triggers: do not migrate&lt;/li&gt;
&lt;li&gt;Storage event triggers: coming soon&lt;/li&gt;
&lt;li&gt;Tumbling window triggers: Fabricâ€™s interval-based scheduling is not the same thing. Watermarks, backfill, and trigger-to-trigger dependency need a redesign&lt;/li&gt;
&lt;li&gt;Chaining / dependency triggers: not supported yet&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also check expressions. &lt;code&gt;pipeline().TriggerName&lt;/code&gt; exists in ADF and does not currently exist in Fabric. If you branch on the trigger name, pass it in as a pipeline parameter instead.&lt;/p&gt;




&lt;h2&gt;
  
  
  What still will not go through the button
&lt;/h2&gt;

&lt;p&gt;This is the list that decides whether this is a Friday afternoon or a quarter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Integration runtimes&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Self-hosted IR (SHIR) does not migrate. Replace it with a Fabric on-premises data gateway (OPDG). Same job, different install, different ops. If SHIR is how you reach SQL Server in a US office or a UK datacenter, budget a gateway project, not a wizard click.&lt;/li&gt;
&lt;li&gt;Managed virtual network IR does not migrate. Fabricâ€™s virtual network gateway is a different model. Reconfigure, do not expect a mapping.&lt;/li&gt;
&lt;li&gt;SSIS IR is out. Keep those packages on ADF and call them from Fabric if you must.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Workloads that stay behind&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Change data capture (CDC)&lt;/li&gt;
&lt;li&gt;Apache Airflow DAGs (Fabric has its own Airflow offering, it is a copy-paste of DAGs, not this wizard)&lt;/li&gt;
&lt;li&gt;U-SQL / Data Lake Analytics (deprecated anyway)&lt;/li&gt;
&lt;li&gt;Cross-cloud / Azure ML refresh workloads until workspace identity support lands&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Connectors&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Long-tail enterprise connectors (SAP ECC, SAP BW, MDX, SAP CDS): no Fabric equivalent, redesign&lt;/li&gt;
&lt;li&gt;Marketing and finance SaaS (HubSpot, Google Ads, QuickBooks, Shopify, Xero): not supported today&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The metadata-driven factory&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If your ADF is a framework (parameterized linked services, dynamic datasets, a control table that says â€œrun this source todayâ€), the wizard will disappoint you. A lot of US enterprise factories are this shape.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Global parameters: recreate as Fabric &lt;strong&gt;variable libraries&lt;/strong&gt;. Auto-migration is still coming.&lt;/li&gt;
&lt;li&gt;Dynamic / parameterized linked services: not supported. Each permutation becomes its own connection.&lt;/li&gt;
&lt;li&gt;Metadata-driven pipelines that switch connections at runtime: do not migrate cleanly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Activities&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mapping data flows: this one changed. They &lt;strong&gt;are&lt;/strong&gt; supported in Preview. The wizard converts them to Mapping Data Flow transforms inside Dataflow Gen2, and the pipeline comes along. Treat it as Preview, then test row counts. Do not assume every transform survived.&lt;/li&gt;
&lt;li&gt;Synapse Spark job definitions / notebooks: partial. Plan on Fabric notebooks or Spark jobs.&lt;/li&gt;
&lt;li&gt;Copy activity upsert into Lakehouse tables: not supported. Copy to staging, MERGE from a notebook.&lt;/li&gt;
&lt;li&gt;Web / webhook / HTTP with custom auth or headers: rebuild&lt;/li&gt;
&lt;li&gt;Certificate auth on Web activity: rebuild&lt;/li&gt;
&lt;li&gt;User-assigned managed identity: use workspace identity&lt;/li&gt;
&lt;li&gt;Customer-managed keys, dual tokens, federated identity: do not migrate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Copy, ForEach, If, Lookup, Switch, Until, Set variable, and Execute pipeline (which becomes &lt;strong&gt;Invoke pipeline&lt;/strong&gt;) are the boring ones that usually go through.&lt;/p&gt;




&lt;h2&gt;
  
  
  Fabric is not ADF with a new coat of paint
&lt;/h2&gt;

&lt;p&gt;A few differences will bite you even on â€œReadyâ€ pipelines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No publish step.&lt;/strong&gt; You save and run. That is nicer. It also means there is no â€œdebug vs publishedâ€ safety blanket. Use a non-production workspace.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No dataset objects.&lt;/strong&gt; File path, format, and compression live on the activity. Your mental model of reusable datasets goes away. That is fewer objects. It is also more copy-paste unless you parameterize well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Identity.&lt;/strong&gt; ADF managed identity becomes Fabric workspace identity. Plan the RBAC on the storage accounts and Azure SQL servers before you migrate, not after the first Copy fails at 2 a.m. Eastern.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Schedules.&lt;/strong&gt; ADF lets one trigger fan out to many pipelines, with a central trigger hub. Fabric currently wants schedules on the pipeline. No reuse hub. If you have 80 pipelines on one nightly trigger, budget time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Vault.&lt;/strong&gt; ADFâ€™s Key Vault story is mature. Fabricâ€™s is narrower (Key Vault reference, limited auth types). Check yours before you call the pipeline â€œReady.â€&lt;/p&gt;




&lt;h2&gt;
  
  
  How I would actually run this on a real factory
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Run the ADF assessment this week. Export the CSV. Do not migrate yet.&lt;/li&gt;
&lt;li&gt;Sort pipelines into three buckets: Ready and low-risk, Ready but production-critical, everything else.&lt;/li&gt;
&lt;li&gt;Stand up a &lt;strong&gt;dev&lt;/strong&gt; Fabric workspace in the same tenant, on the same capacity region you use for Power BI. Mount there.&lt;/li&gt;
&lt;li&gt;Migrate five boring Copy pipelines. Map connections. Leave triggers off.&lt;/li&gt;
&lt;li&gt;Recreate global parameters as variable libraries. Fix &lt;code&gt;TriggerName&lt;/code&gt;. Confirm row counts against ADF.&lt;/li&gt;
&lt;li&gt;Only then take a second wave. Leave SHIR, SSIS, tumbling windows, and metadata frameworks in ADF. Parallel run is expected, not a failure.&lt;/li&gt;
&lt;li&gt;Do not migrate production until a non-prod run has completed end to end on a schedule you re-enabled on purpose.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the CSV comes back mostly Not compatible, stop. You did not fail. You just found out the factory is a framework, an SSIS host, or an on-prem gateway farm. Those do not belong in this wizard yet.&lt;/p&gt;

&lt;p&gt;If the CSV comes back mostly Ready, and you already use Fabric for Power BI or a lakehouse, start the first wave. The backlog only grows.&lt;/p&gt;




&lt;h2&gt;
  
  
  When to wait
&lt;/h2&gt;

&lt;p&gt;Wait if the factory depends on SSIS IR, managed VNet, SHIR you are not ready to replace, heavy tumbling-window backfill, or a metadata-driven linked-service design.&lt;/p&gt;

&lt;p&gt;Migrate a first wave now if the pipelines are Copy plus control flow, the connectors are the Azure ones in the auto-map list, and you want new work to land in Fabric instead of ADF.&lt;/p&gt;

&lt;p&gt;Microsoftâ€™s own walkthrough is here: &lt;a href="https://learn.microsoft.com/en-us/azure/data-factory/how-to-upgrade-your-azure-data-factory-pipelines-to-fabric-data-factory" rel="noopener noreferrer"&gt;Upgrade your Azure Data Factory pipelines to Fabric Data Factory&lt;/a&gt;. Use it for the clicks. Use the assessment CSV for the decision.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I write practical notes on Azure data pipelines for teams already running Microsoft stacks. Next up: the ADF activities that still break in Fabric, and what to build instead.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>dataengineering</category>
      <category>microsoftfabric</category>
      <category>cloud</category>
    </item>
  </channel>
</rss>
