Synapse Migration
MicrosoftOfficialPublished by Microsoft
- Skill
- Workflow
- Software development
- MIT
- Low risk
- Has scripts
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The synapse-migration skill provides a structured, phased workflow for transitioning Synapse Analytics workspaces to Microsoft Fabric. It covers the migration of Spark items, Lake Databases, Linked Services, and Dedicated SQL Pool schema and stored procedures. The skill emphasizes a dependency-ordered approach, requiring gap assessment and explicit approval before conversion. It distinguishes between migrating to a Fabric Lakehouse (schema and code only, no data movement) and a Fabric Warehouse, while providing specific routing for dependent pipeline callers.
What it does
- Discovers and classifies Synapse workspace artifacts.
- Converts Dedicated SQL Pool schema and stored procedures to Spark SQL notebooks or Warehouse objects.
- Migrates Spark items, including notebooks and Spark Job Definitions, to Fabric equivalents.
- Maps Linked Services to Fabric Data Connections or OneLake Shortcuts.
- Manages the migration of approved dependent pipeline callers.
- Validates persisted definitions and artifacts against established contracts.
When to use it
- When migrating a full Synapse workspace to Microsoft Fabric.
- When converting Dedicated SQL Pool schema and procedures to a Lakehouse or Warehouse.
- When porting Spark pools, notebooks, or Spark Job Definitions to Fabric.
- When replacing Synapse Linked Services with Fabric-native connectivity.
Advantages
- Ensures dependency-ordered migration to maintain system integrity.
- Provides clear routing for different workload types (Lakehouse vs. Warehouse).
- Enforces strict validation and approval gates for behavior-changing decisions.
- Supports incremental migration rather than high-risk big-bang cutovers.
- Standardizes the conversion of T-SQL procedures to executable Spark SQL notebooks.
Usage examples
- “Migrate this Dedicated SQL Pool DACPAC to a Fabric Lakehouse and convert the procedures.”
- The agent will assess gaps, obtain approval for procedure-to-notebook mappings, create a migration manifest, convert schema/code artifacts, and validate the results.
- “Migrate this Dedicated SQL Pool to Fabric Warehouse.”
- The agent will assess DDL compatibility, remove unsupported distribution/index declarations, obtain provisioning consent, and prepare for potential data migration.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/microsoft/synapse-migration/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip synapse-migration.zip -d .agents/skills
Documentation by Microsoft
Telemetry — MANDATORY. Every
api.fabric.microsoft.comcall must carryx-ms-fabric-skill: synapse-migration(az rest:--headers "x-ms-fabric-skill=synapse-migration"), including every LRO poll,fabric_lroand retry. Snippets omit it — add it anyway.
OFFLINE LAKEHOUSE ARTIFACT FAST PATH — DECIDE FIRST. For a no-live-call request with complete supplied inputs and contracts, load only the fast path; do not load
migration-planning-reference.md,dedicated-pool-conversion.md, or implementation scripts. Use one generator for artifacts and final-byte hashes, then one verifier. Do not inspect generated files or run post-pass spot checks. For every optional non-null source default, setmissingValueBehaviortoUseSourceDefaultand restore that default before validation. Do not use this path for a Warehouse target; incomplete and large-procedure requests use their own routes.
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.
Treat a source Dedicated SQL Pool as read-only. Do not run source DDL, DML, stored procedures, or create sample objects.
Dedicated Pool-to-Lakehouse data movement is out of scope. Migrate schema and executable code artifacts only; do not copy source rows or run row-level/business-result equivalence queries. The separate Warehouse route may move data only from a separately approved restored export copy under its own consent gate and restored-source contract.
For Dedicated Pool-to-Lakehouse requests, complete gap assessment, explicit mapping approval, manifest creation, conversion, deployment, and validation in order. Read dedicated-pool-to-lakehouse.md once as the router, then load only the current phase reference.
Stored-procedure
1:1,N:1, andN:Nmappings never apply to views. Views remain schema objects; procedures become traceable Spark SQL notebooks with executable%%sqltransformation cells.Dependent ADF/Synapse callers are conditional scope, not automatic scope. Discover them during assessment, require a separate complete-closure approval, and migrate them only after notebook readiness. Route standalone pipeline requests to
pipeline-migration.Before executing a specialized Dedicated Pool workflow, read the matching contract in dedicated-pool-execution-contracts.md. Its validation, hashing, request-body, resume, and completion-language requirements are mandatory.
Keep Lakehouse and Warehouse paths separate. If the target is unclear, ask before loading path-specific resources. Lakehouse conversion never moves source rows; Warehouse data migration requires its own explicit consent gate and restored-source contract.
For a Fabric Warehouse target, explicitly state that the complete
DISTRIBUTIONandCLUSTERED COLUMNSTORE INDEXdeclarations are removed because Fabric manages distribution, storage, and indexing; a bare mention of either source clause is insufficient.Run setup DDL and CETAS only against the separately approved restored export copy after proving it is not the original production source.
Synapse Analytics to Microsoft Fabric Migration
Core Workflow
Discover the Synapse workspace and classify every source artifact.
Choose targets using workload-routing.md.
Assess gaps before conversion, including runtime, library, connectivity, T-SQL, security, and capacity constraints.
Obtain approval for behavior-changing decisions, target placement, and every stored-procedure-to-notebook mapping.
Create or update
migration-manifest.jsonand persist approval, per-object status, hashes, and checkpoints atomically.Convert and deploy in dependency order, loading only the current phase resource.
Validate persisted definitions and artifacts without executing generated notebooks or pipelines unless a separately approved workflow explicitly requires execution.
Report completed, blocked, skipped, and pending objects without exposing credentials or sensitive values.
For full-workspace orchestration, read migration-orchestrator.md. For a Dedicated Pool-to-Lakehouse migration, use dedicated-pool-to-lakehouse.md as the phase router. For a Warehouse target, load only the matching dw-* resource.
Scope Routing
| Request | Action | Load |
|---|---|---|
| Full Synapse workspace migration | Run phased discovery and migration | migration-orchestrator.md |
| Dedicated SQL Pool schema/code to Lakehouse | Run the strict assessment-to-validation workflow. For guidance-only notebook publication, explicitly state: "The stored procedures were converted from T-SQL to Spark SQL before publication." | dedicated-pool-to-lakehouse.md |
| Guidance-only Dedicated Pool incremental deployment hardening | Answer directly from the focused checklist; do not search scripts or load phase resources. State: "For columns with special characters, enable Delta columnMapping selectively and only with approval." | dedicated-pool-execution-contracts.md |
| Large or complex stored procedure | For a complete offline contract, read only the audit resource once, use one run-local generator and one verifier, do not inspect implementation scripts or generated outputs, and stop after successful verification | dedicated-pool-large-procedure-audit.md |
| Spark pool | Convert configuration and libraries to a Fabric Environment | spark-pool-migration.md |
| Lake Database or HMS | Create or bind the target Lakehouse | lake-database-migration.md or external-hms-migration.md |
| Notebook or Spark Job Definition | Port code, bindings, parameters, and runtime settings | spark-item-migration.md |
| Linked Service | Choose a Fabric Data Connection for external services or a OneLake Shortcut for ADLS Gen2/Blob | connectivity-migration.md |
| Approved dependent procedure callers | Run the internal closure-preserving sub-flow after notebook readback | dedicated-pool-dependent-pipelines.md |
| Standalone pipeline migration | Delegate | pipeline-migration |
| Dedicated SQL Pool to Fabric Warehouse | Run the source extraction, DDL compatibility, approval, optional data, security, and validation route | dw-source-and-extraction.md, then the matching dw-* phase resource |
| Standalone Fabric Warehouse administration | Delegate | sqldw-cli |
| Synapse Link | Use Fabric Mirroring; not covered here | — |
Always report the Lake Database/HMS phase. If none is discovered, mark it NotApplicable (none discovered) while retaining the required target Lakehouse binding.
Load References On Demand
Do not preload all files. Load only the references needed for the current phase:
| Need | Reference |
|---|---|
| Routing, phase order, API audiences, quick examples, troubleshooting, or post-migration handoff | workload-routing.md |
| Dedicated Pool execution variants and response contracts | dedicated-pool-execution-contracts.md |
| Dedicated Pool discovery | dedicated-pool-discovery.md |
| Gap assessment and mapping approval | dedicated-pool-gap-assessment.md |
| Procedure conversion and notebook shape | dedicated-pool-conversion.md |
| Schema/notebook deployment | dedicated-pool-deployment.md |
| Dedicated Pool validation | dedicated-pool-validation.md |
| Runtime/library compatibility | feature-parity.md and library-compatibility.md |
mssparkutils and connector refactoring | utility-api-mapping.md, connector-refactoring.md, and code-patterns.md |
| Capacity planning | capacity-sizing.md |
| Dedicated Pool-to-Warehouse source discovery and extraction | dw-source-and-extraction.md |
| Warehouse DDL compatibility and deployment | dw-ddl-compatibility.md |
| Separately approved Warehouse data migration | dw-data-migration.md |
| Warehouse security and validation | dw-security-validation.md |
| Validation, reporting, and production readiness | validation-testing.md, migration-report.md, and security-governance.md |
Use COMMON-CLI.md only for shared authentication and az rest mechanics not already covered by the phase resource. Use COMMON-CORE.md only for shared Fabric REST patterns.
Must
Preserve every stored-procedure input contract, source default, source decision, and approved target mapping.
Block conversion until gap dispositions, notebook names, dependency grouping, and target workspace placement are explicitly approved.
Use SqlPackage/DMVs for source discovery, Fabric REST for item management, and Fabric Livy statements for Lakehouse schema and Delta execution.
Run the maintained validators required by the selected execution contract; never replace them with ad hoc JSON or cell-shape checks.
Choose the Lakehouse or Warehouse target before loading implementation resources; never apply Warehouse data-movement rules to Lakehouse artifact conversion.
Before persisting any dependent-pipeline source definition, recursively inspect it for secret-bearing or uncertain properties; block the complete selected closure without writing the artifact or mutating a target when any are found.
In every dependent-pipeline response, including guidance-only and pre-approval explanations, state: "Use a
TridentNotebookactivity with exact target identitiestypeProperties.notebookIdandtypeProperties.workspaceId, and pass inputs throughtypeProperties.notebookParameters." Then state: "After deployment, read back each pipeline withPOST /v1/workspaces/{workspaceId}/items/{dataPipelineId}/getDefinitionand validate its canonical hash and structural bindings."For every Linked Service response, first state both replacement classes: Fabric Data Connections for external databases/services and OneLake Shortcuts for ADLS Gen2/Blob storage; then identify which class applies.
Replace
mssparkutilswithnotebookutils, Linked Services with the correct Fabric connection class, andspark.read.synapsesql()with a supported OneLake or JDBC pattern.Externalize workspace and item IDs through parameters or Variable Libraries.
Keep phase status concise, emit bounded heartbeats for long operations, and persist per-object evidence in the manifest.
Prefer
OneLake Shortcuts over copying data.
Fabric Environments for reproducible libraries and Spark settings.
Incremental, dependency-ordered migration over big-bang cutover.
Parameterized notebooks and Variable Libraries for environment promotion.
Lakehouse SQL Endpoint for compatible Serverless SQL Pool read workloads.
Avoid
Do not execute generated notebooks or pipelines as part of artifact migration.
Do not broaden a selected dependent-pipeline closure or route that internal sub-flow to
pipeline-migration.Do not use
sqlcmdagainst the target Fabric Warehouse; use the registered SQL endpoint tooling required by the Warehouse resource.Do not preserve Synapse distribution/storage hints, PolyBase DDL, Linked Service connection strings, or pool-level library installation patterns verbatim.
Do not use target notebooks to orchestrate the migration itself.
Do not hardcode workspace IDs, item IDs, credentials, connection strings, or environment-specific paths.
Examples
Prompt: "Migrate this Dedicated SQL Pool DACPAC to a Fabric Lakehouse and convert the procedures."
Response behavior: Assess gaps first, present and obtain approval for the complete procedure-to-notebook mapping and workspace placement, create the manifest, convert approved schema/code artifacts without moving source rows, validate persisted definitions, and report the resolved Lakehouse and artifact evidence.
Prompt: "Migrate this ADF pipeline to Fabric."
Response behavior: Route to pipeline-migration. Keep it here only when the pipeline is an explicitly approved dependent caller discovered inside an active Dedicated Pool-to-Lakehouse migration.
Prompt: "Migrate this Dedicated SQL Pool to Fabric Warehouse."
Response behavior: Keep this inside synapse-migration, assess DDL compatibility, remove unsupported distribution and columnstore declarations, obtain provisioning consent, and ask separately before any restored-source data migration.
For code transformations and edge cases, load workload-routing.md and the phase-specific resource rather than expanding the main instructions.
Files
- ATTRIBUTION.mdAdded by AutoGineer879 B
- LICENSELicence file added by AutoGineer1.1 KiB
- SKILL.md14.3 KiB
- apm.yml597 B
- references/dedicated-pool-execution-contracts.md14.5 KiB
- references/workload-routing.md6.0 KiB
- resources/capacity-sizing.md4.1 KiB
- resources/code-patterns.md8.4 KiB
- resources/connectivity-migration.md6.4 KiB
- resources/connector-refactoring.md13.8 KiB
- resources/dedicated-pool-conversion.md39.2 KiB
- resources/dedicated-pool-dependent-pipelines.md23.3 KiB
- resources/dedicated-pool-deployment.md20.0 KiB
- resources/dedicated-pool-discovery.md17.8 KiB
- resources/dedicated-pool-gap-assessment.md17.4 KiB
- resources/dedicated-pool-large-procedure-audit.md24.5 KiB
- resources/dedicated-pool-to-lakehouse.md17.9 KiB
- resources/dedicated-pool-validation.md17.2 KiB
- resources/dw-data-migration.md13.7 KiB
- resources/dw-ddl-compatibility.md9.4 KiB
- resources/dw-security-validation.md15.6 KiB
- resources/dw-source-and-extraction.md8.0 KiB
- resources/external-hms-migration.md20.2 KiB
- resources/feature-parity.md5.4 KiB
- resources/lake-database-migration.md34.8 KiB
- resources/library-compatibility.md7.2 KiB
- resources/migration-gotchas.md16.1 KiB
- resources/migration-orchestrator.md63.0 KiB
- resources/migration-planning-reference.md16.3 KiB
- resources/migration-report.md16.9 KiB
- resources/security-governance.md47.4 KiB
- resources/spark-item-migration.md19.2 KiB
- resources/spark-pool-migration.md16.3 KiB
- resources/utility-api-mapping.md5.4 KiB
- resources/validation-testing.md14.5 KiB
- scripts/Invoke-DedicatedPoolTool.ps1Script941 B
- scripts/dedicated-pool-tool/DedicatedPoolMessageSanitizer.csScript2.1 KiB
- scripts/dedicated-pool-tool/DedicatedPoolTool.csproj346 B
- scripts/dedicated-pool-tool/Program.csScript31.4 KiB
- scripts/dedicated_pool_runtime.pyScript116.9 KiB
- scripts/validate_dedicated_pool_spark.pyScript24.8 KiB
resources/dedicated-pool-to-lakehouse.md
Dedicated SQL Pool Schema and Code to Fabric Lakehouse
Migrate Synapse Dedicated SQL Pool metadata and executable logic to Delta Lake through CLI, REST, and Livy APIs. Source table data is not migrated.
Migration Phase Sequence (MANDATORY)
⛔ You MUST complete these phases in strict order. Do NOT skip phases or assume approval:
Phase 1: Discovery — Extract source metadata (tables, views, procedures, dependencies) per
dedicated-pool-discovery.mdPhase 1b: Gap Assessment (REQUIRED BEFORE CONVERSION) — Run compatibility check per
dedicated-pool-gap-assessment.mdto identify blockers, unsupported features, and migration risksPhase 1c: User Approval (REQUIRED) — Present mapping strategies (
1:1,N:1,N:N) and any recursively discovered ADF/Synapse procedure-caller closure, wait for explicit user approval, and record approval evidence in the manifestPhase 2: Conversion — Generate artifacts ONLY after gap assessment and user approval are complete
Phase 2b: Large-Procedure Audit — Audit coverage for complex procedures per
dedicated-pool-large-procedure-audit.mdPhase 3: Deployment — Present the frozen deployment plan, obtain explicit deployment approval, then execute DDL via Livy and publish notebooks via REST per
dedicated-pool-deployment.mdPhase 3b: Dependent Pipelines (CONDITIONAL) — After every referenced notebook passes persisted-definition readback, migrate exact bound procedure calls in the approved ADF/Synapse pipeline closure per
dedicated-pool-dependent-pipelines.mdPhase 4: Validation — Verify deployment success per
dedicated-pool-validation.md, including dependent pipeline evidence when Phase 3b isReady
If the user has NOT completed gap assessment (Phase 1b) or NOT provided explicit approval (Phase 1c), STOP and guide them through those phases first. Never skip to conversion without these gates.
Execution Contract
Use
scripts/Invoke-DedicatedPoolTool.ps1for DACPAC discovery, including a DACPAC packaged in a ZIP,scripts/validate_dedicated_pool_spark.pyfor the target-parser gate, andscripts/dedicated_pool_runtime.pyfor Fabric pagination, bounded LRO handling, transactional checkpoints, freeze verification, and portfolio planning. SQL-project compilation executes arbitrary MSBuild targets and is disabled by default. Prefer building the project in an isolated trusted environment and passing its DACPAC. Use-AllowTrustedProjectBuildonly after reviewing and explicitly trusting the project. Do not replace these maintained helpers with run-specific polling or manual JSON edits.Drive every migration run from dynamic source discovery and the approved compatibility report.
Generate target artifacts only from the approved feature-risk assessment and target design. After discovery, compare
1:1,N:1, andN:Nstored-procedure notebook strategies against the projected workspace item footprint. Do not generate notebooks until the user provides and approves the complete source-to-target mapping, target names, dependency grouping, and workspace placement. Generated notebooks are published outputs and are not used to orchestrate migration.Treat the source Dedicated Pool as read-only. Never add sample or synthetic data or create/alter/drop source objects, permissions, or security principals.
Do not execute source stored procedures or issue source DDL/DML. Limit source activity to metadata discovery and metadata-based validation. A requested source mutation belongs in a separate, explicitly scoped workflow and is never performed by this skill.
Do not export, stage, copy, upload, shortcut, transfer, or load source table rows. Do not generate or execute a data-migration plan.
Do not run row-count, aggregate, sample-hash, business-result, or other source-to-target data-equivalence queries. Data parity and cutover validation belong to a separately approved process outside this skill.
Use SqlPackage or source catalog queries for discovery.
Store converted schema and reusable logic as
.sql, stored-procedure logic as.ipynb, and all object mappings in a machine-readable migration manifest.Use Fabric REST APIs for workspace and Lakehouse lifecycle operations.
Use Fabric Livy sessions for schema execution and Fabric Notebook item definitions for stored-procedure deployment.
Validate source-to-target schema mappings, generated artifact syntax, notebook definitions, dependencies, and publication status without reading or comparing table rows.
Keep chat status phase-oriented and store detailed object results in the manifest and telemetry.
Status Reporting Contract
Keep the user informed throughout execution; do not wait until a phase ends to report progress.
Before each phase, print:
[Phase X][STARTED] action; next=expected operation.Report failed, blocked, or manual-review objects immediately. For successful objects, print one aggregate update at a bounded batch boundary (default every 10 objects) or after 60 seconds, whichever comes first.
For operations running longer than 30 seconds, print a heartbeat every 30-60 seconds with the current service state and elapsed time. Report state changes immediately. Do not repeatedly print an unchanged state more often than this interval.
After each phase, print completed, failed, skipped, and pending counts plus the next phase or approval gate.
On retry or recovery, print the failed operation, bounded retry action, checkpoint used, and whether duplicate writes are prevented.
Persist the latest status and per-object result in the migration manifest so execution can resume safely.
Never include passwords, access tokens, connection strings, or source row values in status output.
Example:
[Phase 3][20/45][PROGRESS] completed=19; failed=1; skipped=0; elapsed=4m12s; next=batch 21-30Phase Routing
| Phase | Action | Resource |
|---|---|---|
| 1 | Extract and classify source objects | dedicated-pool-discovery.md |
| 1b | Assess compatibility, workspace capacity, and procedure mapping options; obtain approval | dedicated-pool-gap-assessment.md |
| 1c | Validate source object/column contracts and isolate affected procedures | dedicated-pool-validation.md |
| 2 | Convert DDL and procedural logic | dedicated-pool-conversion.md |
| 2b | Audit large-procedure source-block coverage and package validated artifacts | dedicated-pool-large-procedure-audit.md |
| 3 | Create the Lakehouse and deploy schema/code artifacts | dedicated-pool-deployment.md |
| 3b | Migrate exact dependent procedure callers through the versioned internal contract | dedicated-pool-dependent-pipelines.md |
| 4 | Validate schema and generated artifacts | dedicated-pool-validation.md |
Phase 3b: Dependent Pipelines
Discover, normalize, compatibility-assess, and approve the recursive caller closure during Phases 1b-1c. Run transformation and deployment only after Phase 3 notebook publication and definition-readback checks succeed:
Follow dedicated-pool-dependent-pipelines.md for recursive ADF/Synapse normalization, activation states, schema 1.0, canonical handoffHash, exact activity binding, selective TridentNotebook transformation, child-before-parent deployment, readback validation, reporting, and hash-bound resume. This is an internal sub-flow owned by synapse-migration; do not delegate it to pipeline-migration. Never republish or execute procedure notebooks from this sub-flow.
Deployment order is strict: Lakehouse/schema objects, then converted procedure notebooks, then child pipelines, then parent pipelines. A Blocked bridge blocks only dependent pipeline deployment; report the blocker explicitly and continue validation of independently deployed schema/notebook artifacts.
Required Inputs
Synapse server and Dedicated Pool database
Source authentication mode and metadata permissions (
CONNECT,VIEW DEFINITION)Fabric workspace and target Lakehouse names
Scope: selected schemas/code objects or the full schema/code workload
Discover workspace and item IDs through Fabric APIs. Ask only for values that cannot be discovered.
Use a source identity limited to database CONNECT and VIEW DEFINITION whenever possible. This schema/code-only workflow does not require db_datareader. If the supplied identity has broader rights, the read-only execution contract still applies.
Ordered Workflow
Offline Lakehouse artifact fast path
When a Dedicated Pool-to-Lakehouse request supplies the complete discovered procedure inventory, Lakehouse target binding, approval dispositions, and manifest contract, and explicitly forbids live source or Fabric calls:
Treat the supplied inventory as the completed discovery input only when it includes procedure-to-table/view referenced-column contracts and referenced projections. Validate those contracts before generation; retain each failing procedure as
ManualReviewRequiredwith no notebook and continue only with independently eligible procedures. Do not load the discovery or gap-assessment resources unless an object or contract is ambiguous or unsupported.Read dedicated-pool-conversion.md exactly once, then use one reproducible generator and one independent verifier. The generator must write every schema, notebook, contract case, and manifest artifact in dependency order and compute manifest hashes only after final notebook bytes exist. The verifier must parse JSON/notebooks, check every supplied contract and hash, and invoke the maintained Spark parser only when its existing runtime is immediately available. Run generation, run verification, and stop on verification failure. The supplied inputs are the acceptance contract. Do not inspect unrelated repository implementation, manually create artifacts before the generator, or reread skill resources or generated files. Never install Java, Python packages, or another dependency, and never probe or switch among parser libraries. If the maintained parser runtime is unavailable, record that limitation after all deterministic verifier checks pass. Do not add hash-length checks, duplicate parse checks, post-generation edits, cleanup passes, or fallback-parser experiments.
Do not load deployment guidance for a conversion-only request. When the user also requests publication/readback guidance, read dedicated-pool-deployment.md only after all local artifacts exist. Read dedicated-pool-validation.md only when the requested report needs validation details not already present in the supplied contract. Do not perform those live operations in a local-only exercise.
Validate the local artifacts and return a concise phase summary; do not re-narrate the full supplied contract. Do not defer the manifest until after the narrative. Make the first completion sentence
Fabric Lakehouse <name>: generated notebooks contain executable translated Spark SQL in %%sql cells; no source rows were moved.Then report only discovery input, isolated blockers, compatibility, and validation evidence. Do not describe the result only as generated notebooks or transformation logic.
For live or partially specified migrations, use the full workflow below.
Authenticate Azure CLI and verify source and Fabric access.
Extract a DACPAC or query source catalog views.
Build an inventory, dependency graph, and T1-T4 complexity assessment.
Generate feature-wise
migration-gap-report.jsonandmigration-gap-report.mdfor all SQL Pool to Lakehouse capabilities. Report support level, likelihood, impact, overall risk, target pattern, and mapping cardinality. Use the discovered inventory and target workspace inventory to compare1:1,N:1, andN:Nprocedure-notebook mappings, projected item totals, headroom, names, dependency grouping, and workspace placement; then require the user to provide and explicitly approve the complete mapping. 4a. Before conversion, validate every discovered procedure-to-table/view object/column contract against the referenced object's discovered projection. Record each exact mismatch as an object-level finding. Mark only affected proceduresManualReviewRequired, generate no target notebook component for them, and keep unrelated procedures eligible when their own contracts and approvals pass. Do not invent a missing column, remove its reference, or redesign source logic implicitly.Convert only the approved target design. Generate parameterized Spark SQL Fabric notebooks according to the approved procedure mapping. A
1:1target retains the exact stored-proceduresourceName;N:1andN:Ntargets use explicitly approved names and collision-safe parameter namespaces. Preserve each procedure as an independent source decision and retain source-block-to-cell provenance across consolidated or shared notebooks. Apply the naming and bounded parameter contracts in dedicated-pool-conversion.md. For every T3/T4 procedure, every definition with at least 1,000 physical lines, and any otherwise complex procedure, generate the deterministic block ledger, retry only failed blocks within the declared limit, verify complete source coverage, and build the immutable package defined in dedicated-pool-large-procedure-audit.md. Do not convert stored-procedure logic to PySpark or the DataFrame API. 5a. Run the maintained target Spark parser gate over every schema/view SQL artifact and generated notebook. Then freeze the complete approved artifact set and resolved datamart/workspace/Lakehouse IDs intorun-context.json. Any parser failure, source-contract blocker, unresolved mapping, or post-freeze hash change blocks all Fabric mutation for that datamart.Resolve the target workspace and Lakehouse through read-only Fabric REST calls. Present the frozen artifact hash, exact workspace/Lakehouse, whether the Lakehouse will be created or reused, and every planned schema/view/Notebook create, update, or replacement. Record explicit deployment approval bound to that frozen plan before any Fabric mutation; a target or artifact-hash change invalidates approval and requires a new review.
Create a Livy session bound to the Lakehouse.
Plan Delta column compatibility against the incremental target inventory, then submit each approved schema object as one dependency-ordered Livy request through
deploy_schema_objects. Reuse only hash-matching successful checkpoints. Publish approved, compiled stored-procedure notebooks from validated file-backed JSON request bodies without executing them. For audited procedures, verify all package hashes first and publish exactly the packaged notebook bytes; record each request, LRO result, target ID, object timing, attempt, and readback result in the manifest.Compare source metadata with target schemas and validate generated code, source-block coverage, retry history, package integrity, dependencies, decoded persisted notebook definitions, exact Lakehouse bindings, and publication status.
Report completed, failed, skipped, and manual-review objects, including the disposition of every discovery gap and an explicit statement that data migration and data parity were not performed.
For multiple datamarts, require a portfolio JSON registry with one entry per datamart and unique workspace/Lakehouse target and artifact root. Record capacityId, workspace region, capacityRegion, current item count, planned notebook and non-notebook counts, reserved headroom, and the workspace item limit. Reject effective-region conflicts and projected item totals above the limit before mutation. Use dedicated_pool_runtime.py --dry-run with optional --datamart, --wave, or --resume-failed selectors before mutation. Evaluate workspace item limits per workspace, but batch remote Spark work by capacityId across workspaces that share capacity. A failed datamart becomes Quarantined; it does not change successful peer manifests or block independently promotable peers. Report aggregate elapsed and projected remaining seconds with success, failure, blocker, retry, and quarantine totals.
Apply the status reporting contract to all 10 steps. For batch operations, use the discovered object count as N; for service operations such as Livy startup, report service state and elapsed time until ready or failed.
Record phase telemetry with record_phase_telemetry: UTC start/end timestamps, duration, completed/failed/blocked/skipped counts, retry count, and token usage only when the host explicitly reports it. Persist tokenUsage: null with tokenUsageStatus: Unavailable instead of estimating a value from logs.
Never seed an empty or small source pool to test migration. Report the discovered source as-is; use target-side fixtures or isolated local tests when conversion testing needs representative data.
Approval Gates
Require explicit approval after the gap report and before conversion. The user must provide a procedure mapping strategy (1:1, N:1, or N:N) and the complete versioned source-to-target mapping, target names, workspace placement, and required operational headroom. Record per-object ManualReviewApproved decisions for every T4 redesign, unsupported parameter, behavior-changing conversion, consolidation/sharing decision, or approved exclusion before deployment.
After conversion, parser validation, and freeze, require a separate explicit deployment approval bound to the frozen artifact hash and exact target before creating a Lakehouse, opening a Livy session, executing DDL, or creating/updating Notebooks. Any target, mapping, planned operation, or artifact-hash change invalidates that approval. Also require artifact-specific approval before replacing target schema/code artifacts or source decommissioning. This skill cannot approve production cutover because it does not migrate or validate data.
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs Python
Security
What our scanner noticed· Low risk
- Instructions that use the network
- Scripts that your agent may run
This skill includes scripts that your agent may run. Read them before you use it.
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- Microsoft
- Publisher
- Microsoft (Official)
- Source
- microsoft/skills-for-fabric · skills/synapse-migration · commit f8fac11
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
- Also distributed in
- microsoft/skills-for-fabric
AutoGineer is not affiliated with or endorsed by Microsoft.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download synapse-migration.zip