FreedomDev
TeamAssessmentThe Systems Edge616-737-6350
FreedomDev Logo

Your Dedicated Dev Partner. Zero Hiring Risk. No Agency Contracts.

201 W Washington Ave, Ste. 210

Zeeland MI

616-737-6350

[email protected]

FacebookLinkedIn

Company

  • About Us
  • Culture
  • Our Team
  • Careers
  • Portfolio
  • Technologies
  • Contact

Core Services

  • All Services
  • Custom Software Development
  • Systems Integration
  • SQL Consulting
  • Database Services
  • Software Migrations
  • Performance Optimization

Specialized

  • QuickBooks Integration
  • ERP Development
  • Mobile App Development
  • Business Intelligence / Power BI
  • Business Consulting
  • AI Chatbots

Resources

  • Assessment
  • Blog
  • Resources
  • Testimonials
  • FAQ
  • The Systems Edge ↗

Solutions

  • Data Migration
  • Legacy Modernization
  • API Integration
  • Cloud Migration
  • Workflow Automation
  • Inventory Management
  • CRM Integration
  • Customer Portals
  • Reporting Dashboards
  • View All Solutions

Industries

  • Manufacturing
  • Automotive Manufacturing
  • Food Manufacturing
  • Healthcare
  • Logistics & Distribution
  • Construction
  • Financial Services
  • Retail & E-Commerce
  • View All Industries

Technologies

  • React
  • Node.js
  • .NET / C#
  • TypeScript
  • Python
  • SQL Server
  • PostgreSQL
  • Power BI
  • View All Technologies

Case Studies

  • Innotec ERP Migration
  • Great Lakes Fleet
  • Lakeshore QuickBooks
  • West MI Warehouse
  • View All Case Studies

Locations

  • Michigan
  • Ohio
  • Indiana
  • Illinois
  • View All Locations

Affiliations

  • FreedomDev is an InnoGroup Company
  • Located in the historic Colonial Clock Building
  • Proudly serving Innotec Corp. globally

Certifications

Proud member of the Michigan West Coast Chamber of Commerce

Gov. Contractor Codes

NAICS: 541511 (Custom Computer Programming)CAGE CODE: oYVQ9UEI: QS1AEB2PGF73
Download Capabilities Statement

© 2026 FreedomDev Sensible Software. All rights reserved.

HTML SitemapPrivacy & Cookies PolicyPortal
  1. Home
  2. /
  3. Solutions
  4. /
  5. SSIS to Azure Data Factory Migration: Package-by-Package Migration Guide
Solution

SSIS to Azure Data Factory Migration: Package-by-Package Migration Guide

Migrate SQL Server Integration Services packages to Azure Data Factory pipelines without losing transformations, schedules, or data integrity. FreedomDev has migrated 500+ SSIS packages across manufacturing, healthcare, and financial services companies moving their SQL Server workloads to Azure. We handle the SSIS Migration Assistant, manual pipeline recreation, Azure-SSIS Integration Runtime provisioning, and the hybrid approaches that Microsoft documentation never covers.

FD
500+ SSIS Packages Migrated
SQL Server & Azure Specialists
20+ Years Data Engineering
Zeeland, MI

Why SSIS Becomes a Liability Once You Start Moving to Azure

SQL Server Integration Services was the right answer for on-premises ETL in 2005. Two decades later, it is the single biggest obstacle preventing data teams from completing their Azure migration. SSIS packages run on Windows servers that require SQL Server licenses, SSISDB catalog databases, and an Integration Services runtime that does not exist natively in Azure SQL Database or Azure Synapse Analytics. When your organization moves its SQL Server instances to Azure SQL Database or Azure SQL Managed Instance, every SSIS package that loads data, transforms records, or orchestrates nightly batch jobs suddenly has nowhere to run. The packages still work. The servers they run on are scheduled for decommission.

