Business Professionals
Power BI | Power Pivot | Power Query | DAX
Cloud Flows | RPA | AI Builder | Copilot
60+ Formulas | Data Stories | Advanced Reporting & Modeling
VB Programming | Report Automation |
MS-Office Automation
Techno-Business Professionals
Power BI | Power Query | Advanced DAX | SQL - Query &
Programming
Microsoft Fabric | Power BI | Power Query | Advanced DAX |
SQL - Query & Programming
Power BI | Power Apps | Power Automate | Copilot Studio | Power Pages | Dataverse
Microsoft Power Apps | Microsoft Power Automate
Power BI | Adv. DAX | SQL (Query & Programming) |
VBA | Python | Web Scrapping | API Integration
Power BI | Power Apps | Power Automate |
SQL (Query & Programming)
Power BI | Adv. DAX | Power Apps | Power Automate |
SQL (Query & Programming) | VBA | Python | Web Scrapping | API Integration
Power Apps | Power Automate | SQL | VBA | Python |
Web Scraping | RPA | API Integration
Technology Professionals
Power BI | DAX | SQL | ETL with SSIS | SSAS | VBA | Python
Power BI | SQL | Azure Data Lake | Synapse Analytics |
Data Factory | Databricks | Power Apps | Power Automate |
Azure Analysis Services
Microsoft Fabric | Power BI | SQL | Lakehouse |
Data Factory (Pipelines) | Dataflows Gen2 | KQL | Delta Tables | Power Apps | Power Automate
Power BI | Power Apps | Power Automate | SQL | VBA | Python | API Integration
Power BI | Advanced DAX | Databricks | SQL | Lakehouse Architecture
Business Professionals
Power BI | Power Pivot | Power Query | DAX
Cloud Flows | RPA | AI Builder | Copilot
60+ Formulas | Data Stories | Advanced Reporting & Modeling
VB Programming | Report Automation |
MS-Office Automation
Techno-Business Professionals
Power BI | Power Query | Advanced DAX | SQL - Query &
Programming
Microsoft Fabric | Power BI | Power Query | Advanced DAX |
SQL - Query & Programming
Power BI | Power Apps | Power Automate | Copilot Studio | Power Pages | Dataverse
Microsoft Power Apps | Microsoft Power Automate
Power BI | Adv. DAX | SQL (Query & Programming) |
VBA | Web Scrapping | API Integration
Power BI | Power Apps | Power Automate |
SQL (Query & Programming)
Power BI | Adv. DAX | Power Apps | Power Automate |
SQL (Query & Programming) | VBA | Web Scrapping | API Integration
Power Apps | Power Automate | SQL | VBA |
Web Scraping | RPA | API Integration
Technology Professionals
Power BI | DAX | SQL | ETL with SSIS | SSAS | VBA
Power BI | SQL | Azure Data Lake | Synapse Analytics |
Data Factory | Azure Analysis Services
Microsoft Fabric | Power BI | SQL | Lakehouse |
Data Factory (Pipelines) | Dataflows Gen2 | KQL | Delta Tables
Power BI | Power Apps | Power Automate | SQL | VBA | API Integration
Power BI | Advanced DAX | Databricks | SQL | Lakehouse Architecture
Migrating from SSIS to Azure Data Factory is not a 1:1 lift-and-shift; it’s a redesign of how you orchestrate and run data pipelines. This guide gives SQL and SSIS developers a concrete, step‑by‑step playbook to move packages to ADF with minimal surprises and maximum reuse of your existing SQL skills, and points you to deeper Azure data engineering paths like a solid cloud-focused data engineering track when you’re ready.
Before planning a migration, map the mental model shift.
SSIS
Azure Data Factory (ADF)
Easy-ish mappings:
Needs redesign:
You can often keep your SQL logic and refactor the orchestration around it.
Prioritize pipelines based on:
Create a simple inventory:
Common patterns when moving SSIS to ADF:
For SQL‑heavy teams, start with ADF orchestrating stored procedures. It’s fast to implement and keeps the learning curve manageable.
ForEach activity.Execute Pipeline activity.Example: SSIS pattern
In ADF, this becomes a single pipeline with four activities chained by dependencies.
Example mapping:
If performance or cost becomes an issue, consider pushing heavy logic into SQL views or stored procedures.
Example: pipeline parameter snippet (conceptual JSON):
{
"name": "LoadCustomer",
"properties": {
"parameters": {
"LoadDate": {
"type": "String",
"defaultValue": "@{formatDateTime(utcNow(),'yyyy-MM-dd')}"
}
}
}
}
To reach on‑prem sources, you’ll need a Self‑Hosted Integration Runtime (SHIR).
Key steps:
Example: SQL linked service (conceptual snippet):
{
"name": "LS_OnPremSQL",
"properties": {
"type": "SqlServer",
"typeProperties": {
"connectionString": "Server=ONPREMSQL;Database=DW;"
},
"connectVia": {
"referenceName": "SelfHostedIR",
"type": "IntegrationRuntimeReference"
}
}
}
Typical SSIS pattern:
File System Task to move filesData Flow to load CSV → SQLADF equivalent:
Copy to archive: move processed file.Row‑by‑row C# logic in SSIS often doesn’t translate well.
Options:
UPDATE t
SET t.Status = CASE
WHEN t.Amount > 10000 THEN 'HIGH'
WHEN t.Amount > 0 THEN 'NORMAL'
ELSE 'INVALID'
END
FROM dbo.Transactions t
WHERE t.LoadDate = @LoadDate;
SSIS event handlers → ADF patterns:
Example: pattern for failure branch:
usp_LogPipelineError with parameters:
CREATE PROCEDURE dbo.usp_LogPipelineError
@PipelineName sysname,
@ActivityName sysname,
@ErrorMessage nvarchar(max),
@RunId uniqueidentifier
AS
BEGIN
INSERT INTO dbo.PipelineErrorLog
(
PipelineName,
ActivityName,
ErrorMessage,
RunId,
ErrorTime
)
VALUES
(
@PipelineName,
@ActivityName,
@ErrorMessage,
@RunId,
SYSDATETIME()
);
END;
In SSIS, you probably use SQL Agent jobs. In ADF, you use triggers:
For most SSIS migrations, schedule triggers are enough.
If your SSIS packages use LastLoadDate parameters, you can replicate that in ADF.
Common pattern:
LastLoadDate per table in a control table.Example watermark table:
CREATE TABLE dbo.LoadControl
(
SourceName sysname PRIMARY KEY,
LastLoadDate datetime2(0) NOT NULL
);
Example source query in a stored procedure:
CREATE PROCEDURE dbo.usp_LoadSalesIncremental
AS
BEGIN
DECLARE @LastLoadDate datetime2(0);
SELECT @LastLoadDate = LastLoadDate
FROM dbo.LoadControl
WHERE SourceName = 'Sales';
INSERT INTO dbo.SalesStaging (OrderID, OrderDate, Amount)
SELECT s.OrderID,
s.OrderDate,
s.Amount
FROM dbo.SalesSource s
WHERE s.ModifiedDate > @LastLoadDate;
UPDATE dbo.LoadControl
SET LastLoadDate = SYSDATETIME()
WHERE SourceName = 'Sales';
END;
ADF pipeline steps:
Lookup activity to read LastLoadDate (optional if logic is inside proc).Stored Procedure activity calling dbo.usp_LoadSalesIncremental.Instead of SSIS Catalog reports, you now use:
Track at least:
ADF charges are based on:
Practical tips:
Turn this into an executable plan instead of a vague “we should move to ADF”.
Pick a single, non‑critical SSIS package and rewrite it in ADF using Copy activities plus stored procedures, keeping all business logic in SQL; once that runs reliably for a week, use the same pattern to migrate the rest of that subject area instead of redesigning everything from scratch.
Azure
New
Next Batches Now Live
Power BI
SQL
Power Apps
Power Automate
Microsoft Fabrics
Azure Data Engineering