agentsclimarketplace

Fabric copy job

Skill wardawgmalvicious/claude-config/skills/fabric-copy-job

Personal Claude Code config — skills, subagents, hooks, and rules for Microsoft Fabric and Power BI workflows on Windows. Cherry-pickable, no semver.

Install
npx -y skills add wardawgmalvicious/claude-config --skill fabric-copy-job

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Use for Fabric Data Factory Copy job — the no-pipeline data-movement item (`CopyJob`) for many-source→many-destination ingestion. Covers copy modes (full vs incremental), watermark-based incremental (GA: ROWVERSION/datetime/int columns) vs CDC-based incremental (Preview: captures inserts/updates/deletes, SCD Type 2, Merge default), the CDC-vs-watermark rubric, switching full↔incremental via `jobMode` and resetting to full (whole job or per table; changing the incremental column forces a full reload), the JSON definition (`copyjob-content.json`, View→View JSON code, base64 getDefinition/updateDefinition — replaces all parts), REST surface + on-demand run (`?jobType=Execute` gotcha) + fabric-data-factory-mcp tools, event-driven invocation via Activator (Preview — no parameters) and Job events alerting, plus gotchas (change-retention window, net-change-only, default capture instance only, CDC+non-CDC table demotion, Lakehouse CDF undetectable) and CU pricing (full 1.5 / incremental 3 CU-hr).

SKILL.md

10.6 KB, as published. Nobody here has run it

Fabric Copy job (Data Factory)

Copy job is the guided, no-pipeline data-movement item in Fabric Data Factory: many sources → many destinations with bulk copy, incremental copy, and CDC replication. The Copy job item is GA; create via + New Item → Copy job. Item type: CopyJob.

There is no local file-based artifact (unlike TMDL/PBIR) — you script Copy jobs via the REST API / MCP, or edit the JSON definition in-product. When to reach for Copy job vs alternatives: Copy job for guided source→destination movement; Mirroring for zero-config near-real-time DB replication; pipeline Copy activity when you need broader orchestration.

Copy modes

ModeBehaviourStatus
Full copyEvery run copies all data source→destination (one-time or recurring snapshot).GA
Incremental — watermarkFirst run = full load; later runs copy only rows past the watermark.GA
Incremental — CDCFirst run = full load; later runs replay inserts/updates/deletes from the source change feed.Preview

Copy job tracks the last-successful-run state itself. A failed run doesn't advance state — the next run resumes from the last success (no data loss, no manual watermark bookkeeping).

Watermark vs CDC — decision rubric

ConsiderationCDCWatermark
Source prerequisiteCDC enabled + connector supports itA monotonically-increasing column
Detects inserts / updatesYes / YesYes / Yes (when the column changes)
Detects deletesYesNo
Typical write methodMerge or SCD Type 2Append or Merge
Source loadReads change feed (light on high-churn tables)Scans for rows past the watermark

Watermark column types: ROWVERSION, datetime, date, integer, string interpreted as datetime. With CDC you don't pick a column — Copy job auto-detects; default Update method = Merge, key columns default to the source primary key. If a table has no CDC, Copy job falls back to watermark automatically.

Switching full ↔ incremental / resetting

  • You can reset incremental back to full at any time — for the whole job or per table. The next run does a fresh full load, then resumes incremental.
  • Editing that forces a reset: changing a table's incremental column (or update method) resets that table to an initial full load on the next run. Adding/removing tables or columns is a normal edit.
  • Manual Run works even on a scheduled job — in incremental mode it still only moves changes since the last run.

CDC replication (Preview)

CDC connector support (per the connectors matrix) — the SQL family is the most complete (source + destination + SCD Type 2): Azure SQL DB, Azure SQL Managed Instance, on-premises SQL Server. Others are narrower: Oracle / Google BigQuery / SAP Datasphere Outbound = CDC source only (no SCD2); Fabric Warehouse = CDC destination only; Fabric Lakehouse table = source + destination + SCD2 (Preview). Snowflake CDC is covered by its own tutorial.

The audit that flagged this skill said "CDC for SQL estates GA." As of the docs, CDC replication is still labelled Preview (the item and watermark-incremental are GA). Re-verify per connector before telling a client CDC is GA.

JSON definition & editing

The definition is a base64 part, copyjob-content.json, with two sections:

  • propertiesjobMode, source/destination connection references, policy (e.g. timeout).
  • activities[] — one object per table mapping (source/destination table, translator column mappings, writeBehavior, type conversion).

