pipeline-migration
Migrates Synapse Data Factory pipelines to Fabric Data Factory, turning linked services into Fabric connections, inlining datasets into activities, converting global parameters to Variable Libraries, and mapping SynapseNotebook to TridentNotebook. Use for pipeline JSON.
Install / Use
npx skills add microsoft/skills-for-fabric --skill pipeline-migrationInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
AutomationSupported Platforms
Our assessment of pipeline-migration
pipeline-migration scores 93/100 on our quality scale, 734th of 2,881 Automation skills we index (top 26%).
Its SKILL.md is 21 KB long, well organised into 19 sections with 6 code examples: a thorough specification that gives an agent plenty to work with.
With 1,181 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated 15 days ago, so pipeline-migration is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
pipeline-migration compared with similar skills
All 4 of these similar skills score higher than pipeline-migration; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| pipeline-migration (this skill)by microsoft | 93 | 1.2k | 15d ago | SKILL.md |
| Agent-Reachby Panniantong | 100 | 89.0k | 17d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 74.3k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 85.3k | 2d ago | MCP Server |
| crawl4aiby unclecode | 100 | 84.7k | 8d ago | MCP Server |
Frequently asked questions
- How do I install pipeline-migration?
- Run
npx skills add microsoft/skills-for-fabric --skill pipeline-migration. The install tabs above show the steps for each supported agent. - Which AI agents does pipeline-migration work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is pipeline-migration safe to use?
- It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is pipeline-migration still maintained?
- The repository was last updated 15 days ago, so pipeline-migration is actively maintained.
Skill content
View source on GitHubname: pipeline-migration description: "Migrates Synapse Data Factory pipelines to Fabric Data Factory, turning linked services into Fabric connections, inlining datasets into activities, converting global parameters to Variable Libraries, and mapping SynapseNotebook to TridentNotebook. Use for pipeline JSON. For Synapse Spark notebook code use synapse-migration."
Telemetry — MANDATORY. Every
api.fabric.microsoft.comcall must carryx-ms-fabric-skill: pipeline-migration(az rest:--headers "x-ms-fabric-skill=pipeline-migration"), including every LRO poll,fabric_lroand retry. Snippets omit it — add it anyway.
CRITICAL NOTES
- To find workspace details (including its ID) from a workspace name: list all workspaces, then use JMESPath filtering
- To find item details (including its ID) from workspace ID, item type, and item name: list all items of that type in that workspace, then use JMESPath filtering
- Fabric does NOT have a "Dataset" item type — all dataset properties are inlined into activity
typeProperties- Linked Services map to Fabric Connections — in pipeline activity JSON,
referenceNameon the activity'slinkedServiceblock uses the Fabric connection display name (not the connection GUID); the connection GUID is used only on Fabric REST API calls- Notebook activities change from
SynapseNotebooktoTridentNotebookand reference notebooks by GUID, not by name- Synapse global parameters become a Variable Library item in Fabric, referenced as
@pipeline().libraryVariables.<name>. Variable LibraryNumbertypes are not consumable in pipelines — SynapseFloat/Doubleare mapped toStringfor runtime compatibility- The
Validationactivity type does not exist in Fabric — it must be rewritten asGetMetadata+IfCondition- Triggers are intentionally excluded from this skill — recreate schedules manually in Fabric after migration
- SSIS package execution, SHIR-exclusive connectors, and Databricks activities are parked — see pipeline-gotchas.md
Synapse Pipelines → Microsoft Fabric Data Factory Migration
Prerequisite Knowledge
These companion documents provide general Fabric REST patterns. Do NOT read them upfront — reference only when a specific phase requires a pattern not already covered in this skill's resource files:
- COMMON-CORE.md — General Fabric REST API patterns, authentication & token audiences, item discovery via JMESPath
- COMMON-CLI.md —
az rest/az loginCLI patterns, authentication recipes, pipeline run/schedule operations - ITEM-DEFINITIONS-CORE.md —
DataPipelineandVariableLibraryitem definition structures (pipeline-content.json, variables.json) - SPARK-AUTHORING-CORE.md — Fabric notebook item creation (needed when notebook items don't exist yet in Fabric)
For the notebook side of the migration (the notebooks that pipeline activities call), use the companion synapse-migration skill to migrate the notebook content itself.
Table of Contents
| Topic | Reference | |---|---| | Pre-Migration Assessment (run first) | pipeline-assessment.md | | Migration Orchestrator | pipeline-orchestrator.md | | API-Driven Migration Workflow | § API-Driven Migration Workflow | | Activity Type Mapping | activity-mapping.md | | Notebook Activity Migration (primary focus) | notebook-activity-migration.md | | Linked Services → Connections | linked-service-to-connection.md | | Dataset Inlining | dataset-inlining.md | | Global Parameters → Variable Library | global-parameters-to-variable-library.md | | Pipeline Gotchas & Parked Activities | pipeline-gotchas.md | | Validation & Testing | validation-testing.md | | Migration Report | migration-report.md |
Context Loading Guide
IMPORTANT — Load only what you need. Do NOT read all resource files upfront.
| When | Read This File | |---|---| | User asks for an assessment, scope, or plan before migrating | pipeline-assessment.md | | User asks to migrate a full pipeline workspace | pipeline-orchestrator.md | | User asks about activity type mapping or unsupported activities | activity-mapping.md | | User has SynapseNotebook activities (most common) | notebook-activity-migration.md | | User asks about linked services or connections | linked-service-to-connection.md | | User asks about Copy, Lookup, or GetMetadata with datasets | dataset-inlining.md | | User has global parameters to convert | global-parameters-to-variable-library.md | | User hits SSIS, SHIR, Databricks, or other blockers | pipeline-gotchas.md | | Post-migration verification | validation-testing.md | | Generating a migration summary | migration-report.md |
API-Driven Migration Workflow
Authentication
| Target | Token Audience |
|---|---|
| Synapse Data Plane (pipelines, datasets, linked services) | https://dev.azuresynapse.net |
| Synapse ARM (global parameters, workspace properties) | https://management.azure.com |
| Fabric REST API (create pipelines, connections, Variable Libraries) | https://api.fabric.microsoft.com |
Use
az account get-access-token --resource <audience> --query accessToken -o tsvto acquire tokens.
Synapse Data-Plane API Reference
| Operation | Endpoint |
|---|---|
| List all pipelines | GET https://{ws}.dev.azuresynapse.net/pipelines?api-version=2020-12-01 |
| Get pipeline definition | GET https://{ws}.dev.azuresynapse.net/pipelines/{name}?api-version=2020-12-01 |
| List all datasets | GET https://{ws}.dev.azuresynapse.net/datasets?api-version=2020-12-01 |
| Get dataset definition | GET https://{ws}.dev.azuresynapse.net/datasets/{name}?api-version=2020-12-01 |
| List all linked services | GET https://{ws}.dev.azuresynapse.net/linkedservices?api-version=2020-12-01 |
| Get linked service | GET https://{ws}.dev.azuresynapse.net/linkedservices/{name}?api-version=2020-12-01 |
| Get workspace (global parameters) | GET https://management.azure.com/subscriptions/{subId}/resourceGroups/{rg}/providers/Microsoft.Synapse/workspaces/{ws}?api-version=2021-06-01 |
Fabric API Reference
| Operation | Endpoint |
|---|---|
| List connections | GET https://api.fabric.microsoft.com/v1/connections |
| Create connection | POST https://api.fabric.microsoft.com/v1/connections |
| Create pipeline item | POST https://api.fabric.microsoft.com/v1/workspaces/{wsId}/items |
| Update pipeline definition | POST https://api.fabric.microsoft.com/v1/workspaces/{wsId}/items/{id}/updateDefinition |
| Get pipeline definition | POST https://api.fabric.microsoft.com/v1/workspaces/{wsId}/items/{id}/getDefinition |
| Create Variable Library | POST https://api.fabric.microsoft.com/v1/workspaces/{wsId}/items (type: VariableLibrary) |
| List notebooks in workspace | GET https://api.fabric.microsoft.com/v1/workspaces/{wsId}/notebooks |
Assessment Mode (Optional but Recommended)
Before creating any items in Fabric, run the pipeline assessment to understand scope, complexity, and blockers. The assessment is read-only — it queries Synapse APIs only and produces a markdown report.
Copilot workflow — no Python script file needed:
- Ask the user: "What is the name of your Synapse workspace?"
- Auto-discover subscription ID and resource group via
az account showandaz synapse workspace show - Run the assessment code inline from the terminal
- Print the full report output directly in the chat
| When to Use | Action | |---|---| | User wants to understand migration scope before committing | Ask for workspace name → load pipeline-assessment.md → run inline | | User asks "what will and won't migrate?" | Run assessment, present the Executive Summary section | | User asks for a migration plan or scoping document | Run assessment, print report in chat | | User has already decided to migrate | Skip assessment — go straight to Migration Phases below |
To also save the report to disk, pass
output_path=f"pipeline-assessment-{SYNAPSE_WS}.md"togenerate_assessment_report(). ThePipelineAssessmentobjects it produces feed directly into the migration scripts in pipeline-orchestrator.md.
Migration Mode (Inline — No Script File Required)
Copilot performs the migration directly from the terminal. No Python files to save or run manually.
Ask the user for:
- Synapse workspace name (reuse from assessment if already run)
- Fabric workspace name
- Which pipelines to migrate — specific names, or
*for all - Optional name suffix to append to each pipeline in Fabric (e.g.
_migrated) — leave blank to keep the original name
Everything else is auto-discovered:
- Subscription ID and resource group via
az account show+az synapse workspace show - Fabric workspace ID via
GET /v1/workspacesfiltered by display name - Notebook GUIDs in Fabric via
GET /v1/workspaces/{wsId}/notebooks(required forSynapseNotebook → TridentNotebook) - Connection names in Fabric via
GET /v1/connections(when datasets reference linked services)
What is fully automated inline:
- ✅
SynapseNotebook→TridentNotebook— type rename, GUID lookup, removesparkPool/sessionConfiguration, fix timeout to 12h max - ✅ All compatible activity types — pass through with minor property adjustments
- ✅ Dataset inlining into activity
typeProperties - ✅ Global parameter expressions rewritten to
@pipeline().libraryVariables.<name> - ✅ Pipeline JSON assembly and deployment to Fabric via REST
Copilot checks before starting — will pause and report if:
- A notebook referenced by a
SynapseNotebookactivity does not exist in the Fabric workspace yet - A Fabric Connection is missing for a linked service referenced by dataset activities
Load pipeline-orchestrator.md for the complete inline runner.
Migration Phases (Execute in Order)
| Phase | Source | Target | Resource | |---|---|---|---| | Phase 0 | Synapse notebooks (referenced by pipeline activities) | Fabric Notebooks | synapse-migration skill | | Phase 1 | Synapse global parameters | Fabric Variable Library | global-parameters-to-variable-library.md | | Phase 2 | Synapse linked services | Fabric Connections | linked-service-to-connection.md | | Phase 3 | Synapse datasets | Inlined into activities | dataset-inlining.md | | Phase 4 | Synapse pipeline activities | Fabric pipeline activities | activity-mapping.md + notebook-activity-migration.md | | Phase 5 | Assembled pipeline JSON | Fabric DataPipeline item | pipeline-orchestrator.md | | Final | — | Validation | validation-testing.md |
Phase 0 must precede Phase 4: Fabric
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
89.0kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
74.3kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Scrapling
85.3k🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
crawl4ai
84.7kOpen-source web crawler and scraper for LLMs and AI agents: any website into clean, LLM-ready Markdown. Run it yourself, or use Crawl4AI Cloud with one key.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