The migration pressure is not theoretical. Microsoft ended mainstream support for SQL Server 2014 in 2024 and SQL Server 2016 reaches end of extended support in 2026. Companies running SSIS on these versions face a hard deadline: migrate the packages or pay for Extended Security Updates at roughly 75% of the license cost per year. For a company with 200 SSIS packages running on 3-4 SQL Server instances, the annual ESU cost alone can exceed $120,000 before you account for the Windows Server licenses, storage, and the DBA time to maintain aging infrastructure. The math stops working once Azure SQL Database can host your relational workloads at a fraction of the cost with zero patching overhead.

The real pain is not the cost. It is the risk of doing the migration wrong. SSIS packages accumulate undocumented business logic over years. A package that looks like a simple data load from a flat file often contains 40-60 data flow transformations, conditional splits based on business rules that only one DBA understands, script tasks with C# code that calls internal APIs, and event handlers that send failure notifications to distribution lists that no longer exist. Migrating these packages requires understanding what each one actually does, not just what its name implies. Teams that attempt a lift-and-shift without auditing package logic end up with Azure Data Factory pipelines that run without errors but produce wrong data, or worse, Azure-SSIS Integration Runtime clusters that cost $800-2,000/month to keep legacy packages running in the cloud with zero modernization benefit.

The three migration paths each come with distinct tradeoffs. The SSIS Migration Assistant automates conversion of simple packages but chokes on script tasks, custom components, and complex expressions. Manual pipeline recreation in ADF gives you native cloud performance and pay-per-use pricing but requires rebuilding every data flow from scratch. The hybrid approach using Azure-SSIS Integration Runtime lets you run existing packages unchanged in Azure but ties you to a dedicated compute cluster that bills by the hour whether your packages are running or not. Most real migrations use all three approaches for different subsets of packages. The question is which packages go where, and that decision requires a detailed assessment that most teams skip.

SSIS packages have no execution environment in Azure SQL Database or Azure Synapse — they require a Windows server or Azure-SSIS IR

SQL Server 2014/2016 end-of-support forces migration or $120K+/year in Extended Security Updates for typical 3-4 server deployments

Undocumented business logic buried in Script Tasks, custom components, and Expression Language makes packages opaque to anyone except the original author

Azure-SSIS Integration Runtime costs $800–$2,000/month for a dedicated cluster that runs 24/7 whether packages execute or not

