> Blog >
How to Migrate SSIS Packages to Azure Data Factory: What to Lift, What to Rebuild, What to Retire
Migrate SSIS packages to Azure Data Factory with a per-package call on lift, rewrite or retire, real runtime costs, and what breaks on the way across.

How to Migrate SSIS Packages to Azure Data Factory: What to Lift, What to Rebuild, What to Retire

4 mins
August 14, 2026
Author
Arunachalam
TL;DR
  • Route each package on its own: lift as-is, lift with a custom setup, rewrite as native activities, or retire. The retire bucket is usually the fastest return in the project and the one teams skip.
  • No tool converts SSIS logic into native, editable Data Factory pipelines. The SSMS wizard migrates Agent jobs and schedules, not transformations, so every rewrite is hand work.
  • The integration runtime bill swings fourteen-fold on two switches. The same two-node Enterprise cluster costs $5,961 a month always-on with a bundled license, or $417 with Azure Hybrid Benefit and a six-hour nightly window.
  • Fabric does not run SSIS packages. Microsoft's own guidance tells Fabric customers to execute them from Azure Data Factory pipelines, so the packages go to ADF and Fabric is only a target for what you rebuild.
  • Your SSIS estate works. That is the problem. Hundreds of packages have run nightly for a decade, and the people who wrote them have moved on. Now a datacenter contract or a SQL Server end of support date says the packages have to move.

    So you go looking for the button that will migrate SSIS packages to Azure Data Factory. What you find is documentation that explains the mechanics well and never says which packages deserve the trip.

    That decision is where the money is. Lift the wrong package and you pay a cloud run rate to host the same fragility. Rewrite the wrong one and you spend six weeks on a job nobody reads.

    This article gives you three things the ranking pages do not. A triage matrix that routes each package to lift, rewrite or retire. A real monthly run rate for the integration runtime, with the arithmetic shown. And a list of what actually breaks on the way across.

    Table of Contents

      What it means to migrate SSIS packages to Azure Data Factory

      To migrate SSIS packages to Azure Data Factory means running your existing SQL Server Integration Services workload in Azure. Two routes exist. Lift and shift runs packages unchanged on the Azure-SSIS Integration Runtime. A rewrite rebuilds each package's logic as native Data Factory activities. Most estates need both.

      Microsoft's SSIS in Azure overview frames the change in one line. The significant difference from on-premises SSIS is the separation of storage from runtime. Your packages live in a catalog database in Azure. The engine that runs them is a cluster you size and pay for by the hour.

      That split is why the two routes cost such different amounts. Lift and shift keeps the engine, so you keep a bill that runs whether or not anything executes. A rewrite drops the engine and pays per pipeline run instead.

      Most guides on this topic cover the first route and treat the second as a footnote. The reader ends up with a click path and no position on the only question they own.

      The decision Microsoft's documentation will not make for you

      Route each package on its own. Estate-wide calls are what produce a migration nobody is happy with, because one estate usually holds packages that belong in three different buckets.

      The attributes that decide a route are observable. You can read most of them out of the package XML and the job history without opening Visual Studio. Use the table as a triage sheet. Walk the inventory once, tag every package with a route, then sequence the work by route rather than by business area.

      Route What sends a package here Effort What you gain What you give up
      Lift and shift as-is Built-in components only, no script tasks, all sources reachable from Azure, protection level not tied to a user key Days per batch The datacenter exit, running logic you already trust Nothing improves. The run rate starts and the maintenance load stays where it was
      Lift and shift with a custom setup Needs a third-party component, a vendor driver, or an assembly registered in the GAC One setup script, then days per batch The same exit, plus a repeatable node image for the rest of the estate A blob container, a SAS URI, and an install that has to finish inside 45 minutes
      Rewrite as native activities Slow or fragile, heavy on script tasks, or runs often enough that a warm runtime dominates its cost Two to six weeks per package family No runtime to keep warm, and logic visible in the pipeline instead of buried in a package Hand work. No tool converts the transformation for you
      Rewrite onto Fabric or Databricks The transformation is really a data model or a feature build that outgrew SSIS years ago Weeks, plus a platform decision you cannot take alone A destination the wider data estate is already moving toward A second platform to run, staff and govern
      Retire One less package, one less credential, one less dependency Hours to confirm, minutes to disable One less package, one less credential, one less dependency The audit trail, unless you archive the package before you disable the job

      The retire row is the one people skip. It is often the fastest return in the project. In a decade-old estate, some share of packages write to tables no report reads anymore, and finding them costs one query against your BI tool's usage log.

      A warning about how this decision gets framed elsewhere. Several guides present infrastructure as a service against platform as a service, SSIS on an Azure VM against the managed runtime, as though that were the migration decision. It is a hosting choice. You can make it well and still have moved a fragile package you should have rewritten or switched off.

      Inventory before you provision anything

      Build the package inventory first. It feeds every other decision in the project. Provisioning a runtime before you have one means sizing a cluster against a workload you never measured.

      There is a wrinkle here that catches teams out. Microsoft's own SSIS migration overview still tells you to get Data Migration Assistant, or DMA, and assess your packages with it. The same section carries a callout saying the tool is deprecated.

      It is worse than deprecated. Microsoft's DMA retirement notice puts the date at July 16, 2025. It points instead at Azure Database Migration Service and the Azure SQL migration extension for Azure Data Studio. Neither does package-level triage.

      So the inventory is yours to build. Capture these per package, because each one maps to a column in the triage table.

      • Storage type and location: file system, MSDB, the package store, or an existing catalog.
      • Custom, open-source and third-party components, named by vendor and version.
      • Script tasks and script components, plus any assembly they depend on.
      • Protection level, flagging anything encrypted with a user key.
      • Package configurations against project parameters, because one of those does not survive.
      • Every source and sink, marked for whether Azure can reach it at all.
      • Run frequency, typical runtime, worst runtime, and rows moved.
      • Last modified date, and the named business owner.

      Then check whether each package still does anything. A package can report success while reading and writing nothing. That happens when a source view was renamed years ago and the error was swallowed.

      Job history will not show you this. Row counts and destination write timestamps will. In our cloud and data engineering work the dead-package share usually surfaces in week one, and it reshapes the plan.

      How the Azure-SSIS Integration Runtime lift and shift actually works

      Lift and shift SSIS to Azure in four moves. Provision the runtime, stand up the catalog, redeploy the projects, then repoint the schedules.

      The catalog goes on Azure SQL Database or Azure SQL Managed Instance. Both work. Microsoft is explicit that you have to provision the catalog and the runtime before you can deploy or run anything. Managed Instance is the right host when you also need SQL Agent, cross-database queries, or CLR that Azure SQL Database will not give you. Otherwise Azure SQL Database is cheaper to run and simpler to patch.

      Then redeploy. Here is the requirement that no third-party guide on this topic states, and it is the most common surprise in the exercise. Microsoft requires the project deployment model, not the package deployment model, for a catalog in Azure. If your packages are configured through package configurations rather than project parameters, that whole layer has to be rebuilt before anything runs. Deployment also upgrades each package to the current package format, so version pinning is not an option.

      Once the projects are in, an ADF pipeline calls each one with the Execute SSIS Package activity. A schedule trigger replaces the SQL Agent schedule. The SSMS job migration wizard handles the bulk conversion of Agent jobs, with one constraint worth knowing first: it supports a package location of file system only.

      What the Azure-SSIS Integration Runtime costs to run

      The runtime bills per node per hour whenever it is not stopped. Microsoft's Azure-SSIS pricing adds two details: usage bills in per-second increments, and the catalog database is paid for separately. Two switches decide most of the bill. Which license option you pick, and whether the cluster runs all month or only during its batch window.

      Rates below are East US pay-as-you-go in US dollars, checked in August 2026. They vary by region and they change, so the arithmetic is the reusable part.

      Configuration Rate per node-hour Hours per month Nodes Monthly run rate
      Standard D4 v3, SQL Server license included, always on $0.969 730 1 $707
      Standard D4 v3, Azure Hybrid Benefit, always on $0.579 730 1 $423
      Standard D4 v3, Azure Hybrid Benefit, 6 hour nightly window $0.579 180 1 $104
      Enterprise D8 v3, license included, always on $4.083 730 2 $5,961
      Enterprise D8 v3, Azure Hybrid Benefit, always on $1.158 730 2 $1,691
      Enterprise D8 v3, Azure Hybrid Benefit, 6 hour nightly window $1.158 180 2 $417

      Read the last three rows again. The same two-node Enterprise cluster costs $5,961 a month or $417 a month. That is a fourteen-fold spread, and the workload never changed.

      The license lever is the bigger surprise. Azure Hybrid Benefit lets you bring a SQL Server license you already own, and its hourly rate is the same for Standard and Enterprise. A D8 v3 node costs $4.083 an hour with an Enterprise license included and $1.158 with hybrid benefit applied. If this project retires on-premises licenses anyway, the edition premium disappears.

      The scheduling lever is easier and gets forgotten. A nightly batch estate does not need a runtime awake for 730 hours. Start the cluster before the window and stop it after. Put that in the pipeline, not in a runbook nobody maintains.

      What actually breaks when you lift and shift

      Four things break when migrating SSIS packages to Azure Data Factory. None of them appear in the body copy of the guides that rank for this topic.

      Components you did not write. A fresh node has no custom, open-source or third-party components on it. Adding them means a standard custom setup. That is a script named main.cmd at the top level of a blob container, with its files alongside it. The runtime reaches the container through a SAS URI carrying read, write and list permission.

      Two limits matter. Custom setup times out after 45 minutes, including download time. If you install assemblies into the GAC, you have to ship gacutil.exe yourself. Microsoft also names outright exclusions, among them administrative shares and the IBM iSeries Access ODBC driver.

      Anything that assumed a Windows machine you controlled. Sources still on-premises need a self-hosted integration runtime or VNet injection to be reachable at all. File shares under Windows authentication need explicit configuration. Protection levels encrypted with a user key stop decrypting the moment the executing identity changes, which it does.

      Schedules, quietly. The SSMS job migration wizard is useful, and it drops things without stopping. Built-in Agent jobs are out of scope. Execution options other than Use 32-bit runtime are ignored. Verification defined in a job step is ignored.

      Second-level schedule intervals go too, along with "start automatically when SQL Server Agent starts" and "start whenever the CPUs become idle". One behavior change deserves its own test. An ADF schedule trigger fires whether or not the previous run finished. SQL Agent's daily frequency did not.

      Region availability. The runtime is not offered in every Azure region. Confirm yours before the landing zone is signed off.

      When rewriting as native Azure Data Factory pipelines pays for itself

      Start with the correction, because half the pages on this topic imply otherwise. Nothing converts SSIS package logic into native, editable Data Factory pipelines. Microsoft's supported path runs your packages as they are. The job migration wizard converts schedules into pipelines and triggers, not transformations into activities. A rewrite is hand work, and any plan that assumes a tool will do it is already late.

      Mapping Data Flows is the usual native target, and a real one for set-based work. It is weaker where SSIS was strongest: row-by-row logic and custom scripting inside a data flow. Test one representative package before committing a family of them.

      The payoff shows up in operations rather than at cutover. On one insurance data platform modernization, a Virginia carrier came off on-premises Oracle with 14-hour ETL windows across a 45TB environment. The fragile PL/SQL procedures were replaced with modular ELT pipelines rather than moved.

      That Oracle to Snowflake migration moved 4,500 tables and 12B+ rows. It now runs nightly loads and backfills at a 99.9 percent success rate, with an 85 percent drop in DBA maintenance and manual tuning. The cutover was two weekends. The 85 percent is the part that repeats every month.

      So sequence it this way. Rewrite the packages that already hurt, lift the ones that work, and switch off the ones nobody reads.

      Azure Data Factory or straight to Microsoft Fabric?

      Send the packages to Azure Data Factory. Fabric is a candidate for what you rewrite, not for what you lift.

      The reason is specific. Data Factory in Microsoft Fabric does not run SSIS packages. Microsoft's own Fabric migration guidance tells Fabric customers to execute SSIS packages using Azure Data Factory pipelines and call them from Fabric. The Azure-SSIS IR is still the only managed way to run a package you did not rebuild.

      Microsoft does call Fabric Data Factory the next generation of Azure Data Factory, which is why the question keeps coming up. It has published no retirement date for Azure Data Factory. Treat Fabric as the destination question for your rewrites, and weigh it as you would any ETL cloud migration target. Do not hold a datacenter exit hostage to a platform debate.

      How long an SSIS to Azure Data Factory migration takes

      There is no honest single number, and package count is the weakest predictor in the set. An estate of 400 simple packages against three source systems moves faster than 80 packages against 20.

      Four drivers set the calendar.

      1. Distinct source systems. Connectivity, credentials and firewall work do not divide across packages the way conversion effort does.
      2. The share needing a custom setup, since one script has to satisfy every component in a batch.
      3. Whether usable test data exists, or whether someone has to build it before anything can be validated.
      4. The parallel-run window the business will fund. This is where most SSIS migration to Azure Data Factory schedules actually slip.

      Sequencing shortens the calendar more than staffing does. Inventory and triage come first. Then run one thin end-to-end slice, a single package through a provisioned runtime into a real destination, so the plumbing arguments happen once. Clear the retire list next. Group the remaining batches by source system.

      Where this fails

      Three conditions where the decision to migrate SSIS packages to Azure Data Factory is the wrong one.

      A small estate on a supported SQL Server with years of support left. Thirty packages that run in an hour do not justify a runtime and a migration project. The run rate plus the engineering time costs more than you get back. Better: stay put, and revisit at the license renewal or the hardware refresh, whichever lands first.

      Packages that are mostly script tasks and custom components. Lifting these keeps every bit of the fragility and adds a cloud bill and a setup script on top. Better: replace the integration rather than migrate it, and treat the package as a specification rather than an asset.

      Sources that are all still on-premises with no network path in place. You will pay for a cluster that waits on a hop through a self-hosted runtime. Every performance conversation will be about the network. Better: land the Azure network and the data platform first, following the usual on-premises to Azure migration sequence, then bring the packages.

      One thing we would advise a client against, plainly. Do not lift the whole estate to hit a datacenter exit date on the promise of rewriting later. Once the packages run in Azure the rewrite stops being urgent and the budget goes elsewhere. You have bought a monthly bill for the architecture you were trying to leave.

      Plan the route before you provision the runtime

      If the inventory is the part you keep deferring, that is the part worth buying. Entrans runs a two-week SSIS migration assessment. We inventory every package against the attributes that decide its route, hand back a triage list with a per-package call of lift, rewrite or retire, and size the runtime and its monthly run rate against your real batch window rather than a default. One recent insurance data platform modernization moved 4,500 tables and 12B+ rows, and now runs nightly loads at a 99.9 percent success rate. Talk to an Entrans architect and bring your package count.

      Share :
      Link copied to clipboard !!
      We Migrate SSIS to Azure Data Factory
      We assess every package, move what works, and rebuild what doesn't.
      20+ Years of Industry Experience
      500+ Successful Projects
      50+ Global Clients including Fortune 500s
      100% On-Time Delivery
      Thank you! Your submission has been received!
      Oops! Something went wrong while submitting the form.

      FAQs

      1. Is SSIS being phased out?

      No. Microsoft still documents and supports running SSIS packages in Azure on the Azure-SSIS Integration Runtime, and it updated that migration guidance in March 2026. What has moved is where new capability lands. Microsoft now calls Data Factory in Microsoft Fabric the next generation of Azure Data Factory and invites existing workloads to upgrade.

      2. Should I lift and shift SSIS packages or rewrite them as native pipelines?

      Lift and shift a package when it works, its components are supported in Azure, and the business value is the datacenter exit. Rewrite it when it is slow, fragile, or built on script tasks and custom components. The choice belongs to each package rather than the estate, which is why inventory comes before any provisioning.

      3. Is there a tool that converts SSIS packages into native editable Azure Data Factory pipelines?

      No. Nothing converts SSIS package logic into native, editable Data Factory pipelines. Microsoft's supported path runs packages as they are on the managed SSIS runtime inside Azure Data Factory. The SSMS job migration wizard converts SQL Server Agent jobs and schedules into pipelines and triggers, not transformations into activities. Rebuilding a package as native activities is manual work.

      4. How much does the Azure-SSIS Integration Runtime cost to run?

      It bills per node per hour while running, in per-second increments, and the database hosting the catalog is billed separately. In East US in August 2026, one Standard D4 v3 node costs $0.969 an hour with a SQL Server license included, or $0.579 with Azure Hybrid Benefit. Left running, that is roughly $423 a month.

      5. Can Azure SQL Managed Instance run SSIS packages without Azure Data Factory?

      No. Hosting the SSIS catalog on Azure SQL Managed Instance gives you a catalog, not an execution engine. Microsoft's guidance is that you must provision both the SSIS catalog and its integration runtime before you can deploy and run packages in Azure. That runtime lives inside Azure Data Factory, so it is required either way.

      6. Do custom and third-party SSIS components work on the Azure-SSIS Integration Runtime?

      Only after you install them. A newly provisioned runtime carries none of your custom, open-source or third-party components. You add them with a standard custom setup: a main.cmd script and its files in an Azure Storage blob container, reached through a SAS URI. Custom setup times out after 45 minutes.

      7. Should we migrate SSIS to Azure Data Factory or straight to Microsoft Fabric?

      Migrate the packages to Azure Data Factory. Data Factory in Microsoft Fabric does not run SSIS packages, and Microsoft's own upgrade guidance tells Fabric customers to execute them from Azure Data Factory pipelines and call those from Fabric. Microsoft has published no retirement date for Azure Data Factory, so no deadline forces the question.

      8. How long does it take to migrate SSIS packages to Azure Data Factory?

      There is no single figure, and package count is a weak predictor. Effort tracks the number of distinct source systems, the share of packages needing a custom setup, whether usable test data exists, and the parallel-run window the business will fund. Inventory first, then estimate against those four drivers.

      Hire SSIS and Azure Data Engineers
      Engineers who have moved SSIS estates to Azure before.
      Free project consultation + 100 Dev Hours
      Trusted by Enterprises & Startups
      Top 1% Industry Experts
      Flexible Contracts & Transparent Pricing
      50+ Successful Enterprise Deployments
      Arunachalam
      Author
      Arun S is co-founder and CIO of Entrans, with over 20 years of experience in IT innovation. He holds deep expertise in Agile/Scrum, product strategy, large-scale project delivery, and mobile applications. Arun has championed technical delivery for 100+ clients, delivered over 100 mobile apps, and mentored large, successful teams.

      Related Blogs

      Top 10 CIO-as-a-Service Companies in 2026

      Compare 10 CIO-as-a-Service companies for 2026, with rate bands, the six delivery models, real costs, and how to tell CIOaaS from an MSP.
      Read More

      Top 10 CTO-as-a-Service Companies in 2026

      Compare 10 CTO-as-a-Service companies for 2026, with rate bands, engagement models, real costs, and how to pick the right partner for your stage.
      Read More

      Top 10 Custom MCP Server Development Companies in 2026

      Compare 10 custom MCP server development companies for 2026, with selection criteria, real rate bands, and how to match a partner to your stack.
      Read More