jobMode is the full↔incremental switch in JSON: "Batch" = full or watermark-incremental copy; "CDC" = change-data-capture incremental. Per-activity writeBehavior (Overwrite / Merge) sets append-vs-merge. So "switch a job from full to CDC" = flip jobMode and set writeBehavior: "Merge", then updateDefinition.

Get the JSON from the UI via View → View JSON code, or over REST:

  • POST /v1/workspaces/{wsId}/copyJobs/{id}/getDefinition → base64 copyjob-content.json (+ .platform).
  • POST /v1/workspaces/{wsId}/copyJobs/{id}/updateDefinitionreplaces the whole definition, so include every content part you want to keep (omitted parts are dropped). Same replace-not-merge rule as every Fabric definition API — see the fabric-tmdl-api skill. Unlike semantic-model definitions, the Copy job create/updateDefinition examples do carry a .platform part (item metadata); it's optional — include it only when you intend to update metadata.

REST & MCP surface

REST base: /v1/workspaces/{wsId}/copyJobs. CRUD = POST (create, ±definition), GET (get/list), PATCH (rename/description), POST .../getDefinition|updateDefinition, DELETE.

On-demand run gotcha: run uses the generic jobs endpoint with ?jobType=Execute, not CopyJob:

POST /v1/workspaces/{wsId}/items/{itemId}/jobs/instances?jobType=Execute   → 202 Accepted

(The returned instance object reports jobType: "CopyJob" — the run trigger value is still Execute.) Scheduling and 202/LRO polling follow the standard Fabric patterns — see the fabric-rest-api skill; auth/token audience — see the fabric-auth skill.

MCP (fabric-data-factory-mcp, dnx Microsoft.DataFactory.MCP --prerelease) covers the surface without hand-rolling REST: create_copy_job, create_copy_job (with definition) / update_copy_job_definition, get_copy_job / get_copy_job_definition, list_copy_jobs, update_copy_job, run_copy_job, get_copy_job_run_status, create_copy_job_schedule, list_copy_job_schedules.

Event-driven invocation

  • Activator (Preview): a Fabric Activator rule can run a Copy job as its action when a condition fires. Gotcha — Copy job actions don't accept parameters (pipelines/notebooks/dataflows do). So Activator can trigger a Copy job but can't parameterize the run.
  • Job events / alerting: CopyJob is a supported item type for Fabric Job events (Microsoft.Fabric.ItemJobSucceeded / ItemJobFailed, etc.). Route these through Real-Time hub → Activator to alert on copy-job success/failure or chain downstream work.
  • Pipeline event triggers: wrapping the Copy job in a pipeline Copy-job activity lets you use pipeline event triggers (e.g. new files in a lake) for richer, parameterized orchestration.

Gotchas

  • Change-retention window must exceed the run interval — CDC retention / Oracle redo-log / Snowflake change-tracking / BigQuery change-history. If changes age out before the next run, they're silently lost.
  • Net change only today (full change history "coming later"): between two runs you get the net effect, not every intermediate change.
  • Only the default capture instance is supported — custom SQL Server CDC capture instances aren't.
  • Mixing CDC and non-CDC tables in one job demotes ALL tables to watermark-based incremental. Split them into separate jobs to keep true CDC.
  • Fabric Lakehouse tables: Copy job can't auto-detect whether CDF is enabled.
  • Plain (non-CDC) incremental can't capture deletes from the source.
  • Storage destinations: empty files are created at the destination when a run loads no data.
  • Schema drift: with a column mapping, a new source column is ignored, but a deleted/renamed mapped column fails the run; without a mapping, new columns are ignored and deleted columns just stop syncing (existing destination data stays). Source type changes must be castable to the destination type or the run fails.
  • Auto-partitioning (Preview) is watermark-based only (not CDC) and limited to specific SQL-family + Oracle/SAP HANA/Lakehouse connectors — Advanced settings toggle.

Pricing (Capacity Units)

PatternCU consumptionGranularity
Full copy1.5 CU-hoursper Copy job item
Incremental copy3 CU-hoursper Copy job item

Billed by run duration × intelligent-optimization throughput. The 3 CU-hr incremental rate applies to both the initial full load in incremental mode and subsequent delta runs.

Reference

See also

  • fabric-rest-api skill — LRO/202 polling, jobType values, scheduling, pagination for the calls above
  • fabric-auth skill — bearer-token audience for api.fabric.microsoft.com
  • fabric-tmdl-api skill — the "updateDefinition must include ALL parts" rule (applies identically here)
  • fabric-cli skillfab item CRUD / fab api passthrough if you'd rather script from the CLI
  • fabric-eventstream skill / Activator — event-driven triggering and Job-events alerting
  • fabric-gotchas skill — cross-cutting error index

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.