SSIS Migration Assistant cannot convert Script Tasks (C#/VB.NET), custom data flow components, or complex Expression Language formulas

Failed migrations produce pipelines that execute without errors but generate wrong output data due to missed transformation logic

Need Help Implementing This Solution?

Our engineers have built this exact solution for other businesses. Let's discuss your requirements.

  • Proven implementation methodology
  • Experienced team — no learning on your dime
  • Clear timeline and transparent pricing

Migration Outcomes: What Changes After Moving from SSIS to Azure Data Factory

60–80%
Reduction in ETL infrastructure cost vs. on-prem SQL Server licensing
500+
SSIS packages migrated across manufacturing, healthcare, and finance
Zero
Unplanned downtime during migration (parallel running approach)
3–5x
Faster pipeline execution with ADF mapping data flows vs. SSIS on aging hardware
Pay-per-run
Serverless ADF pricing replaces 24/7 SQL Server Integration Services licensing
2–4 weeks
Typical parallel validation period before full cutover per batch

Facing this exact problem?

We can map out a transition plan tailored to your workflows.

The Transformation

Three Migration Paths: Automated Conversion, Manual Rebuild, and Azure-SSIS Integration Runtime

FreedomDev approaches every SSIS-to-ADF migration by categorizing packages into three tiers based on complexity, and applying the right migration strategy to each tier. Tier 1 packages are simple data movers: they extract from a source, apply minimal transformation, and load into a destination. These convert cleanly with the SSIS Migration Assistant or can be rebuilt as ADF Copy Activities with mapping data flows in 1-2 days per package. Tier 2 packages contain moderate business logic: conditional splits, derived columns, lookup transformations, slowly changing dimension handling, and moderate Expression Language usage. These require manual pipeline construction in ADF using mapping data flows, but the logic translates directly once you understand the package. Tier 3 packages are the ones that break every automated tool: Script Tasks running hundreds of lines of C#, custom components compiled from third-party DLLs, complex event handlers, and packages that call other packages in execution chains. Tier 3 packages either run on Azure-SSIS Integration Runtime unchanged, get rewritten as ADF pipelines with Azure Functions handling the custom logic, or get decomposed into smaller components that can be individually migrated.

Azure Data Factory is not a 1:1 replacement for SSIS. It is a fundamentally different paradigm. SSIS is a desktop-designed ETL tool where you build data flows visually in Visual Studio, deploy packages to an SSISDB catalog, and schedule them with SQL Server Agent. Everything runs on a single server. ADF is a cloud-native data orchestration service where pipelines define the control flow, activities execute individual operations, datasets describe your data structures, linked services manage connections, and integration runtimes provide the compute. The execution model is serverless by default: you pay per activity run and per data movement unit, not for an always-on server. This architectural difference means that migrating SSIS packages is not a format conversion exercise. It is a re-architecture of how your data pipelines execute, scale, and recover from failure.

The feature mapping between SSIS and ADF is where most teams get confused. SSIS control flow maps to ADF pipeline activities: Execute SQL Task becomes a Stored Procedure activity, File System Task becomes a Copy activity or Delete activity, For Each Loop Container becomes a ForEach activity, Sequence Container becomes a group of activities with dependency chains. SSIS data flow is more complex: it maps to ADF mapping data flows for transformations (joins, aggregates, derived columns, conditional splits, slowly changing dimensions) or to Copy activities for simple source-to-destination movement. SSIS connection managers become ADF linked services. SSIS parameters and variables become ADF parameters and variables, though the expression syntax is completely different: SSIS uses its own Expression Language (similar to C# syntax), while ADF uses a combination of string interpolation and its own expression language with functions like @concat(), @utcnow(), and @pipeline().parameters.parameterName. Every expression in every package must be manually translated.

Connection manager migration is deceptively complex because the authentication models differ. SSIS connection managers typically use Windows Authentication or SQL Server Authentication with credentials stored in the SSISDB catalog or package configuration files. ADF linked services use Azure Key Vault references, managed identity authentication, or service principal authentication. An SSIS package that connects to an on-premises SQL Server via Windows Auth using a domain service account needs an ADF linked service that either uses a self-hosted integration runtime with stored credentials, or requires the on-premises SQL Server to be accessible via Azure Private Link or VPN Gateway. Flat file connections in SSIS that reference local file paths (C:\ETL\Inbound\daily_orders.csv) must be converted to Azure Blob Storage or Azure Data Lake Storage linked services with the files relocated to cloud storage. Every connection in every package must be individually assessed for authentication method, network path, and credential storage.

Package Complexity Assessment & Tiering

Before migrating a single package, we run every .dtsx file through automated analysis that inventories control flow tasks, data flow transformations, Script Task code, custom components, connection managers, Expression Language usage, and package execution dependencies. Each package gets a complexity score and tier assignment (Tier 1: automated conversion, Tier 2: manual ADF rebuild, Tier 3: Azure-SSIS IR or rewrite). You get a spreadsheet showing every package, its complexity score, recommended migration path, estimated effort in hours, and migration priority based on business criticality.

SSIS Migration Assistant Conversion (Tier 1)

Microsoft's SSIS Migration Assistant converts simple packages to ADF pipelines automatically. We run every Tier 1 package through the tool, then validate every converted pipeline against the original package output using row-count checks, checksum comparisons, and sample data validation. The assistant handles Execute SQL Tasks, simple data flows with source-destination mapping, basic expression conversion, and straightforward control flow logic. Packages that fail conversion or produce incorrect output get escalated to Tier 2 manual rebuild.

Manual ADF Pipeline Construction (Tier 2)

For packages with meaningful business logic, we rebuild the pipeline natively in ADF. SSIS Lookup transformations become ADF Lookup activities or mapping data flow lookup transforms. Conditional Splits become mapping data flow conditional split transforms with translated expressions. Derived Columns become mapping data flow derived column transforms. Slowly Changing Dimension logic gets rebuilt using ADF's SCD transformation in mapping data flows, which actually handles Type 1, Type 2, and Type 6 changes more cleanly than SSIS ever did. Every rebuilt pipeline gets tested against production data and validated against the original SSIS package output before cutover.

Azure-SSIS Integration Runtime Provisioning (Tier 3)

For packages that cannot be converted — heavy Script Tasks, custom third-party components, complex package execution chains — we provision an Azure-SSIS Integration Runtime. This is a fully managed cluster of Windows VMs in Azure that runs your existing .dtsx packages with zero code changes. We configure the cluster sizing (Standard_D2_v3 minimum, Standard_D8_v3 for heavy workloads), node count (2-node minimum for production), SSISDB catalog on Azure SQL Database, VNet integration for accessing on-premises resources, and auto-start/stop schedules to minimize cost. Packages run exactly as they did on-premises, and you can trigger them from ADF pipelines alongside native ADF activities.

Expression Language Translation

SSIS Expression Language and ADF expression language are syntactically incompatible. SSIS uses C#-style syntax: (DT_STR, 10, 1252)DATEPART("yyyy", GETDATE()). ADF uses function-based syntax: @formatDateTime(utcnow(), 'yyyy'). We translate every expression manually — variable assignments, derived column formulas, conditional split conditions, precedence constraint expressions, and property expressions. Complex expressions that cannot be represented in ADF's language get moved to Azure Functions or Stored Procedures that the pipeline calls as activities.

Schedule Migration (SQL Agent to ADF Triggers)

SSIS packages are typically scheduled through SQL Server Agent jobs, often with complex multi-step jobs that chain package executions with T-SQL scripts and conditional logic between steps. We migrate these to ADF triggers: Schedule triggers for time-based execution, Tumbling Window triggers for backfill scenarios, Event triggers for file-arrival patterns (replacing SSIS file watchers), and Custom Event triggers via Event Grid for complex orchestration. SQL Agent job step dependencies become ADF pipeline activity dependencies with success, failure, and completion conditions that replicate the original execution flow.

Want a Custom Implementation Plan?

We'll map your requirements to a concrete plan with phases, milestones, and a realistic budget.

  • Detailed scope document you can share with stakeholders
  • Phased approach — start small, scale as you see results
  • No surprises — fixed-price or transparent hourly
“
We had 180 SSIS packages running on SQL Server 2016 with end-of-support approaching. FreedomDev categorized every package, converted 70% to native ADF pipelines, moved 30% to Azure-SSIS IR, and had us fully migrated in 10 weeks. Our monthly ETL infrastructure cost dropped from $6,200 to $900 and our nightly batch processing finishes 3 hours earlier.
Director of Data Engineering—Midwest Manufacturing Company

Our Process

01

SSIS Inventory & Dependency Mapping (1–2 Weeks)

We connect to your SSISDB catalog (or file system deployment) and extract every package, project, environment, connection manager, and SQL Agent job schedule. Each package gets decompiled to identify all control flow tasks, data flow components, Script Task source code, custom component references, and inter-package execution dependencies. The output is a complete dependency graph showing which packages call which packages, which packages share connection managers, and which SQL Agent jobs orchestrate multi-package workflows. This inventory drives every subsequent migration decision. Typical discovery: companies think they have 80 packages but actually have 150-250 when you include child packages, utility packages, and packages deployed outside the SSISDB catalog to file system paths that nobody remembers.

02

Complexity Scoring & Migration Path Assignment (1 Week)

Every package gets a complexity score from 1-10 based on weighted factors: number of data flow transformations (1 point per 5), Script Task presence (3 points each), custom component usage (4 points each), Expression Language complexity (1-3 points), number of connection managers (1 point per 3), and inter-package dependencies (2 points per chain). Packages scoring 1-3 go to Tier 1 (automated conversion). Packages scoring 4-6 go to Tier 2 (manual ADF rebuild). Packages scoring 7-10 go to Tier 3 (Azure-SSIS IR or rewrite). We present the tiering with effort estimates and let your team adjust priorities based on business criticality, upcoming deadlines, and budget. A typical 200-package environment splits roughly 40% Tier 1, 35% Tier 2, and 25% Tier 3.

03

Azure Infrastructure Provisioning (1 Week)

Before migrating packages, we stand up the ADF environment: create the Data Factory instance, configure Git integration for pipeline version control (Azure DevOps or GitHub), provision linked services for all target data stores (Azure SQL Database, Azure Blob Storage, Azure Data Lake Storage Gen2, on-premises SQL Server via self-hosted IR), set up Azure Key Vault for credential management, and if Tier 3 packages exist, provision the Azure-SSIS Integration Runtime with appropriate sizing. We configure the self-hosted integration runtime on a VM with network access to any on-premises systems that cloud pipelines need to reach. All infrastructure is provisioned via ARM templates or Bicep for repeatable deployment across dev/staging/production environments.

04

Package Migration Execution (3–10 Weeks)

Migration proceeds in priority order, typically starting with Tier 1 packages to build momentum and validate the process. Tier 1 packages run through the SSIS Migration Assistant, get validated, and move to production. Tier 2 packages get manually rebuilt in ADF with mapping data flows, tested against production data, and validated against original package output. Tier 3 packages get deployed to the Azure-SSIS IR or rewritten with Azure Functions handling Script Task logic. Each batch of migrated packages includes parallel running against the original SSIS packages to verify data accuracy. A 200-package migration typically takes 6-10 weeks of active development with 2-3 engineers working in parallel on different tiers.

05

Validation, Cutover & Decommission (2–4 Weeks)

Every migrated pipeline runs in parallel with the original SSIS package for a minimum validation period of 1-2 weeks per batch. We compare row counts, checksums, and sample records between old and new outputs. Schedule triggers are activated in ADF only after validation passes. SQL Agent jobs are disabled one at a time as their ADF replacements prove stable. We provide a 30-day hypercare period post-cutover to catch edge cases: month-end processing differences, quarterly batch jobs that did not run during validation, and timezone-related scheduling discrepancies. Once all packages are migrated and validated, we decommission the SSIS infrastructure: disable SQL Agent jobs, drop the SSISDB catalog, and document the mapping from every old package to its ADF pipeline replacement for your team's reference.

Before vs After

MetricWith FreedomDevWithout
Execution ModelServerless pay-per-activity-run (ADF native)Always-on SQL Server instance with SSIS runtime
Monthly Infrastructure Cost (200 packages)$200–$800/mo (ADF serverless, activity-based)$3,000–$8,000/mo (SQL Server licenses + Windows Server + storage)
ScalingAuto-scale integration runtimes, parallel pipeline runsFixed server capacity, manual scale-up requires downtime
MonitoringADF Monitor, Azure Monitor, Log Analytics, custom alertsSQL Agent job history, SSISDB execution reports, custom SSIS logging
Version ControlNative Git integration (Azure DevOps / GitHub)SSISDB catalog with project deployment, no native Git
Disaster RecoveryCross-region ADF replication, geo-redundant linked servicesSQL Server AlwaysOn for SSISDB, manual package backup/restore
Script Task / Custom CodeAzure Functions, Databricks notebooks, Stored ProceduresInline C#/VB.NET Script Tasks, custom compiled components
Maintenance OverheadZero patching (PaaS), Microsoft-managed runtime updatesMonthly Windows updates, SQL Server CUs, SSIS component patches

Ready to Solve This?

Schedule a direct technical consultation with our senior architects.

Explore More

SQL ServerAwsCloud MigrationData MigrationManufacturingHealthcareFinancial ServicesLogistics

Frequently Asked Questions

Can we keep running some SSIS packages unchanged in Azure instead of converting everything to ADF pipelines?
Yes. Azure-SSIS Integration Runtime is a fully managed cluster of Windows virtual machines inside Azure Data Factory that executes your existing .dtsx packages with zero code changes. You deploy your packages to an SSISDB catalog hosted on Azure SQL Database or Azure SQL Managed Instance, and the IR runs them exactly as your on-premises SQL Server did. The catch is cost: Azure-SSIS IR bills by the hour for every node in the cluster, regardless of whether packages are actively executing. A Standard_D4_v3 two-node cluster costs roughly $1,200-1,600/month running 24/7. You can configure auto-start and auto-stop schedules to run the cluster only during your batch processing windows (for example, 10 PM to 6 AM), which cuts the cost by 60-70%. We recommend Azure-SSIS IR specifically for Tier 3 packages: those with heavy Script Tasks, custom third-party components, or complex package execution chains that would cost more to rewrite than to host on IR. For most clients, 20-30% of packages end up on Azure-SSIS IR while the rest convert to native ADF pipelines.
What happens to our SSIS Script Tasks during migration? ADF does not have an equivalent.
Script Tasks are the most common migration blocker because ADF has no inline code execution equivalent. Each Script Task needs individual assessment based on what the code actually does. Script Tasks that perform data transformation logic (string manipulation, custom parsing, mathematical calculations) typically get migrated to ADF mapping data flow derived column transforms or, for complex logic, to Azure Functions that the pipeline invokes as a Web Activity. Script Tasks that call external APIs or web services become ADF Web Activities or Azure Function activities. Script Tasks that perform file system operations (creating directories, moving files, renaming files) become ADF pipeline activities (Copy, Delete, Get Metadata) or Azure Function calls. Script Tasks that interact with non-standard data sources (COM objects, custom DLLs, proprietary protocols) either remain on Azure-SSIS IR or get rewritten as Azure Functions with the relevant SDK packages installed. We extract the source code from every Script Task during the assessment phase, classify the logic, and determine the migration path before committing to a timeline. Roughly 60% of Script Tasks we encounter contain logic simple enough to express in ADF's native activities or mapping data flow expressions. The other 40% require Azure Functions or stay on the IR.
How do you handle SSIS packages that connect to on-premises databases after migration to ADF?
ADF connects to on-premises data sources through a self-hosted integration runtime, which is a lightweight agent installed on a Windows machine inside your network. The agent establishes an outbound HTTPS connection to ADF (no inbound firewall rules required) and executes data movement and dispatch activities on behalf of ADF pipelines. You install the self-hosted IR on an existing server or a small dedicated VM that has network access to your on-premises databases, file shares, and other systems. For SQL Server specifically, the self-hosted IR supports both SQL Authentication and Windows Authentication. For Windows Auth, the IR machine must be domain-joined and the service account needs appropriate database permissions. We typically configure two self-hosted IR nodes for high availability so that pipeline execution continues if one node goes offline for maintenance. The self-hosted IR is required for any ADF pipeline that accesses on-premises resources, and it has no additional licensing cost beyond the Windows VM it runs on. For organizations with Azure VPN Gateway or ExpressRoute already configured, we can alternatively use the Azure Integration Runtime with private endpoints to reach on-premises systems through the VPN tunnel, avoiding the need for a self-hosted IR agent entirely.
What does the SSIS Migration Assistant actually convert, and what does it miss?
The SSIS Migration Assistant (available as an Azure Data Factory tool) converts SSIS control flow and data flow into ADF pipeline JSON. It handles Execute SQL Tasks, simple data flow transformations (OLE DB Source, Flat File Source, OLE DB Destination, derived columns with basic expressions, row count transforms), For Each Loop Containers, Sequence Containers, basic precedence constraints, and package parameters. What it explicitly does not handle: Script Tasks (C# and VB.NET code is skipped entirely), custom data flow components (third-party or custom-compiled transforms), complex SSIS Expression Language formulas (the tool converts simple expressions but fails on nested functions, type casts, and conditional operators), Send Mail Tasks, WMI tasks, Analysis Services processing tasks, message queue tasks, and package configurations that reference environment variables or registry entries. Event handlers are also not converted. In practice, the Migration Assistant cleanly converts about 30-50% of packages in a typical enterprise SSIS environment. The rest either fail conversion outright or convert with warnings that require manual intervention. We run every converted pipeline through validation testing because the assistant sometimes produces pipelines that execute without errors but produce incorrect output due to expression conversion issues or data type mapping differences between SSIS and ADF.
How much does SSIS to ADF migration cost and how long does it take?
Cost and timeline depend entirely on the number of packages, their complexity distribution, and how many require Azure-SSIS IR versus native ADF conversion. For a small environment (20-50 packages, mostly Tier 1 and Tier 2), expect $30,000-$60,000 and 4-8 weeks. For a mid-size environment (100-200 packages with a mix of all three tiers), expect $80,000-$150,000 and 8-14 weeks. For large enterprise environments (300+ packages with heavy Tier 3 presence, multiple SSIS servers, and complex SQL Agent job orchestration), expect $150,000-$300,000 and 3-6 months. These ranges include discovery, assessment, tiering, infrastructure provisioning, migration execution, validation, parallel running, and cutover support. They do not include Azure consumption costs, which vary based on your data volumes and pipeline execution frequency. The assessment phase (Steps 1-2) is fixed-cost at $5,000-$10,000 regardless of environment size, and we recommend starting there before committing to a full migration budget. The assessment deliverable gives you the package inventory, complexity tiering, migration path recommendations, effort estimates, and Azure infrastructure cost projections so you can make an informed decision.
What is the difference between ADF mapping data flows and ADF data flows, and which one replaces SSIS data flows?
ADF has two types of data flows: mapping data flows and wrangling data flows (now called Power Query data flows). Mapping data flows are the direct replacement for SSIS data flows. They provide a visual transformation designer similar to the SSIS data flow designer, with source transforms, sink transforms, and transformation nodes in between: derived columns, aggregate, filter, join, lookup, conditional split, union, pivot, unpivot, sort, surrogate key, slowly changing dimension, and more. Mapping data flows execute on auto-scaled Apache Spark clusters managed by ADF, which means they can process large data volumes (millions of rows) with parallel execution and partitioning that SSIS was never designed to handle. The Spark execution engine introduces some behavioral differences: data types have different precision characteristics, sort order is not guaranteed through transformations the same way SSIS buffer-based processing guarantees it, and null handling follows Spark semantics rather than SSIS semantics. We test all data type edge cases during migration to catch these differences. Wrangling data flows (Power Query) are a different feature designed for self-service data prep by analysts and do not replace SSIS data flows. They use the Power Query M language and are intended for ad-hoc data exploration, not production ETL pipelines. When we say we migrate SSIS data flows to ADF, we always mean mapping data flows.
Can ADF handle the same scheduling complexity as SQL Server Agent jobs that orchestrate our SSIS packages?
ADF triggers replicate and in many cases exceed SQL Server Agent scheduling capabilities. Schedule triggers handle time-based recurring execution (every hour, daily at 2 AM, every Monday and Thursday, first of the month). Tumbling window triggers handle fixed-size, non-overlapping time intervals with built-in dependency chaining and backfill support, which is something SQL Agent cannot do natively. Event-based triggers fire when files arrive in Azure Blob Storage or Data Lake Storage, replacing SSIS file watcher patterns and WMI event subscriptions. Custom event triggers integrate with Azure Event Grid for complex event-driven orchestration across multiple Azure services. The main gap is multi-step job logic. SQL Server Agent jobs can chain SSIS package execution with T-SQL scripts, PowerShell steps, and CmdExec steps, with conditional logic between steps based on success or failure. In ADF, this translates to pipeline activities with dependency conditions (succeeded, failed, completed, skipped). Execute Pipeline activities call child pipelines (replacing Execute Package Tasks), Stored Procedure activities replace T-SQL job steps, and Azure Function or Web activities replace PowerShell and CmdExec steps. We rebuild every SQL Agent job as an ADF master pipeline that orchestrates the same execution sequence with the same conditional logic, then validate the execution flow against the original job step history.

Stop Working For Your Software

Make your software work for you. Let's build a sensible solution.