This time we’re going bigger than ever. Fabric, Power BI, SQL, AI and more. We're covering it all. You won't want to miss it.
Learn moreDid you hear? There's a new SQL AI Developer certification (DP-800). Start preparing now and be one of the first to get certified. Register now
If you haven’t already, check out Arun Ulag’s hero blog “FabCon and SQLCon 2026: Unifying databases and Fabric on a single, complete platform” for a complete look at all of our FabCon and SQLCon announcements across both Fabric and our database offerings.
Change data capture (CDC) is the backbone of modern data replication. When your operational systems change — new orders, updated customer addresses, canceled subscriptions — your analytics environment needs to reflect those changes quickly and accurately. But building and maintaining CDC replication jobs has traditionally required deep engineering effort with custom code and complex logic to handle deletes and history.
We’re introducing a set of enhancements to Copy job in Microsoft Fabric Data Factory that make CDC replication significantly richer and easier — all without writing a single line of code:
Supported connectors:
Slowly Changing Dimension Type 2 (SCD Type 2) is one of the most well-established patterns in data warehousing. The core idea is simple: when a dimension record changes, don't overwrite it — insert a new version and preserve the old one.
Consider a customer table. A customer moves from California to New York. With a simple overwrite (SCD Type 1), you lose the fact that they were ever in California. Every historical transaction linked to that customer now shows "New York," even for orders placed years ago when the customer was in California.
With SCD Type 2, both versions are preserved:
| CustomerKey | CustomerID | Name | State | Valid_From | Valid_To | Is_Current |
|---|---|---|---|---|---|---|
| 1001 | C-123 | Acme Corp | CA | 2023-01-15 | 2026-02-20 | No |
| 1002 | C-123 | Acme Corp | NY | 2026-02-20 | 9999-12-31 | Yes |
Now your analytics can answer both "Where is this customer today?" and "Where was this customer when they placed that order in 2024?" — a critical distinction for accurate reporting, regulatory compliance, and business intelligence.
But history tracking doesn't end with updates. What happens when a record is deleted from the source? In a traditional overwrite model, the row simply disappears from the destination. In an SCD Type 2 model, the record isn't removed. Instead, its current version is closed: ValidTo is set to the deletion timestamp and IsCurrent is flipped to false. The record remains in the table, fully queryable, preserving the complete lifecycle of that entity from creation through every change to its eventual removal. This is critical for compliance ("prove this customer existed and what state they were in"), for audit trails, and for analytics that require complete population snapshots at any point in time.
Screenshot_of_enabling_SCD2_in_Copy_job
Figure: Screenshot of enabling SCD2 in Copy job.
CDC replication with SCD Type 2 is the next, and arguably the most compelling, proof point. This is a pattern that has existed in data warehousing for decades, that every enterprise eventually needs, and that has stubbornly resisted simplification. With Copy Job, SCD Type 2 is enabled through a single toggle, is a statement about what no-code tools should be capable of.
The value becomes starkly clear when you compare Copy job side-by-side with what the same task requires on code-centric platforms.
Implementing SCD Type 2
| Aspect | Code-Based Platform | Copy job (No-Code) |
|---|---|---|
| Setup time | Days to weeks (connectivity, libraries, custom code, testing) | Minutes (select source, destination, toggle SCD2) |
| MERGE logic | Write and maintain MERGE INTO with WHEN MATCHED / WHEN NOT MATCHED clauses per table | Generated automatically by the platform |
| SCD Type 2 + soft delete | Manually add ValidFrom, ValidTo, IsCurrent; write separate code paths for updates vs. deletes; manage version transitions and soft-delete close-out | One step — both history tracking and soft delete are enabled together, applied consistently across all selected tables |
| Per-table effort | Each table needs its own MERGE logic (or a parameterized framework you build yourself) | Select tables in bulk — SCD2 applies uniformly |
| Scaling to 100+ tables | Build and maintain a custom framework; significant engineering investment | Same experience whether it's 1 table or 500 |
| Maintenance | Ongoing: handle edge cases, Spark or other framework version upgrades, library compatibility | Zero code to maintain — platform handles updates |
| Skill requirement | Spark/PySpark/SQL expertise, CDC domain knowledge | Business user with basic data understanding |
ADF does not offer built-in SCD Type 2 support. As described in the ADF documentation on slowly changing dimensions, implementing SCD Type 2 in ADF requires building mapping data flows with a specific chain of transformations — conditional split to classify incoming rows as inserts vs. updates, derived column to generate surrogate keys and effective dates, alter row to mark rows for insert or update, and a sink transformation configured for upsert behavior. Each table requires its own data flow with this multi-step configuration, and changes to source schema or business rules mean revisiting and updating each flow individually.
There is no one-step SCD Type 2 option in ADF. Copy job in Fabric Data Factory changes this entirely. The same SCD Type 2 pattern that requires per-table data flow authoring in ADF is available as a single toggle in Copy job — applied consistently across all selected tables, with soft delete included, and with zero ongoing maintenance.
If you're evaluating a move from ADF to Fabric, CDC with SCD Type 2 is one of the strongest reasons to make that transition. The ADF to Fabric migration guide provides step-by-step instructions to help you get started.
Questions or feedback? Leave your thoughts in the comment section.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.