[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-microsoft-synapse-migration":3,"mdc-p04vqe-key":37,"related-repo-microsoft-synapse-migration":3510,"related-org-microsoft-synapse-migration":3616},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":35,"mdContent":36},"synapse-migration","migrate Azure Synapse Spark workloads to Fabric","Port Azure Synapse Analytics Spark workloads to Microsoft Fabric. Translates mssparkutils calls to notebookutils (including the env→runtime namespace change), replaces Linked Services with Fabric Data Connections and OneLake Shortcuts. Covers Spark Pools, Lake Databases, Notebooks, and Spark Job Definitions. Use when the user wants to: (1) port Synapse Spark notebooks to Fabric Lakehouse or Spark Job Definitions, (2) replace mssparkutils or Linked Services in Synapse code. Triggers: \"migrate from synapse\", \"synapse to fabric\", \"mssparkutils to notebookutils\", \"synapse linked service replacement\", \"port synapse notebooks\", \"synapse workspace migration\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"microsoft","Microsoft","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fmicrosoft.png",[12,16,19,20,23],{"name":13,"slug":14,"type":15},"Azure","azure","tag",{"name":17,"slug":18,"type":15},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"Migration","migration",{"name":24,"slug":25,"type":15},"Microsoft Fabric","microsoft-fabric",858,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills-for-fabric","2026-07-31T05:54:58.050788",null,237,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":34},[],"A collection of skills and MCP systems to enable users of CLI, VSCode, Claude to operate over Microsoft Fabric","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills-for-fabric\u002Ftree\u002FHEAD\u002Fplugins\u002Ffabric-skills\u002Fskills\u002Fsynapse-migration","---\nname: synapse-migration\ndescription: >\n  Port Azure Synapse Analytics Spark workloads to Microsoft Fabric.\n  Translates mssparkutils calls to notebookutils (including the env→runtime namespace change),\n  replaces Linked Services with Fabric Data Connections and OneLake Shortcuts.\n  Covers Spark Pools, Lake Databases, Notebooks, and Spark Job Definitions.\n  Use when the user wants to:\n  (1) port Synapse Spark notebooks to Fabric Lakehouse or Spark Job Definitions,\n  (2) replace mssparkutils or Linked Services in Synapse code.\n  Triggers: \"migrate from synapse\", \"synapse to fabric\", \"mssparkutils to notebookutils\",\n  \"synapse linked service replacement\", \"port synapse notebooks\", \"synapse workspace migration\".\n---\n\n> **Update Check — ONCE PER SESSION (mandatory)**\n> The first time this skill is used in a session, run the **check-updates** skill before proceeding.\n> - **GitHub Copilot CLI \u002F VS Code**: invoke the `check-updates` skill.\n> - **Claude Code \u002F Cowork \u002F Cursor \u002F Windsurf \u002F Codex**: compare local vs remote package.json version.\n> - Skip if the check was already performed earlier in this session.\n\n> **CRITICAL NOTES**\n> 1. To find workspace details (including its ID) from a workspace name: list all workspaces, then use JMESPath filtering\n> 2. 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\n> 3. `mssparkutils` and `notebookutils` share the same API surface in most cases — the namespace is the primary change\n> 4. Linked Services have no direct REST API equivalent in Fabric — they are replaced by Data Connections (for external sources) and OneLake Shortcuts (for storage mounts)\n\n# Synapse Analytics → Microsoft Fabric Migration\n\n## Prerequisite Knowledge\n\nThese 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:\n\n- [COMMON-CORE.md](..\u002F..\u002Fcommon\u002FCOMMON-CORE.md) — General Fabric REST API patterns, authentication & token audiences, item discovery via JMESPath\n- [COMMON-CLI.md](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md) — `az rest` \u002F `az login` CLI patterns, authentication recipes\n- [SPARK-AUTHORING-CORE.md](..\u002F..\u002Fcommon\u002FSPARK-AUTHORING-CORE.md) — Notebook\u002Flakehouse creation (already covered in [spark-item-migration.md](resources\u002Fspark-item-migration.md) and [lake-database-migration.md](resources\u002Flake-database-migration.md))\n- [SQLDW-AUTHORING-CORE.md](..\u002F..\u002Fcommon\u002FSQLDW-AUTHORING-CORE.md) — Fabric Warehouse T-SQL (delegate to `sqldw-authoring-cli` skill)\n\n> **Auth, API endpoints, and item payloads are fully documented in this skill's own files.** The common docs above are fallback references only.\n\n---\n\n## Table of Contents\n\n| Topic | Reference |\n|---|---|\n| **Migration Orchestrator** | [migration-orchestrator.md](resources\u002Fmigration-orchestrator.md) |\n| API-Driven Migration Workflow | [§ API-Driven Migration Workflow](#api-driven-migration-workflow) |\n| Migration Workload Map | [§ Migration Workload Map](#migration-workload-map) |\n| Spark Pool → Environment Migration | [spark-pool-migration.md](resources\u002Fspark-pool-migration.md) |\n| Lake Database → Lakehouse Migration | [lake-database-migration.md](resources\u002Flake-database-migration.md) |\n| External Hive Metastore → Lakehouse Migration | [external-hms-migration.md](resources\u002Fexternal-hms-migration.md) |\n| Notebook & SJD Migration | [spark-item-migration.md](resources\u002Fspark-item-migration.md) |\n| Library Compatibility (Synapse vs. Fabric RT 1.3) | [library-compatibility.md](resources\u002Flibrary-compatibility.md) |\n| Connector Refactoring (Kusto, Cosmos DB, ADLS OAuth) | [connector-refactoring.md](resources\u002Fconnector-refactoring.md) |\n| `mssparkutils` → `notebookutils` API Mapping | [utility-api-mapping.md](resources\u002Futility-api-mapping.md) |\n| Linked Services → Data Connections \u002F Shortcuts | [connectivity-migration.md](resources\u002Fconnectivity-migration.md) |\n| Before\u002FAfter Code Patterns (incl. Catalog API gaps) | [code-patterns.md](resources\u002Fcode-patterns.md) |\n| Migration Report (with Fabric portal links) | [migration-report.md](resources\u002Fmigration-report.md) |\n| Migration Troubleshooting Guide | [migration-gotchas.md](resources\u002Fmigration-gotchas.md) |\n| Validation & Testing | [validation-testing.md](resources\u002Fvalidation-testing.md) |\n| Security & Governance (Production Readiness) | [security-governance.md](resources\u002Fsecurity-governance.md) |\n| T-SQL & Spark Configuration Differences | [§ T-SQL & Spark Configuration Differences](#t-sql--spark-configuration-differences) |\n| Capacity Sizing Reference | [§ Capacity Sizing Reference](#capacity-sizing-reference) |\n| Must \u002F Prefer \u002F Avoid | [§ Must \u002F Prefer \u002F Avoid](#must--prefer--avoid) |\n| Feature Parity Reference | [§ Feature Parity Reference](#feature-parity-reference) |\n| Migration Gotchas — Quick Reference | [§ Migration Gotchas](#migration-gotchas--quick-reference) + [migration-gotchas.md](resources\u002Fmigration-gotchas.md) |\n| Post-Migration: What's Next | [§ Post-Migration: What's Next](#post-migration-whats-next) |\n\n### Context Loading Guide\n\n> **IMPORTANT — Load only what you need.** Do NOT read all resource files upfront. Load the specific file for the phase you are executing:\n\n| When | Read This File | Lines |\n|---|---|---|\n| User asks to migrate a workspace (full orchestration) | [migration-orchestrator.md](resources\u002Fmigration-orchestrator.md) | ~1264 |\n| Phase 0: Spark Pools → Environments | [spark-pool-migration.md](resources\u002Fspark-pool-migration.md) | ~290 |\n| Phase 1: Databases → Lakehouses (built-in HMS) | [lake-database-migration.md](resources\u002Flake-database-migration.md) | ~574 |\n| Phase 1: Databases → Lakehouses (external HMS) | [external-hms-migration.md](resources\u002Fexternal-hms-migration.md) | ~388 |\n| Phase 2–3: Notebooks & SJDs | [spark-item-migration.md](resources\u002Fspark-item-migration.md) | ~326 |\n| Code refactoring (mssparkutils, connectors) | [utility-api-mapping.md](resources\u002Futility-api-mapping.md) + [connector-refactoring.md](resources\u002Fconnector-refactoring.md) + [code-patterns.md](resources\u002Fcode-patterns.md) | ~588 |\n| Post-migration validation | [validation-testing.md](resources\u002Fvalidation-testing.md) | ~487 |\n| Troubleshooting failures | [migration-gotchas.md](resources\u002Fmigration-gotchas.md) | ~225 |\n| Production security setup | [security-governance.md](resources\u002Fsecurity-governance.md) | ~926 |\n| Library version gaps | [library-compatibility.md](resources\u002Flibrary-compatibility.md) | ~106 |\n| Generating migration report | [migration-report.md](resources\u002Fmigration-report.md) | ~360 |\n| Capacity sizing & SKU planning | [capacity-sizing.md](resources\u002Fcapacity-sizing.md) | ~85 |\n| Feature parity matrix | [feature-parity.md](resources\u002Ffeature-parity.md) | ~65 |\n\n---\n\n## API-Driven Migration Workflow\n\nThis skill supports programmatic migration of Synapse Spark items via REST APIs (no UI-based Migration Assistant required).\n\n### Authentication\n\n| Target | Token Audience |\n|---|---|\n| Synapse ARM (management plane) | `https:\u002F\u002Fmanagement.azure.com` |\n| Synapse Data Plane | `https:\u002F\u002Fdev.azuresynapse.net` |\n| Fabric REST API | `https:\u002F\u002Fapi.fabric.microsoft.com` |\n\n> Use the token-acquisition recipe in [COMMON-CLI § Authentication Recipes](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#authentication-recipes) with the audiences above.\n\n### Migration Phases (Execute in Order)\n\n| Phase | Synapse Source | Fabric Target | Resource |\n|---|---|---|---|\n| Phase 0 | Spark Pool | Environment | [spark-pool-migration.md](resources\u002Fspark-pool-migration.md) |\n| Phase 1 | Lake Database (built-in HMS) | Lakehouse | [lake-database-migration.md](resources\u002Flake-database-migration.md) |\n| Phase 1 | External Hive Metastore | Lakehouse | [external-hms-migration.md](resources\u002Fexternal-hms-migration.md) |\n| Phase 1b | Ad-hoc `abfss:\u002F\u002F` storage paths | OneLake Shortcuts | [migration-orchestrator.md](resources\u002Fmigration-orchestrator.md) (migrate-and-modernize only) |\n| Phase 2 | Notebooks | Notebook | [spark-item-migration.md](resources\u002Fspark-item-migration.md) |\n| Phase 3 | Spark Job Definitions | SJD | [spark-item-migration.md](resources\u002Fspark-item-migration.md) |\n| Final | Validation & Testing | — | [validation-testing.md](resources\u002Fvalidation-testing.md) |\n| Optional | Security & Governance | — | [security-governance.md](resources\u002Fsecurity-governance.md) |\n\n> **Phase order matters**: Environments (Phase 0) must exist before notebooks\u002FSJDs can bind to them. Lakehouses (Phase 1) must exist before notebooks can bind to them (Phase 2).\n\n> For the full execution flow with sub-steps, decision points, lift-and-shift vs. modernize paths, and error recovery, see [migration-orchestrator.md](resources\u002Fmigration-orchestrator.md).\n\n### REST API Quick Reference\n\nAll Synapse and Fabric API endpoints with request\u002Fresponse examples are in [migration-orchestrator.md](resources\u002Fmigration-orchestrator.md) (Steps 2a–2e). Authentication tokens:\n\n| Target | Token Audience |\n|---|---|\n| Synapse ARM | `https:\u002F\u002Fmanagement.azure.com` |\n| Synapse Data Plane | `https:\u002F\u002Fdev.azuresynapse.net` |\n| Fabric REST API | `https:\u002F\u002Fapi.fabric.microsoft.com` |\n\n> **API docs**: [Synapse ARM](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Frest\u002Fapi\u002Fsynapse) · [Synapse Data Plane](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Frest\u002Fapi\u002Fsynapse\u002Fdata-plane) · [Fabric Items](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Frest\u002Fapi\u002Ffabric\u002Fcore\u002Fitems) · [Fabric Shortcuts](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Frest\u002Fapi\u002Ffabric\u002Fcore\u002Fonelake-shortcuts) · [Fabric Connections](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Frest\u002Fapi\u002Ffabric\u002Fcore\u002Fconnections) · [Fabric Environments](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Frest\u002Fapi\u002Ffabric\u002Fenvironment)\n\n---\n\n## Migration Workload Map\n\nUse this table to determine the correct Fabric target for each Synapse component:\n\n| Synapse Component | Fabric Target | Notes |\n|---|---|---|\n| **Spark Pool** (notebooks, jobs) | Fabric Spark (Lakehouse \u002F Notebooks \u002F SJD) | Starter Pool replaces on-demand pools for most workloads |\n| **Dedicated SQL Pool** | **Fabric Warehouse** | T-SQL surface area differences apply — see [§ T-SQL & Spark Configuration Differences](#t-sql--spark-configuration-differences). *Procedural migration guide not yet available — separate migration track. For T-SQL authoring, delegate to `sqldw-authoring-cli`.* |\n| **Serverless SQL Pool** | **Lakehouse SQL Endpoint** | Read-only Delta\u002FParquet queries; no DDL required |\n| **Synapse Pipelines** | **Fabric Data Pipelines** | Activity types, triggers, and expressions are broadly compatible. *Pipeline migration resource not yet available — separate migration track.* |\n| **Synapse Link for Cosmos DB \u002F SQL** | **Fabric Mirroring** | Native mirroring replaces the Synapse Link connector pattern. *Not covered by this skill.* |\n| **Linked Services** | **Data Connections** (external) \u002F **OneLake Shortcuts** (storage) | See [connectivity-migration.md](resources\u002Fconnectivity-migration.md) |\n| **Integration Datasets** | **Fabric Pipeline source\u002Fsink config** | Dataset definitions are inlined into pipeline activities in Fabric. *Not covered by this skill.* |\n| **Managed Virtual Networks** | **Fabric Managed Private Endpoints** | Configure in Fabric capacity settings |\n| **Synapse Studio** | **Fabric workspace** | All artifact types live in a single workspace with Git integration |\n\n### Decision Tree: Which Fabric Spark Workload?\n\n```text\nSynapse Spark workload\n├── Interactive notebook with data exploration → Fabric Notebook (attached to Lakehouse)\n├── Scheduled\u002Fproduction job → Spark Job Definition (SJD)\n├── T-SQL over files\u002FDelta → Lakehouse SQL Endpoint (no migration needed — just point to OneLake)\n└── Real-time ingest → Fabric Eventstream + Lakehouse\n```\n\n---\n\n## T-SQL & Spark Configuration Differences\n\nFor detailed T-SQL surface area gaps (PolyBase → `COPY INTO`, distribution hints, result set caching) and Spark configuration mappings (pools, `%%configure`, runtime versions), see [feature-parity.md](resources\u002Ffeature-parity.md).\n\n> **Key actions**: Remove `DISTRIBUTION = HASH(col)` hints, replace `CREATE EXTERNAL TABLE` with `COPY INTO`, replace `spark.read.synapsesql()` with OneLake shortcuts or JDBC. Delegate T-SQL authoring to `sqldw-authoring-cli`.\n\n---\n\n## Capacity Sizing Reference\n\nFor Synapse pool → Fabric SKU mapping tables, sizing decision guide, and cost model comparison, see [capacity-sizing.md](resources\u002Fcapacity-sizing.md).\n\n> **Quick guide**: Dev\u002Ftest = F8–F16 with Starter Pool; standard production = F32–F64; enterprise = F128+. Use Fabric Trial (free F64, 60 days) for migration validation.\n\n---\n\n## Must \u002F Prefer \u002F Avoid\n\n### MUST DO\n- **Replace all `mssparkutils` imports with `notebookutils`** — see [utility-api-mapping.md](resources\u002Futility-api-mapping.md) for the complete namespace table\n- **Replace all Linked Services** with Fabric Data Connections (for external databases\u002Fservices) or OneLake Shortcuts (for ADLS Gen2 \u002F Blob storage mounts) — see [connectivity-migration.md](resources\u002Fconnectivity-migration.md)\n- **Replace `spark.read.synapsesql()`** with Lakehouse shortcut reads or JDBC connections to the Fabric Warehouse SQL endpoint\n- **Re-test all notebooks** after migration against the target Fabric Runtime version — Spark minor version differences can surface deprecated API warnings\n- **Externalize all workspace\u002Fitem IDs** — never hardcode; use pipeline parameters or [Variable Libraries](#variable-library-for-environment-promotion)\n- **Replace pool-level library installs** with Fabric Environments attached at the workspace or notebook level\n\n### PREFER\n- **OneLake Shortcuts over full data copies** — mount existing ADLS Gen2 containers as shortcuts rather than re-ingesting data during migration\n- **Fabric Starter Pool** for dev\u002Ftest migrations — eliminates pool warm-up wait time inherent in Synapse on-demand pools\n- **Lakehouse SQL Endpoint** as a drop-in for Serverless SQL Pool reads — point existing consumers at the endpoint with minimal query changes\n- **Medallion architecture** for migrated data — align with Bronze\u002FSilver\u002FGold patterns (see `e2e-medallion-architecture` skill)\n- **Incremental migration** — migrate and validate workload by workload rather than performing a big-bang cutover\n- **Parameterized notebooks** to allow environment promotion (dev → test → prod) without code changes\n\n### AVOID\n- **Do not copy-paste PolyBase `CREATE EXTERNAL TABLE` DDL** into Fabric Warehouse — rewrite as `COPY INTO` or use Lakehouse for external data access\n- **Do not assume Synapse Linked Service connection strings are reusable** — credentials and endpoints must be reconfigured as Fabric Data Connections\n- **Do not install libraries in notebook cells** (`%pip install` at runtime) for production workloads — use Fabric Environments for reproducible, versioned library management\n- **Do not migrate Dedicated SQL Pool distribution hints** (`HASH`, `ROUND_ROBIN`, `REPLICATE`) verbatim — remove them; Fabric Warehouse handles distribution automatically\n- **Do not use `wasb:\u002F\u002F` or `abfss:\u002F\u002Fcontainer@storageaccount.dfs.core.windows.net\u002F` paths** as primary data paths — migrate data access to OneLake `abfss:\u002F\u002Fworkspace@onelake.dfs.fabric.microsoft.com\u002F` paths\n\n---\n\n## Examples\n\nSee [code-patterns.md](resources\u002Fcode-patterns.md) for full before\u002Fafter examples. Key quick references:\n\n**`mssparkutils.env` → `notebookutils.runtime`**\n\n```python\n# Synapse\nworkspace = mssparkutils.env.getWorkspaceName()\n\n# Fabric\nworkspace = notebookutils.runtime.context[\"workspaceName\"]\n```\n\n**Linked Service credential → Key Vault secret**\n\n```python\n# Synapse\nconn = mssparkutils.credentials.getConnectionStringOrCreds(\"MyLinkedService\")\n\n# Fabric\nconn = notebookutils.credentials.getSecret(\"https:\u002F\u002Fmyvault.vault.azure.net\u002F\", \"my-secret\")\n```\n\n**Dedicated SQL Pool DDL → Fabric Warehouse DDL**\n\n```sql\n-- Synapse (remove distribution hints)\nCREATE TABLE dbo.Fact (...) WITH (DISTRIBUTION = HASH(id), CLUSTERED COLUMNSTORE INDEX);\n\n-- Fabric Warehouse\nCREATE TABLE dbo.Fact (...);\n```\n\n---\n\n## Feature Parity Reference\n\nFull Synapse → Fabric feature matrix (28 features), T-SQL surface area gaps, and Spark configuration differences are in [feature-parity.md](resources\u002Ffeature-parity.md).\n\n> **Key gaps** (⚠️\u002F❌): `spark.read.synapsesql()` replaced by JDBC\u002Fshortcuts · Linked Services redesigned as Data Connections\u002FShortcuts · External HMS partial (migrate as shortcuts) · `mssparkutils.env` renamed to `notebookutils.runtime` · Result set caching ❌ · Workload management ❌ · PolyBase → `COPY INTO`\n\n---\n\n## Migration Gotchas — Quick Reference\n\nThe full troubleshooting guide with code examples and multi-option resolutions is in [migration-gotchas.md](resources\u002Fmigration-gotchas.md). This summary surfaces the key issues for quick scanning during migration:\n\n| # | Flag ID | Issue | Severity | Blocks? | Resolution Summary |\n|---|---|---|---|---|---|\n| G1 | `SYNAPSESQL_NO_EQUIVALENT` | `spark.read.synapsesql()` has no Fabric equivalent | High | Yes | Replace with OneLake shortcut read, Warehouse JDBC, or Data Pipeline |\n| G2 | `LIBRARY_VERSION_CONFLICT` | Custom library version conflicts with Fabric Runtime | Medium | Maybe | Pin compatible version in Environment, or find Fabric-native alternative |\n| G3 | `DELTA_PROTOCOL_MISMATCH` | Delta protocol version incompatibility | High | Yes | Rewrite table with matching protocol (`delta.minReaderVersion`\u002F`minWriterVersion`) |\n| G4 | `SECURITY_MODEL_INCOMPATIBLE` | Synapse managed identity \u002F IP firewall not portable | Medium | Yes | Reconfigure as Workspace Identity + Fabric Managed Private Endpoints |\n| G5 | `GPU_POOL_UNSUPPORTED` | GPU-accelerated Spark pools not available in Fabric | High | Yes | Migration blocker — keep workload in Synapse or use Azure ML |\n| G6 | `DOTNET_SPARK_UNSUPPORTED` | .NET for Spark (C#\u002FF# SJDs) not supported | High | Yes | Migration blocker — rewrite in PySpark or keep in Synapse |\n| G7 | `NULLABLE_POOL_REFERENCE` | `bigDataPool`\u002F`targetBigDataPool` field is `null` (not missing) — causes `NoneType` crash | Medium | No | Use `(x.get(\"bigDataPool\") or {}).get(...)` pattern |\n| G8 | `SESSION_CONFIG_IGNORED` | Some `%%configure` keys silently ignored in Fabric | Low | No | Remove unsupported keys; use Environment for pool-level config |\n| G9 | `SHORTCUT_CONNECTION_FAILED` | ADLS shortcut creation fails (connection\u002Fpermission) | High | Partial | Verify connection credential type (Key > WorkspaceIdentity > OAuth2) and RBAC |\n\n---\n\n## Post-Migration: What's Next\n\nAfter completing Phases 0–3 and validation, hand off to these companion skills for ongoing operations:\n\n### Agentic Exploration Workflow\n\nOnce data has landed in Fabric Lakehouses, use this sequence to validate and explore:\n\n1. **Discover** → List schemas, tables, and row counts via Lakehouse SQL Endpoint (`sqldw-consumption-cli`)\n2. **Sample** → `SELECT TOP 5` on migrated tables to verify data integrity\n3. **Validate** → Run validation checks from [validation-testing.md](resources\u002Fvalidation-testing.md) (V1–V6)\n4. **Explore** → Write Spark or T-SQL queries against migrated data using `spark-consumption-cli` or `sqldw-consumption-cli`\n5. **Build** → Create Gold-layer aggregations with `e2e-medallion-architecture` (Bronze → Silver → Gold)\n6. **Consume** → Build semantic models and reports with `semantic-model-authoring`\n\n### Companion Skill Cross-References\n\n| Post-Migration Task | Skill | When to Use |\n|---|---|---|\n| Interactive Lakehouse SQL queries | `sqldw-consumption-cli` | Exploring migrated data via SQL Endpoint |\n| Interactive PySpark exploration | `spark-consumption-cli` | Ad-hoc Spark queries on migrated Lakehouses |\n| Notebook & SJD authoring (new) | `spark-authoring-cli` | Creating new Spark items post-migration |\n| Medallion architecture build-out | `e2e-medallion-architecture` | Structuring Bronze\u002FSilver\u002FGold after lift-and-shift |\n| Warehouse performance monitoring | `sqldw-operations-cli` | Diagnosing slow queries on Fabric Warehouse |\n| Semantic model creation | `semantic-model-authoring` | Building Power BI models over migrated data |\n| Report consumption & DAX | `fabriciq` | Querying existing semantic models |\n| KQL analytics | `eventhouse-authoring-cli` \u002F `eventhouse-consumption-cli` | If migrating real-time workloads to Eventhouse |\n\n### Variable Library for Environment Promotion\n\nAfter migration, avoid hardcoded workspace\u002Fitem IDs by centralizing configuration in a **Variable Library** item:\n\n```python\n# Read config from Variable Library — works in notebooks\nlib = notebookutils.variableLibrary.getLibrary(\"MigrationConfig\")\nlakehouse_name = lib.lakehouse_name\nworkspace_id = lib.workspace_id\n\n# ❌ WRONG — .get() does not exist\n# notebookutils.variableLibrary.get(\"MigrationConfig\", \"lakehouse_name\")\n```\n\n- Use **Value Sets** (`valueSets\u002Fdev.json`, `valueSets\u002Fprod.json`) to promote across environments without code changes\n- Boolean values are returned as strings — compare with `.lower() == \"true\"`, not `bool()`\n- In Data Pipelines, reference via `@pipeline().libraryVariables.\u003Cname>` (not `@variables()`)\n- Full Variable Library patterns → see [common\u002Fnotebook-authoring\u002Fcontext-and-params.md § Variable Library](..\u002F..\u002Fcommon\u002Fnotebook-authoring\u002Fcontext-and-params.md#variable-library)\n",{"data":38,"body":39},{"name":4,"description":6},{"type":40,"children":41},"root",[42,105,154,161,168,180,267,280,284,290,709,716,729,1030,1033,1038,1043,1049,1122,1138,1144,1382,1395,1409,1415,1426,1492,1552,1555,1560,1565,1849,1855,1867,1870,1875,1901,1951,1954,1959,1969,1982,1985,1990,1996,2092,2098,2167,2173,2293,2296,2302,2312,2331,2388,2396,2440,2448,2496,2499,2504,2514,2553,2556,2561,2572,3000,3003,3008,3013,3019,3024,3132,3138,3344,3350,3362,3426,3504],{"type":43,"tag":44,"props":45,"children":46},"element","blockquote",{},[47,67],{"type":43,"tag":48,"props":49,"children":50},"p",{},[51,58,60,65],{"type":43,"tag":52,"props":53,"children":54},"strong",{},[55],{"type":56,"value":57},"text","Update Check — ONCE PER SESSION (mandatory)",{"type":56,"value":59},"\nThe first time this skill is used in a session, run the ",{"type":43,"tag":52,"props":61,"children":62},{},[63],{"type":56,"value":64},"check-updates",{"type":56,"value":66}," skill before proceeding.",{"type":43,"tag":68,"props":69,"children":70},"ul",{},[71,90,100],{"type":43,"tag":72,"props":73,"children":74},"li",{},[75,80,82,88],{"type":43,"tag":52,"props":76,"children":77},{},[78],{"type":56,"value":79},"GitHub Copilot CLI \u002F VS Code",{"type":56,"value":81},": invoke the ",{"type":43,"tag":83,"props":84,"children":86},"code",{"className":85},[],[87],{"type":56,"value":64},{"type":56,"value":89}," skill.",{"type":43,"tag":72,"props":91,"children":92},{},[93,98],{"type":43,"tag":52,"props":94,"children":95},{},[96],{"type":56,"value":97},"Claude Code \u002F Cowork \u002F Cursor \u002F Windsurf \u002F Codex",{"type":56,"value":99},": compare local vs remote package.json version.",{"type":43,"tag":72,"props":101,"children":102},{},[103],{"type":56,"value":104},"Skip if the check was already performed earlier in this session.",{"type":43,"tag":44,"props":106,"children":107},{},[108,116],{"type":43,"tag":48,"props":109,"children":110},{},[111],{"type":43,"tag":52,"props":112,"children":113},{},[114],{"type":56,"value":115},"CRITICAL NOTES",{"type":43,"tag":117,"props":118,"children":119},"ol",{},[120,125,130,149],{"type":43,"tag":72,"props":121,"children":122},{},[123],{"type":56,"value":124},"To find workspace details (including its ID) from a workspace name: list all workspaces, then use JMESPath filtering",{"type":43,"tag":72,"props":126,"children":127},{},[128],{"type":56,"value":129},"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",{"type":43,"tag":72,"props":131,"children":132},{},[133,139,141,147],{"type":43,"tag":83,"props":134,"children":136},{"className":135},[],[137],{"type":56,"value":138},"mssparkutils",{"type":56,"value":140}," and ",{"type":43,"tag":83,"props":142,"children":144},{"className":143},[],[145],{"type":56,"value":146},"notebookutils",{"type":56,"value":148}," share the same API surface in most cases — the namespace is the primary change",{"type":43,"tag":72,"props":150,"children":151},{},[152],{"type":56,"value":153},"Linked Services have no direct REST API equivalent in Fabric — they are replaced by Data Connections (for external sources) and OneLake Shortcuts (for storage mounts)",{"type":43,"tag":155,"props":156,"children":158},"h1",{"id":157},"synapse-analytics-microsoft-fabric-migration",[159],{"type":56,"value":160},"Synapse Analytics → Microsoft Fabric Migration",{"type":43,"tag":162,"props":163,"children":165},"h2",{"id":164},"prerequisite-knowledge",[166],{"type":56,"value":167},"Prerequisite Knowledge",{"type":43,"tag":48,"props":169,"children":170},{},[171,173,178],{"type":56,"value":172},"These companion documents provide general Fabric REST patterns. ",{"type":43,"tag":52,"props":174,"children":175},{},[176],{"type":56,"value":177},"Do NOT read them upfront",{"type":56,"value":179}," — reference only when a specific phase requires a pattern not already covered in this skill's resource files:",{"type":43,"tag":68,"props":181,"children":182},{},[183,195,222,248],{"type":43,"tag":72,"props":184,"children":185},{},[186,193],{"type":43,"tag":187,"props":188,"children":190},"a",{"href":189},"..\u002F..\u002Fcommon\u002FCOMMON-CORE.md",[191],{"type":56,"value":192},"COMMON-CORE.md",{"type":56,"value":194}," — General Fabric REST API patterns, authentication & token audiences, item discovery via JMESPath",{"type":43,"tag":72,"props":196,"children":197},{},[198,204,206,212,214,220],{"type":43,"tag":187,"props":199,"children":201},{"href":200},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md",[202],{"type":56,"value":203},"COMMON-CLI.md",{"type":56,"value":205}," — ",{"type":43,"tag":83,"props":207,"children":209},{"className":208},[],[210],{"type":56,"value":211},"az rest",{"type":56,"value":213}," \u002F ",{"type":43,"tag":83,"props":215,"children":217},{"className":216},[],[218],{"type":56,"value":219},"az login",{"type":56,"value":221}," CLI patterns, authentication recipes",{"type":43,"tag":72,"props":223,"children":224},{},[225,231,233,239,240,246],{"type":43,"tag":187,"props":226,"children":228},{"href":227},"..\u002F..\u002Fcommon\u002FSPARK-AUTHORING-CORE.md",[229],{"type":56,"value":230},"SPARK-AUTHORING-CORE.md",{"type":56,"value":232}," — Notebook\u002Flakehouse creation (already covered in ",{"type":43,"tag":187,"props":234,"children":236},{"href":235},"resources\u002Fspark-item-migration.md",[237],{"type":56,"value":238},"spark-item-migration.md",{"type":56,"value":140},{"type":43,"tag":187,"props":241,"children":243},{"href":242},"resources\u002Flake-database-migration.md",[244],{"type":56,"value":245},"lake-database-migration.md",{"type":56,"value":247},")",{"type":43,"tag":72,"props":249,"children":250},{},[251,257,259,265],{"type":43,"tag":187,"props":252,"children":254},{"href":253},"..\u002F..\u002Fcommon\u002FSQLDW-AUTHORING-CORE.md",[255],{"type":56,"value":256},"SQLDW-AUTHORING-CORE.md",{"type":56,"value":258}," — Fabric Warehouse T-SQL (delegate to ",{"type":43,"tag":83,"props":260,"children":262},{"className":261},[],[263],{"type":56,"value":264},"sqldw-authoring-cli",{"type":56,"value":266}," skill)",{"type":43,"tag":44,"props":268,"children":269},{},[270],{"type":43,"tag":48,"props":271,"children":272},{},[273,278],{"type":43,"tag":52,"props":274,"children":275},{},[276],{"type":56,"value":277},"Auth, API endpoints, and item payloads are fully documented in this skill's own files.",{"type":56,"value":279}," The common docs above are fallback references only.",{"type":43,"tag":281,"props":282,"children":283},"hr",{},[],{"type":43,"tag":162,"props":285,"children":287},{"id":286},"table-of-contents",[288],{"type":56,"value":289},"Table of Contents",{"type":43,"tag":291,"props":292,"children":293},"table",{},[294,313],{"type":43,"tag":295,"props":296,"children":297},"thead",{},[298],{"type":43,"tag":299,"props":300,"children":301},"tr",{},[302,308],{"type":43,"tag":303,"props":304,"children":305},"th",{},[306],{"type":56,"value":307},"Topic",{"type":43,"tag":303,"props":309,"children":310},{},[311],{"type":56,"value":312},"Reference",{"type":43,"tag":314,"props":315,"children":316},"tbody",{},[317,338,355,372,389,404,421,436,453,470,499,516,533,550,567,584,601,618,635,652,669,692],{"type":43,"tag":299,"props":318,"children":319},{},[320,329],{"type":43,"tag":321,"props":322,"children":323},"td",{},[324],{"type":43,"tag":52,"props":325,"children":326},{},[327],{"type":56,"value":328},"Migration Orchestrator",{"type":43,"tag":321,"props":330,"children":331},{},[332],{"type":43,"tag":187,"props":333,"children":335},{"href":334},"resources\u002Fmigration-orchestrator.md",[336],{"type":56,"value":337},"migration-orchestrator.md",{"type":43,"tag":299,"props":339,"children":340},{},[341,346],{"type":43,"tag":321,"props":342,"children":343},{},[344],{"type":56,"value":345},"API-Driven Migration Workflow",{"type":43,"tag":321,"props":347,"children":348},{},[349],{"type":43,"tag":187,"props":350,"children":352},{"href":351},"#api-driven-migration-workflow",[353],{"type":56,"value":354},"§ API-Driven Migration Workflow",{"type":43,"tag":299,"props":356,"children":357},{},[358,363],{"type":43,"tag":321,"props":359,"children":360},{},[361],{"type":56,"value":362},"Migration Workload Map",{"type":43,"tag":321,"props":364,"children":365},{},[366],{"type":43,"tag":187,"props":367,"children":369},{"href":368},"#migration-workload-map",[370],{"type":56,"value":371},"§ Migration Workload Map",{"type":43,"tag":299,"props":373,"children":374},{},[375,380],{"type":43,"tag":321,"props":376,"children":377},{},[378],{"type":56,"value":379},"Spark Pool → Environment Migration",{"type":43,"tag":321,"props":381,"children":382},{},[383],{"type":43,"tag":187,"props":384,"children":386},{"href":385},"resources\u002Fspark-pool-migration.md",[387],{"type":56,"value":388},"spark-pool-migration.md",{"type":43,"tag":299,"props":390,"children":391},{},[392,397],{"type":43,"tag":321,"props":393,"children":394},{},[395],{"type":56,"value":396},"Lake Database → Lakehouse Migration",{"type":43,"tag":321,"props":398,"children":399},{},[400],{"type":43,"tag":187,"props":401,"children":402},{"href":242},[403],{"type":56,"value":245},{"type":43,"tag":299,"props":405,"children":406},{},[407,412],{"type":43,"tag":321,"props":408,"children":409},{},[410],{"type":56,"value":411},"External Hive Metastore → Lakehouse Migration",{"type":43,"tag":321,"props":413,"children":414},{},[415],{"type":43,"tag":187,"props":416,"children":418},{"href":417},"resources\u002Fexternal-hms-migration.md",[419],{"type":56,"value":420},"external-hms-migration.md",{"type":43,"tag":299,"props":422,"children":423},{},[424,429],{"type":43,"tag":321,"props":425,"children":426},{},[427],{"type":56,"value":428},"Notebook & SJD Migration",{"type":43,"tag":321,"props":430,"children":431},{},[432],{"type":43,"tag":187,"props":433,"children":434},{"href":235},[435],{"type":56,"value":238},{"type":43,"tag":299,"props":437,"children":438},{},[439,444],{"type":43,"tag":321,"props":440,"children":441},{},[442],{"type":56,"value":443},"Library Compatibility (Synapse vs. Fabric RT 1.3)",{"type":43,"tag":321,"props":445,"children":446},{},[447],{"type":43,"tag":187,"props":448,"children":450},{"href":449},"resources\u002Flibrary-compatibility.md",[451],{"type":56,"value":452},"library-compatibility.md",{"type":43,"tag":299,"props":454,"children":455},{},[456,461],{"type":43,"tag":321,"props":457,"children":458},{},[459],{"type":56,"value":460},"Connector Refactoring (Kusto, Cosmos DB, ADLS OAuth)",{"type":43,"tag":321,"props":462,"children":463},{},[464],{"type":43,"tag":187,"props":465,"children":467},{"href":466},"resources\u002Fconnector-refactoring.md",[468],{"type":56,"value":469},"connector-refactoring.md",{"type":43,"tag":299,"props":471,"children":472},{},[473,490],{"type":43,"tag":321,"props":474,"children":475},{},[476,481,483,488],{"type":43,"tag":83,"props":477,"children":479},{"className":478},[],[480],{"type":56,"value":138},{"type":56,"value":482}," → ",{"type":43,"tag":83,"props":484,"children":486},{"className":485},[],[487],{"type":56,"value":146},{"type":56,"value":489}," API Mapping",{"type":43,"tag":321,"props":491,"children":492},{},[493],{"type":43,"tag":187,"props":494,"children":496},{"href":495},"resources\u002Futility-api-mapping.md",[497],{"type":56,"value":498},"utility-api-mapping.md",{"type":43,"tag":299,"props":500,"children":501},{},[502,507],{"type":43,"tag":321,"props":503,"children":504},{},[505],{"type":56,"value":506},"Linked Services → Data Connections \u002F Shortcuts",{"type":43,"tag":321,"props":508,"children":509},{},[510],{"type":43,"tag":187,"props":511,"children":513},{"href":512},"resources\u002Fconnectivity-migration.md",[514],{"type":56,"value":515},"connectivity-migration.md",{"type":43,"tag":299,"props":517,"children":518},{},[519,524],{"type":43,"tag":321,"props":520,"children":521},{},[522],{"type":56,"value":523},"Before\u002FAfter Code Patterns (incl. Catalog API gaps)",{"type":43,"tag":321,"props":525,"children":526},{},[527],{"type":43,"tag":187,"props":528,"children":530},{"href":529},"resources\u002Fcode-patterns.md",[531],{"type":56,"value":532},"code-patterns.md",{"type":43,"tag":299,"props":534,"children":535},{},[536,541],{"type":43,"tag":321,"props":537,"children":538},{},[539],{"type":56,"value":540},"Migration Report (with Fabric portal links)",{"type":43,"tag":321,"props":542,"children":543},{},[544],{"type":43,"tag":187,"props":545,"children":547},{"href":546},"resources\u002Fmigration-report.md",[548],{"type":56,"value":549},"migration-report.md",{"type":43,"tag":299,"props":551,"children":552},{},[553,558],{"type":43,"tag":321,"props":554,"children":555},{},[556],{"type":56,"value":557},"Migration Troubleshooting Guide",{"type":43,"tag":321,"props":559,"children":560},{},[561],{"type":43,"tag":187,"props":562,"children":564},{"href":563},"resources\u002Fmigration-gotchas.md",[565],{"type":56,"value":566},"migration-gotchas.md",{"type":43,"tag":299,"props":568,"children":569},{},[570,575],{"type":43,"tag":321,"props":571,"children":572},{},[573],{"type":56,"value":574},"Validation & Testing",{"type":43,"tag":321,"props":576,"children":577},{},[578],{"type":43,"tag":187,"props":579,"children":581},{"href":580},"resources\u002Fvalidation-testing.md",[582],{"type":56,"value":583},"validation-testing.md",{"type":43,"tag":299,"props":585,"children":586},{},[587,592],{"type":43,"tag":321,"props":588,"children":589},{},[590],{"type":56,"value":591},"Security & Governance (Production Readiness)",{"type":43,"tag":321,"props":593,"children":594},{},[595],{"type":43,"tag":187,"props":596,"children":598},{"href":597},"resources\u002Fsecurity-governance.md",[599],{"type":56,"value":600},"security-governance.md",{"type":43,"tag":299,"props":602,"children":603},{},[604,609],{"type":43,"tag":321,"props":605,"children":606},{},[607],{"type":56,"value":608},"T-SQL & Spark Configuration Differences",{"type":43,"tag":321,"props":610,"children":611},{},[612],{"type":43,"tag":187,"props":613,"children":615},{"href":614},"#t-sql--spark-configuration-differences",[616],{"type":56,"value":617},"§ T-SQL & Spark Configuration Differences",{"type":43,"tag":299,"props":619,"children":620},{},[621,626],{"type":43,"tag":321,"props":622,"children":623},{},[624],{"type":56,"value":625},"Capacity Sizing Reference",{"type":43,"tag":321,"props":627,"children":628},{},[629],{"type":43,"tag":187,"props":630,"children":632},{"href":631},"#capacity-sizing-reference",[633],{"type":56,"value":634},"§ Capacity Sizing Reference",{"type":43,"tag":299,"props":636,"children":637},{},[638,643],{"type":43,"tag":321,"props":639,"children":640},{},[641],{"type":56,"value":642},"Must \u002F Prefer \u002F Avoid",{"type":43,"tag":321,"props":644,"children":645},{},[646],{"type":43,"tag":187,"props":647,"children":649},{"href":648},"#must--prefer--avoid",[650],{"type":56,"value":651},"§ Must \u002F Prefer \u002F Avoid",{"type":43,"tag":299,"props":653,"children":654},{},[655,660],{"type":43,"tag":321,"props":656,"children":657},{},[658],{"type":56,"value":659},"Feature Parity Reference",{"type":43,"tag":321,"props":661,"children":662},{},[663],{"type":43,"tag":187,"props":664,"children":666},{"href":665},"#feature-parity-reference",[667],{"type":56,"value":668},"§ Feature Parity Reference",{"type":43,"tag":299,"props":670,"children":671},{},[672,677],{"type":43,"tag":321,"props":673,"children":674},{},[675],{"type":56,"value":676},"Migration Gotchas — Quick Reference",{"type":43,"tag":321,"props":678,"children":679},{},[680,686,688],{"type":43,"tag":187,"props":681,"children":683},{"href":682},"#migration-gotchas--quick-reference",[684],{"type":56,"value":685},"§ Migration Gotchas",{"type":56,"value":687}," + ",{"type":43,"tag":187,"props":689,"children":690},{"href":563},[691],{"type":56,"value":566},{"type":43,"tag":299,"props":693,"children":694},{},[695,700],{"type":43,"tag":321,"props":696,"children":697},{},[698],{"type":56,"value":699},"Post-Migration: What's Next",{"type":43,"tag":321,"props":701,"children":702},{},[703],{"type":43,"tag":187,"props":704,"children":706},{"href":705},"#post-migration-whats-next",[707],{"type":56,"value":708},"§ Post-Migration: What's Next",{"type":43,"tag":710,"props":711,"children":713},"h3",{"id":712},"context-loading-guide",[714],{"type":56,"value":715},"Context Loading Guide",{"type":43,"tag":44,"props":717,"children":718},{},[719],{"type":43,"tag":48,"props":720,"children":721},{},[722,727],{"type":43,"tag":52,"props":723,"children":724},{},[725],{"type":56,"value":726},"IMPORTANT — Load only what you need.",{"type":56,"value":728}," Do NOT read all resource files upfront. Load the specific file for the phase you are executing:",{"type":43,"tag":291,"props":730,"children":731},{},[732,753],{"type":43,"tag":295,"props":733,"children":734},{},[735],{"type":43,"tag":299,"props":736,"children":737},{},[738,743,748],{"type":43,"tag":303,"props":739,"children":740},{},[741],{"type":56,"value":742},"When",{"type":43,"tag":303,"props":744,"children":745},{},[746],{"type":56,"value":747},"Read This File",{"type":43,"tag":303,"props":749,"children":750},{},[751],{"type":56,"value":752},"Lines",{"type":43,"tag":314,"props":754,"children":755},{},[756,776,796,816,836,856,886,906,926,946,966,986,1008],{"type":43,"tag":299,"props":757,"children":758},{},[759,764,771],{"type":43,"tag":321,"props":760,"children":761},{},[762],{"type":56,"value":763},"User asks to migrate a workspace (full orchestration)",{"type":43,"tag":321,"props":765,"children":766},{},[767],{"type":43,"tag":187,"props":768,"children":769},{"href":334},[770],{"type":56,"value":337},{"type":43,"tag":321,"props":772,"children":773},{},[774],{"type":56,"value":775},"~1264",{"type":43,"tag":299,"props":777,"children":778},{},[779,784,791],{"type":43,"tag":321,"props":780,"children":781},{},[782],{"type":56,"value":783},"Phase 0: Spark Pools → Environments",{"type":43,"tag":321,"props":785,"children":786},{},[787],{"type":43,"tag":187,"props":788,"children":789},{"href":385},[790],{"type":56,"value":388},{"type":43,"tag":321,"props":792,"children":793},{},[794],{"type":56,"value":795},"~290",{"type":43,"tag":299,"props":797,"children":798},{},[799,804,811],{"type":43,"tag":321,"props":800,"children":801},{},[802],{"type":56,"value":803},"Phase 1: Databases → Lakehouses (built-in HMS)",{"type":43,"tag":321,"props":805,"children":806},{},[807],{"type":43,"tag":187,"props":808,"children":809},{"href":242},[810],{"type":56,"value":245},{"type":43,"tag":321,"props":812,"children":813},{},[814],{"type":56,"value":815},"~574",{"type":43,"tag":299,"props":817,"children":818},{},[819,824,831],{"type":43,"tag":321,"props":820,"children":821},{},[822],{"type":56,"value":823},"Phase 1: Databases → Lakehouses (external HMS)",{"type":43,"tag":321,"props":825,"children":826},{},[827],{"type":43,"tag":187,"props":828,"children":829},{"href":417},[830],{"type":56,"value":420},{"type":43,"tag":321,"props":832,"children":833},{},[834],{"type":56,"value":835},"~388",{"type":43,"tag":299,"props":837,"children":838},{},[839,844,851],{"type":43,"tag":321,"props":840,"children":841},{},[842],{"type":56,"value":843},"Phase 2–3: Notebooks & SJDs",{"type":43,"tag":321,"props":845,"children":846},{},[847],{"type":43,"tag":187,"props":848,"children":849},{"href":235},[850],{"type":56,"value":238},{"type":43,"tag":321,"props":852,"children":853},{},[854],{"type":56,"value":855},"~326",{"type":43,"tag":299,"props":857,"children":858},{},[859,864,881],{"type":43,"tag":321,"props":860,"children":861},{},[862],{"type":56,"value":863},"Code refactoring (mssparkutils, connectors)",{"type":43,"tag":321,"props":865,"children":866},{},[867,871,872,876,877],{"type":43,"tag":187,"props":868,"children":869},{"href":495},[870],{"type":56,"value":498},{"type":56,"value":687},{"type":43,"tag":187,"props":873,"children":874},{"href":466},[875],{"type":56,"value":469},{"type":56,"value":687},{"type":43,"tag":187,"props":878,"children":879},{"href":529},[880],{"type":56,"value":532},{"type":43,"tag":321,"props":882,"children":883},{},[884],{"type":56,"value":885},"~588",{"type":43,"tag":299,"props":887,"children":888},{},[889,894,901],{"type":43,"tag":321,"props":890,"children":891},{},[892],{"type":56,"value":893},"Post-migration validation",{"type":43,"tag":321,"props":895,"children":896},{},[897],{"type":43,"tag":187,"props":898,"children":899},{"href":580},[900],{"type":56,"value":583},{"type":43,"tag":321,"props":902,"children":903},{},[904],{"type":56,"value":905},"~487",{"type":43,"tag":299,"props":907,"children":908},{},[909,914,921],{"type":43,"tag":321,"props":910,"children":911},{},[912],{"type":56,"value":913},"Troubleshooting failures",{"type":43,"tag":321,"props":915,"children":916},{},[917],{"type":43,"tag":187,"props":918,"children":919},{"href":563},[920],{"type":56,"value":566},{"type":43,"tag":321,"props":922,"children":923},{},[924],{"type":56,"value":925},"~225",{"type":43,"tag":299,"props":927,"children":928},{},[929,934,941],{"type":43,"tag":321,"props":930,"children":931},{},[932],{"type":56,"value":933},"Production security setup",{"type":43,"tag":321,"props":935,"children":936},{},[937],{"type":43,"tag":187,"props":938,"children":939},{"href":597},[940],{"type":56,"value":600},{"type":43,"tag":321,"props":942,"children":943},{},[944],{"type":56,"value":945},"~926",{"type":43,"tag":299,"props":947,"children":948},{},[949,954,961],{"type":43,"tag":321,"props":950,"children":951},{},[952],{"type":56,"value":953},"Library version gaps",{"type":43,"tag":321,"props":955,"children":956},{},[957],{"type":43,"tag":187,"props":958,"children":959},{"href":449},[960],{"type":56,"value":452},{"type":43,"tag":321,"props":962,"children":963},{},[964],{"type":56,"value":965},"~106",{"type":43,"tag":299,"props":967,"children":968},{},[969,974,981],{"type":43,"tag":321,"props":970,"children":971},{},[972],{"type":56,"value":973},"Generating migration report",{"type":43,"tag":321,"props":975,"children":976},{},[977],{"type":43,"tag":187,"props":978,"children":979},{"href":546},[980],{"type":56,"value":549},{"type":43,"tag":321,"props":982,"children":983},{},[984],{"type":56,"value":985},"~360",{"type":43,"tag":299,"props":987,"children":988},{},[989,994,1003],{"type":43,"tag":321,"props":990,"children":991},{},[992],{"type":56,"value":993},"Capacity sizing & SKU planning",{"type":43,"tag":321,"props":995,"children":996},{},[997],{"type":43,"tag":187,"props":998,"children":1000},{"href":999},"resources\u002Fcapacity-sizing.md",[1001],{"type":56,"value":1002},"capacity-sizing.md",{"type":43,"tag":321,"props":1004,"children":1005},{},[1006],{"type":56,"value":1007},"~85",{"type":43,"tag":299,"props":1009,"children":1010},{},[1011,1016,1025],{"type":43,"tag":321,"props":1012,"children":1013},{},[1014],{"type":56,"value":1015},"Feature parity matrix",{"type":43,"tag":321,"props":1017,"children":1018},{},[1019],{"type":43,"tag":187,"props":1020,"children":1022},{"href":1021},"resources\u002Ffeature-parity.md",[1023],{"type":56,"value":1024},"feature-parity.md",{"type":43,"tag":321,"props":1026,"children":1027},{},[1028],{"type":56,"value":1029},"~65",{"type":43,"tag":281,"props":1031,"children":1032},{},[],{"type":43,"tag":162,"props":1034,"children":1036},{"id":1035},"api-driven-migration-workflow",[1037],{"type":56,"value":345},{"type":43,"tag":48,"props":1039,"children":1040},{},[1041],{"type":56,"value":1042},"This skill supports programmatic migration of Synapse Spark items via REST APIs (no UI-based Migration Assistant required).",{"type":43,"tag":710,"props":1044,"children":1046},{"id":1045},"authentication",[1047],{"type":56,"value":1048},"Authentication",{"type":43,"tag":291,"props":1050,"children":1051},{},[1052,1068],{"type":43,"tag":295,"props":1053,"children":1054},{},[1055],{"type":43,"tag":299,"props":1056,"children":1057},{},[1058,1063],{"type":43,"tag":303,"props":1059,"children":1060},{},[1061],{"type":56,"value":1062},"Target",{"type":43,"tag":303,"props":1064,"children":1065},{},[1066],{"type":56,"value":1067},"Token Audience",{"type":43,"tag":314,"props":1069,"children":1070},{},[1071,1088,1105],{"type":43,"tag":299,"props":1072,"children":1073},{},[1074,1079],{"type":43,"tag":321,"props":1075,"children":1076},{},[1077],{"type":56,"value":1078},"Synapse ARM (management plane)",{"type":43,"tag":321,"props":1080,"children":1081},{},[1082],{"type":43,"tag":83,"props":1083,"children":1085},{"className":1084},[],[1086],{"type":56,"value":1087},"https:\u002F\u002Fmanagement.azure.com",{"type":43,"tag":299,"props":1089,"children":1090},{},[1091,1096],{"type":43,"tag":321,"props":1092,"children":1093},{},[1094],{"type":56,"value":1095},"Synapse Data Plane",{"type":43,"tag":321,"props":1097,"children":1098},{},[1099],{"type":43,"tag":83,"props":1100,"children":1102},{"className":1101},[],[1103],{"type":56,"value":1104},"https:\u002F\u002Fdev.azuresynapse.net",{"type":43,"tag":299,"props":1106,"children":1107},{},[1108,1113],{"type":43,"tag":321,"props":1109,"children":1110},{},[1111],{"type":56,"value":1112},"Fabric REST API",{"type":43,"tag":321,"props":1114,"children":1115},{},[1116],{"type":43,"tag":83,"props":1117,"children":1119},{"className":1118},[],[1120],{"type":56,"value":1121},"https:\u002F\u002Fapi.fabric.microsoft.com",{"type":43,"tag":44,"props":1123,"children":1124},{},[1125],{"type":43,"tag":48,"props":1126,"children":1127},{},[1128,1130,1136],{"type":56,"value":1129},"Use the token-acquisition recipe in ",{"type":43,"tag":187,"props":1131,"children":1133},{"href":1132},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#authentication-recipes",[1134],{"type":56,"value":1135},"COMMON-CLI § Authentication Recipes",{"type":56,"value":1137}," with the audiences above.",{"type":43,"tag":710,"props":1139,"children":1141},{"id":1140},"migration-phases-execute-in-order",[1142],{"type":56,"value":1143},"Migration Phases (Execute in Order)",{"type":43,"tag":291,"props":1145,"children":1146},{},[1147,1173],{"type":43,"tag":295,"props":1148,"children":1149},{},[1150],{"type":43,"tag":299,"props":1151,"children":1152},{},[1153,1158,1163,1168],{"type":43,"tag":303,"props":1154,"children":1155},{},[1156],{"type":56,"value":1157},"Phase",{"type":43,"tag":303,"props":1159,"children":1160},{},[1161],{"type":56,"value":1162},"Synapse Source",{"type":43,"tag":303,"props":1164,"children":1165},{},[1166],{"type":56,"value":1167},"Fabric Target",{"type":43,"tag":303,"props":1169,"children":1170},{},[1171],{"type":56,"value":1172},"Resource",{"type":43,"tag":314,"props":1174,"children":1175},{},[1176,1201,1226,1249,1284,1309,1334,1358],{"type":43,"tag":299,"props":1177,"children":1178},{},[1179,1184,1189,1194],{"type":43,"tag":321,"props":1180,"children":1181},{},[1182],{"type":56,"value":1183},"Phase 0",{"type":43,"tag":321,"props":1185,"children":1186},{},[1187],{"type":56,"value":1188},"Spark Pool",{"type":43,"tag":321,"props":1190,"children":1191},{},[1192],{"type":56,"value":1193},"Environment",{"type":43,"tag":321,"props":1195,"children":1196},{},[1197],{"type":43,"tag":187,"props":1198,"children":1199},{"href":385},[1200],{"type":56,"value":388},{"type":43,"tag":299,"props":1202,"children":1203},{},[1204,1209,1214,1219],{"type":43,"tag":321,"props":1205,"children":1206},{},[1207],{"type":56,"value":1208},"Phase 1",{"type":43,"tag":321,"props":1210,"children":1211},{},[1212],{"type":56,"value":1213},"Lake Database (built-in HMS)",{"type":43,"tag":321,"props":1215,"children":1216},{},[1217],{"type":56,"value":1218},"Lakehouse",{"type":43,"tag":321,"props":1220,"children":1221},{},[1222],{"type":43,"tag":187,"props":1223,"children":1224},{"href":242},[1225],{"type":56,"value":245},{"type":43,"tag":299,"props":1227,"children":1228},{},[1229,1233,1238,1242],{"type":43,"tag":321,"props":1230,"children":1231},{},[1232],{"type":56,"value":1208},{"type":43,"tag":321,"props":1234,"children":1235},{},[1236],{"type":56,"value":1237},"External Hive Metastore",{"type":43,"tag":321,"props":1239,"children":1240},{},[1241],{"type":56,"value":1218},{"type":43,"tag":321,"props":1243,"children":1244},{},[1245],{"type":43,"tag":187,"props":1246,"children":1247},{"href":417},[1248],{"type":56,"value":420},{"type":43,"tag":299,"props":1250,"children":1251},{},[1252,1257,1270,1275],{"type":43,"tag":321,"props":1253,"children":1254},{},[1255],{"type":56,"value":1256},"Phase 1b",{"type":43,"tag":321,"props":1258,"children":1259},{},[1260,1262,1268],{"type":56,"value":1261},"Ad-hoc ",{"type":43,"tag":83,"props":1263,"children":1265},{"className":1264},[],[1266],{"type":56,"value":1267},"abfss:\u002F\u002F",{"type":56,"value":1269}," storage paths",{"type":43,"tag":321,"props":1271,"children":1272},{},[1273],{"type":56,"value":1274},"OneLake Shortcuts",{"type":43,"tag":321,"props":1276,"children":1277},{},[1278,1282],{"type":43,"tag":187,"props":1279,"children":1280},{"href":334},[1281],{"type":56,"value":337},{"type":56,"value":1283}," (migrate-and-modernize only)",{"type":43,"tag":299,"props":1285,"children":1286},{},[1287,1292,1297,1302],{"type":43,"tag":321,"props":1288,"children":1289},{},[1290],{"type":56,"value":1291},"Phase 2",{"type":43,"tag":321,"props":1293,"children":1294},{},[1295],{"type":56,"value":1296},"Notebooks",{"type":43,"tag":321,"props":1298,"children":1299},{},[1300],{"type":56,"value":1301},"Notebook",{"type":43,"tag":321,"props":1303,"children":1304},{},[1305],{"type":43,"tag":187,"props":1306,"children":1307},{"href":235},[1308],{"type":56,"value":238},{"type":43,"tag":299,"props":1310,"children":1311},{},[1312,1317,1322,1327],{"type":43,"tag":321,"props":1313,"children":1314},{},[1315],{"type":56,"value":1316},"Phase 3",{"type":43,"tag":321,"props":1318,"children":1319},{},[1320],{"type":56,"value":1321},"Spark Job Definitions",{"type":43,"tag":321,"props":1323,"children":1324},{},[1325],{"type":56,"value":1326},"SJD",{"type":43,"tag":321,"props":1328,"children":1329},{},[1330],{"type":43,"tag":187,"props":1331,"children":1332},{"href":235},[1333],{"type":56,"value":238},{"type":43,"tag":299,"props":1335,"children":1336},{},[1337,1342,1346,1351],{"type":43,"tag":321,"props":1338,"children":1339},{},[1340],{"type":56,"value":1341},"Final",{"type":43,"tag":321,"props":1343,"children":1344},{},[1345],{"type":56,"value":574},{"type":43,"tag":321,"props":1347,"children":1348},{},[1349],{"type":56,"value":1350},"—",{"type":43,"tag":321,"props":1352,"children":1353},{},[1354],{"type":43,"tag":187,"props":1355,"children":1356},{"href":580},[1357],{"type":56,"value":583},{"type":43,"tag":299,"props":1359,"children":1360},{},[1361,1366,1371,1375],{"type":43,"tag":321,"props":1362,"children":1363},{},[1364],{"type":56,"value":1365},"Optional",{"type":43,"tag":321,"props":1367,"children":1368},{},[1369],{"type":56,"value":1370},"Security & Governance",{"type":43,"tag":321,"props":1372,"children":1373},{},[1374],{"type":56,"value":1350},{"type":43,"tag":321,"props":1376,"children":1377},{},[1378],{"type":43,"tag":187,"props":1379,"children":1380},{"href":597},[1381],{"type":56,"value":600},{"type":43,"tag":44,"props":1383,"children":1384},{},[1385],{"type":43,"tag":48,"props":1386,"children":1387},{},[1388,1393],{"type":43,"tag":52,"props":1389,"children":1390},{},[1391],{"type":56,"value":1392},"Phase order matters",{"type":56,"value":1394},": Environments (Phase 0) must exist before notebooks\u002FSJDs can bind to them. Lakehouses (Phase 1) must exist before notebooks can bind to them (Phase 2).",{"type":43,"tag":44,"props":1396,"children":1397},{},[1398],{"type":43,"tag":48,"props":1399,"children":1400},{},[1401,1403,1407],{"type":56,"value":1402},"For the full execution flow with sub-steps, decision points, lift-and-shift vs. modernize paths, and error recovery, see ",{"type":43,"tag":187,"props":1404,"children":1405},{"href":334},[1406],{"type":56,"value":337},{"type":56,"value":1408},".",{"type":43,"tag":710,"props":1410,"children":1412},{"id":1411},"rest-api-quick-reference",[1413],{"type":56,"value":1414},"REST API Quick Reference",{"type":43,"tag":48,"props":1416,"children":1417},{},[1418,1420,1424],{"type":56,"value":1419},"All Synapse and Fabric API endpoints with request\u002Fresponse examples are in ",{"type":43,"tag":187,"props":1421,"children":1422},{"href":334},[1423],{"type":56,"value":337},{"type":56,"value":1425}," (Steps 2a–2e). Authentication tokens:",{"type":43,"tag":291,"props":1427,"children":1428},{},[1429,1443],{"type":43,"tag":295,"props":1430,"children":1431},{},[1432],{"type":43,"tag":299,"props":1433,"children":1434},{},[1435,1439],{"type":43,"tag":303,"props":1436,"children":1437},{},[1438],{"type":56,"value":1062},{"type":43,"tag":303,"props":1440,"children":1441},{},[1442],{"type":56,"value":1067},{"type":43,"tag":314,"props":1444,"children":1445},{},[1446,1462,1477],{"type":43,"tag":299,"props":1447,"children":1448},{},[1449,1454],{"type":43,"tag":321,"props":1450,"children":1451},{},[1452],{"type":56,"value":1453},"Synapse ARM",{"type":43,"tag":321,"props":1455,"children":1456},{},[1457],{"type":43,"tag":83,"props":1458,"children":1460},{"className":1459},[],[1461],{"type":56,"value":1087},{"type":43,"tag":299,"props":1463,"children":1464},{},[1465,1469],{"type":43,"tag":321,"props":1466,"children":1467},{},[1468],{"type":56,"value":1095},{"type":43,"tag":321,"props":1470,"children":1471},{},[1472],{"type":43,"tag":83,"props":1473,"children":1475},{"className":1474},[],[1476],{"type":56,"value":1104},{"type":43,"tag":299,"props":1478,"children":1479},{},[1480,1484],{"type":43,"tag":321,"props":1481,"children":1482},{},[1483],{"type":56,"value":1112},{"type":43,"tag":321,"props":1485,"children":1486},{},[1487],{"type":43,"tag":83,"props":1488,"children":1490},{"className":1489},[],[1491],{"type":56,"value":1121},{"type":43,"tag":44,"props":1493,"children":1494},{},[1495],{"type":43,"tag":48,"props":1496,"children":1497},{},[1498,1503,1505,1512,1514,1520,1521,1528,1529,1536,1537,1544,1545],{"type":43,"tag":52,"props":1499,"children":1500},{},[1501],{"type":56,"value":1502},"API docs",{"type":56,"value":1504},": ",{"type":43,"tag":187,"props":1506,"children":1510},{"href":1507,"rel":1508},"https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Frest\u002Fapi\u002Fsynapse",[1509],"nofollow",[1511],{"type":56,"value":1453},{"type":56,"value":1513}," · ",{"type":43,"tag":187,"props":1515,"children":1518},{"href":1516,"rel":1517},"https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Frest\u002Fapi\u002Fsynapse\u002Fdata-plane",[1509],[1519],{"type":56,"value":1095},{"type":56,"value":1513},{"type":43,"tag":187,"props":1522,"children":1525},{"href":1523,"rel":1524},"https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Frest\u002Fapi\u002Ffabric\u002Fcore\u002Fitems",[1509],[1526],{"type":56,"value":1527},"Fabric Items",{"type":56,"value":1513},{"type":43,"tag":187,"props":1530,"children":1533},{"href":1531,"rel":1532},"https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Frest\u002Fapi\u002Ffabric\u002Fcore\u002Fonelake-shortcuts",[1509],[1534],{"type":56,"value":1535},"Fabric Shortcuts",{"type":56,"value":1513},{"type":43,"tag":187,"props":1538,"children":1541},{"href":1539,"rel":1540},"https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Frest\u002Fapi\u002Ffabric\u002Fcore\u002Fconnections",[1509],[1542],{"type":56,"value":1543},"Fabric Connections",{"type":56,"value":1513},{"type":43,"tag":187,"props":1546,"children":1549},{"href":1547,"rel":1548},"https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Frest\u002Fapi\u002Ffabric\u002Fenvironment",[1509],[1550],{"type":56,"value":1551},"Fabric Environments",{"type":43,"tag":281,"props":1553,"children":1554},{},[],{"type":43,"tag":162,"props":1556,"children":1558},{"id":1557},"migration-workload-map",[1559],{"type":56,"value":362},{"type":43,"tag":48,"props":1561,"children":1562},{},[1563],{"type":56,"value":1564},"Use this table to determine the correct Fabric target for each Synapse component:",{"type":43,"tag":291,"props":1566,"children":1567},{},[1568,1588],{"type":43,"tag":295,"props":1569,"children":1570},{},[1571],{"type":43,"tag":299,"props":1572,"children":1573},{},[1574,1579,1583],{"type":43,"tag":303,"props":1575,"children":1576},{},[1577],{"type":56,"value":1578},"Synapse Component",{"type":43,"tag":303,"props":1580,"children":1581},{},[1582],{"type":56,"value":1167},{"type":43,"tag":303,"props":1584,"children":1585},{},[1586],{"type":56,"value":1587},"Notes",{"type":43,"tag":314,"props":1589,"children":1590},{},[1591,1613,1655,1679,1708,1737,1773,1801,1825],{"type":43,"tag":299,"props":1592,"children":1593},{},[1594,1603,1608],{"type":43,"tag":321,"props":1595,"children":1596},{},[1597,1601],{"type":43,"tag":52,"props":1598,"children":1599},{},[1600],{"type":56,"value":1188},{"type":56,"value":1602}," (notebooks, jobs)",{"type":43,"tag":321,"props":1604,"children":1605},{},[1606],{"type":56,"value":1607},"Fabric Spark (Lakehouse \u002F Notebooks \u002F SJD)",{"type":43,"tag":321,"props":1609,"children":1610},{},[1611],{"type":56,"value":1612},"Starter Pool replaces on-demand pools for most workloads",{"type":43,"tag":299,"props":1614,"children":1615},{},[1616,1624,1632],{"type":43,"tag":321,"props":1617,"children":1618},{},[1619],{"type":43,"tag":52,"props":1620,"children":1621},{},[1622],{"type":56,"value":1623},"Dedicated SQL Pool",{"type":43,"tag":321,"props":1625,"children":1626},{},[1627],{"type":43,"tag":52,"props":1628,"children":1629},{},[1630],{"type":56,"value":1631},"Fabric Warehouse",{"type":43,"tag":321,"props":1633,"children":1634},{},[1635,1637,1641,1643],{"type":56,"value":1636},"T-SQL surface area differences apply — see ",{"type":43,"tag":187,"props":1638,"children":1639},{"href":614},[1640],{"type":56,"value":617},{"type":56,"value":1642},". ",{"type":43,"tag":1644,"props":1645,"children":1646},"em",{},[1647,1649,1654],{"type":56,"value":1648},"Procedural migration guide not yet available — separate migration track. For T-SQL authoring, delegate to ",{"type":43,"tag":83,"props":1650,"children":1652},{"className":1651},[],[1653],{"type":56,"value":264},{"type":56,"value":1408},{"type":43,"tag":299,"props":1656,"children":1657},{},[1658,1666,1674],{"type":43,"tag":321,"props":1659,"children":1660},{},[1661],{"type":43,"tag":52,"props":1662,"children":1663},{},[1664],{"type":56,"value":1665},"Serverless SQL Pool",{"type":43,"tag":321,"props":1667,"children":1668},{},[1669],{"type":43,"tag":52,"props":1670,"children":1671},{},[1672],{"type":56,"value":1673},"Lakehouse SQL Endpoint",{"type":43,"tag":321,"props":1675,"children":1676},{},[1677],{"type":56,"value":1678},"Read-only Delta\u002FParquet queries; no DDL required",{"type":43,"tag":299,"props":1680,"children":1681},{},[1682,1690,1698],{"type":43,"tag":321,"props":1683,"children":1684},{},[1685],{"type":43,"tag":52,"props":1686,"children":1687},{},[1688],{"type":56,"value":1689},"Synapse Pipelines",{"type":43,"tag":321,"props":1691,"children":1692},{},[1693],{"type":43,"tag":52,"props":1694,"children":1695},{},[1696],{"type":56,"value":1697},"Fabric Data Pipelines",{"type":43,"tag":321,"props":1699,"children":1700},{},[1701,1703],{"type":56,"value":1702},"Activity types, triggers, and expressions are broadly compatible. ",{"type":43,"tag":1644,"props":1704,"children":1705},{},[1706],{"type":56,"value":1707},"Pipeline migration resource not yet available — separate migration track.",{"type":43,"tag":299,"props":1709,"children":1710},{},[1711,1719,1727],{"type":43,"tag":321,"props":1712,"children":1713},{},[1714],{"type":43,"tag":52,"props":1715,"children":1716},{},[1717],{"type":56,"value":1718},"Synapse Link for Cosmos DB \u002F SQL",{"type":43,"tag":321,"props":1720,"children":1721},{},[1722],{"type":43,"tag":52,"props":1723,"children":1724},{},[1725],{"type":56,"value":1726},"Fabric Mirroring",{"type":43,"tag":321,"props":1728,"children":1729},{},[1730,1732],{"type":56,"value":1731},"Native mirroring replaces the Synapse Link connector pattern. ",{"type":43,"tag":1644,"props":1733,"children":1734},{},[1735],{"type":56,"value":1736},"Not covered by this skill.",{"type":43,"tag":299,"props":1738,"children":1739},{},[1740,1748,1764],{"type":43,"tag":321,"props":1741,"children":1742},{},[1743],{"type":43,"tag":52,"props":1744,"children":1745},{},[1746],{"type":56,"value":1747},"Linked Services",{"type":43,"tag":321,"props":1749,"children":1750},{},[1751,1756,1758,1762],{"type":43,"tag":52,"props":1752,"children":1753},{},[1754],{"type":56,"value":1755},"Data Connections",{"type":56,"value":1757}," (external) \u002F ",{"type":43,"tag":52,"props":1759,"children":1760},{},[1761],{"type":56,"value":1274},{"type":56,"value":1763}," (storage)",{"type":43,"tag":321,"props":1765,"children":1766},{},[1767,1769],{"type":56,"value":1768},"See ",{"type":43,"tag":187,"props":1770,"children":1771},{"href":512},[1772],{"type":56,"value":515},{"type":43,"tag":299,"props":1774,"children":1775},{},[1776,1784,1792],{"type":43,"tag":321,"props":1777,"children":1778},{},[1779],{"type":43,"tag":52,"props":1780,"children":1781},{},[1782],{"type":56,"value":1783},"Integration Datasets",{"type":43,"tag":321,"props":1785,"children":1786},{},[1787],{"type":43,"tag":52,"props":1788,"children":1789},{},[1790],{"type":56,"value":1791},"Fabric Pipeline source\u002Fsink config",{"type":43,"tag":321,"props":1793,"children":1794},{},[1795,1797],{"type":56,"value":1796},"Dataset definitions are inlined into pipeline activities in Fabric. ",{"type":43,"tag":1644,"props":1798,"children":1799},{},[1800],{"type":56,"value":1736},{"type":43,"tag":299,"props":1802,"children":1803},{},[1804,1812,1820],{"type":43,"tag":321,"props":1805,"children":1806},{},[1807],{"type":43,"tag":52,"props":1808,"children":1809},{},[1810],{"type":56,"value":1811},"Managed Virtual Networks",{"type":43,"tag":321,"props":1813,"children":1814},{},[1815],{"type":43,"tag":52,"props":1816,"children":1817},{},[1818],{"type":56,"value":1819},"Fabric Managed Private Endpoints",{"type":43,"tag":321,"props":1821,"children":1822},{},[1823],{"type":56,"value":1824},"Configure in Fabric capacity settings",{"type":43,"tag":299,"props":1826,"children":1827},{},[1828,1836,1844],{"type":43,"tag":321,"props":1829,"children":1830},{},[1831],{"type":43,"tag":52,"props":1832,"children":1833},{},[1834],{"type":56,"value":1835},"Synapse Studio",{"type":43,"tag":321,"props":1837,"children":1838},{},[1839],{"type":43,"tag":52,"props":1840,"children":1841},{},[1842],{"type":56,"value":1843},"Fabric workspace",{"type":43,"tag":321,"props":1845,"children":1846},{},[1847],{"type":56,"value":1848},"All artifact types live in a single workspace with Git integration",{"type":43,"tag":710,"props":1850,"children":1852},{"id":1851},"decision-tree-which-fabric-spark-workload",[1853],{"type":56,"value":1854},"Decision Tree: Which Fabric Spark Workload?",{"type":43,"tag":1856,"props":1857,"children":1862},"pre",{"className":1858,"code":1860,"language":56,"meta":1861},[1859],"language-text","Synapse Spark workload\n├── Interactive notebook with data exploration → Fabric Notebook (attached to Lakehouse)\n├── Scheduled\u002Fproduction job → Spark Job Definition (SJD)\n├── T-SQL over files\u002FDelta → Lakehouse SQL Endpoint (no migration needed — just point to OneLake)\n└── Real-time ingest → Fabric Eventstream + Lakehouse\n","",[1863],{"type":43,"tag":83,"props":1864,"children":1865},{"__ignoreMap":1861},[1866],{"type":56,"value":1860},{"type":43,"tag":281,"props":1868,"children":1869},{},[],{"type":43,"tag":162,"props":1871,"children":1873},{"id":1872},"t-sql-spark-configuration-differences",[1874],{"type":56,"value":608},{"type":43,"tag":48,"props":1876,"children":1877},{},[1878,1880,1886,1888,1894,1896,1900],{"type":56,"value":1879},"For detailed T-SQL surface area gaps (PolyBase → ",{"type":43,"tag":83,"props":1881,"children":1883},{"className":1882},[],[1884],{"type":56,"value":1885},"COPY INTO",{"type":56,"value":1887},", distribution hints, result set caching) and Spark configuration mappings (pools, ",{"type":43,"tag":83,"props":1889,"children":1891},{"className":1890},[],[1892],{"type":56,"value":1893},"%%configure",{"type":56,"value":1895},", runtime versions), see ",{"type":43,"tag":187,"props":1897,"children":1898},{"href":1021},[1899],{"type":56,"value":1024},{"type":56,"value":1408},{"type":43,"tag":44,"props":1902,"children":1903},{},[1904],{"type":43,"tag":48,"props":1905,"children":1906},{},[1907,1912,1914,1920,1922,1928,1930,1935,1937,1943,1945,1950],{"type":43,"tag":52,"props":1908,"children":1909},{},[1910],{"type":56,"value":1911},"Key actions",{"type":56,"value":1913},": Remove ",{"type":43,"tag":83,"props":1915,"children":1917},{"className":1916},[],[1918],{"type":56,"value":1919},"DISTRIBUTION = HASH(col)",{"type":56,"value":1921}," hints, replace ",{"type":43,"tag":83,"props":1923,"children":1925},{"className":1924},[],[1926],{"type":56,"value":1927},"CREATE EXTERNAL TABLE",{"type":56,"value":1929}," with ",{"type":43,"tag":83,"props":1931,"children":1933},{"className":1932},[],[1934],{"type":56,"value":1885},{"type":56,"value":1936},", replace ",{"type":43,"tag":83,"props":1938,"children":1940},{"className":1939},[],[1941],{"type":56,"value":1942},"spark.read.synapsesql()",{"type":56,"value":1944}," with OneLake shortcuts or JDBC. Delegate T-SQL authoring to ",{"type":43,"tag":83,"props":1946,"children":1948},{"className":1947},[],[1949],{"type":56,"value":264},{"type":56,"value":1408},{"type":43,"tag":281,"props":1952,"children":1953},{},[],{"type":43,"tag":162,"props":1955,"children":1957},{"id":1956},"capacity-sizing-reference",[1958],{"type":56,"value":625},{"type":43,"tag":48,"props":1960,"children":1961},{},[1962,1964,1968],{"type":56,"value":1963},"For Synapse pool → Fabric SKU mapping tables, sizing decision guide, and cost model comparison, see ",{"type":43,"tag":187,"props":1965,"children":1966},{"href":999},[1967],{"type":56,"value":1002},{"type":56,"value":1408},{"type":43,"tag":44,"props":1970,"children":1971},{},[1972],{"type":43,"tag":48,"props":1973,"children":1974},{},[1975,1980],{"type":43,"tag":52,"props":1976,"children":1977},{},[1978],{"type":56,"value":1979},"Quick guide",{"type":56,"value":1981},": Dev\u002Ftest = F8–F16 with Starter Pool; standard production = F32–F64; enterprise = F128+. Use Fabric Trial (free F64, 60 days) for migration validation.",{"type":43,"tag":281,"props":1983,"children":1984},{},[],{"type":43,"tag":162,"props":1986,"children":1988},{"id":1987},"must-prefer-avoid",[1989],{"type":56,"value":642},{"type":43,"tag":710,"props":1991,"children":1993},{"id":1992},"must-do",[1994],{"type":56,"value":1995},"MUST DO",{"type":43,"tag":68,"props":1997,"children":1998},{},[1999,2027,2041,2056,2066,2082],{"type":43,"tag":72,"props":2000,"children":2001},{},[2002,2019,2021,2025],{"type":43,"tag":52,"props":2003,"children":2004},{},[2005,2007,2012,2014],{"type":56,"value":2006},"Replace all ",{"type":43,"tag":83,"props":2008,"children":2010},{"className":2009},[],[2011],{"type":56,"value":138},{"type":56,"value":2013}," imports with ",{"type":43,"tag":83,"props":2015,"children":2017},{"className":2016},[],[2018],{"type":56,"value":146},{"type":56,"value":2020}," — see ",{"type":43,"tag":187,"props":2022,"children":2023},{"href":495},[2024],{"type":56,"value":498},{"type":56,"value":2026}," for the complete namespace table",{"type":43,"tag":72,"props":2028,"children":2029},{},[2030,2035,2037],{"type":43,"tag":52,"props":2031,"children":2032},{},[2033],{"type":56,"value":2034},"Replace all Linked Services",{"type":56,"value":2036}," with Fabric Data Connections (for external databases\u002Fservices) or OneLake Shortcuts (for ADLS Gen2 \u002F Blob storage mounts) — see ",{"type":43,"tag":187,"props":2038,"children":2039},{"href":512},[2040],{"type":56,"value":515},{"type":43,"tag":72,"props":2042,"children":2043},{},[2044,2054],{"type":43,"tag":52,"props":2045,"children":2046},{},[2047,2049],{"type":56,"value":2048},"Replace ",{"type":43,"tag":83,"props":2050,"children":2052},{"className":2051},[],[2053],{"type":56,"value":1942},{"type":56,"value":2055}," with Lakehouse shortcut reads or JDBC connections to the Fabric Warehouse SQL endpoint",{"type":43,"tag":72,"props":2057,"children":2058},{},[2059,2064],{"type":43,"tag":52,"props":2060,"children":2061},{},[2062],{"type":56,"value":2063},"Re-test all notebooks",{"type":56,"value":2065}," after migration against the target Fabric Runtime version — Spark minor version differences can surface deprecated API warnings",{"type":43,"tag":72,"props":2067,"children":2068},{},[2069,2074,2076],{"type":43,"tag":52,"props":2070,"children":2071},{},[2072],{"type":56,"value":2073},"Externalize all workspace\u002Fitem IDs",{"type":56,"value":2075}," — never hardcode; use pipeline parameters or ",{"type":43,"tag":187,"props":2077,"children":2079},{"href":2078},"#variable-library-for-environment-promotion",[2080],{"type":56,"value":2081},"Variable Libraries",{"type":43,"tag":72,"props":2083,"children":2084},{},[2085,2090],{"type":43,"tag":52,"props":2086,"children":2087},{},[2088],{"type":56,"value":2089},"Replace pool-level library installs",{"type":56,"value":2091}," with Fabric Environments attached at the workspace or notebook level",{"type":43,"tag":710,"props":2093,"children":2095},{"id":2094},"prefer",[2096],{"type":56,"value":2097},"PREFER",{"type":43,"tag":68,"props":2099,"children":2100},{},[2101,2111,2121,2130,2147,2157],{"type":43,"tag":72,"props":2102,"children":2103},{},[2104,2109],{"type":43,"tag":52,"props":2105,"children":2106},{},[2107],{"type":56,"value":2108},"OneLake Shortcuts over full data copies",{"type":56,"value":2110}," — mount existing ADLS Gen2 containers as shortcuts rather than re-ingesting data during migration",{"type":43,"tag":72,"props":2112,"children":2113},{},[2114,2119],{"type":43,"tag":52,"props":2115,"children":2116},{},[2117],{"type":56,"value":2118},"Fabric Starter Pool",{"type":56,"value":2120}," for dev\u002Ftest migrations — eliminates pool warm-up wait time inherent in Synapse on-demand pools",{"type":43,"tag":72,"props":2122,"children":2123},{},[2124,2128],{"type":43,"tag":52,"props":2125,"children":2126},{},[2127],{"type":56,"value":1673},{"type":56,"value":2129}," as a drop-in for Serverless SQL Pool reads — point existing consumers at the endpoint with minimal query changes",{"type":43,"tag":72,"props":2131,"children":2132},{},[2133,2138,2140,2146],{"type":43,"tag":52,"props":2134,"children":2135},{},[2136],{"type":56,"value":2137},"Medallion architecture",{"type":56,"value":2139}," for migrated data — align with Bronze\u002FSilver\u002FGold patterns (see ",{"type":43,"tag":83,"props":2141,"children":2143},{"className":2142},[],[2144],{"type":56,"value":2145},"e2e-medallion-architecture",{"type":56,"value":266},{"type":43,"tag":72,"props":2148,"children":2149},{},[2150,2155],{"type":43,"tag":52,"props":2151,"children":2152},{},[2153],{"type":56,"value":2154},"Incremental migration",{"type":56,"value":2156}," — migrate and validate workload by workload rather than performing a big-bang cutover",{"type":43,"tag":72,"props":2158,"children":2159},{},[2160,2165],{"type":43,"tag":52,"props":2161,"children":2162},{},[2163],{"type":56,"value":2164},"Parameterized notebooks",{"type":56,"value":2166}," to allow environment promotion (dev → test → prod) without code changes",{"type":43,"tag":710,"props":2168,"children":2170},{"id":2169},"avoid",[2171],{"type":56,"value":2172},"AVOID",{"type":43,"tag":68,"props":2174,"children":2175},{},[2176,2200,2210,2228,2260],{"type":43,"tag":72,"props":2177,"children":2178},{},[2179,2191,2193,2198],{"type":43,"tag":52,"props":2180,"children":2181},{},[2182,2184,2189],{"type":56,"value":2183},"Do not copy-paste PolyBase ",{"type":43,"tag":83,"props":2185,"children":2187},{"className":2186},[],[2188],{"type":56,"value":1927},{"type":56,"value":2190}," DDL",{"type":56,"value":2192}," into Fabric Warehouse — rewrite as ",{"type":43,"tag":83,"props":2194,"children":2196},{"className":2195},[],[2197],{"type":56,"value":1885},{"type":56,"value":2199}," or use Lakehouse for external data access",{"type":43,"tag":72,"props":2201,"children":2202},{},[2203,2208],{"type":43,"tag":52,"props":2204,"children":2205},{},[2206],{"type":56,"value":2207},"Do not assume Synapse Linked Service connection strings are reusable",{"type":56,"value":2209}," — credentials and endpoints must be reconfigured as Fabric Data Connections",{"type":43,"tag":72,"props":2211,"children":2212},{},[2213,2218,2220,2226],{"type":43,"tag":52,"props":2214,"children":2215},{},[2216],{"type":56,"value":2217},"Do not install libraries in notebook cells",{"type":56,"value":2219}," (",{"type":43,"tag":83,"props":2221,"children":2223},{"className":2222},[],[2224],{"type":56,"value":2225},"%pip install",{"type":56,"value":2227}," at runtime) for production workloads — use Fabric Environments for reproducible, versioned library management",{"type":43,"tag":72,"props":2229,"children":2230},{},[2231,2236,2237,2243,2245,2251,2252,2258],{"type":43,"tag":52,"props":2232,"children":2233},{},[2234],{"type":56,"value":2235},"Do not migrate Dedicated SQL Pool distribution hints",{"type":56,"value":2219},{"type":43,"tag":83,"props":2238,"children":2240},{"className":2239},[],[2241],{"type":56,"value":2242},"HASH",{"type":56,"value":2244},", ",{"type":43,"tag":83,"props":2246,"children":2248},{"className":2247},[],[2249],{"type":56,"value":2250},"ROUND_ROBIN",{"type":56,"value":2244},{"type":43,"tag":83,"props":2253,"children":2255},{"className":2254},[],[2256],{"type":56,"value":2257},"REPLICATE",{"type":56,"value":2259},") verbatim — remove them; Fabric Warehouse handles distribution automatically",{"type":43,"tag":72,"props":2261,"children":2262},{},[2263,2284,2286,2292],{"type":43,"tag":52,"props":2264,"children":2265},{},[2266,2268,2274,2276,2282],{"type":56,"value":2267},"Do not use ",{"type":43,"tag":83,"props":2269,"children":2271},{"className":2270},[],[2272],{"type":56,"value":2273},"wasb:\u002F\u002F",{"type":56,"value":2275}," or ",{"type":43,"tag":83,"props":2277,"children":2279},{"className":2278},[],[2280],{"type":56,"value":2281},"abfss:\u002F\u002Fcontainer@storageaccount.dfs.core.windows.net\u002F",{"type":56,"value":2283}," paths",{"type":56,"value":2285}," as primary data paths — migrate data access to OneLake ",{"type":43,"tag":83,"props":2287,"children":2289},{"className":2288},[],[2290],{"type":56,"value":2291},"abfss:\u002F\u002Fworkspace@onelake.dfs.fabric.microsoft.com\u002F",{"type":56,"value":2283},{"type":43,"tag":281,"props":2294,"children":2295},{},[],{"type":43,"tag":162,"props":2297,"children":2299},{"id":2298},"examples",[2300],{"type":56,"value":2301},"Examples",{"type":43,"tag":48,"props":2303,"children":2304},{},[2305,2306,2310],{"type":56,"value":1768},{"type":43,"tag":187,"props":2307,"children":2308},{"href":529},[2309],{"type":56,"value":532},{"type":56,"value":2311}," for full before\u002Fafter examples. Key quick references:",{"type":43,"tag":48,"props":2313,"children":2314},{},[2315],{"type":43,"tag":52,"props":2316,"children":2317},{},[2318,2324,2325],{"type":43,"tag":83,"props":2319,"children":2321},{"className":2320},[],[2322],{"type":56,"value":2323},"mssparkutils.env",{"type":56,"value":482},{"type":43,"tag":83,"props":2326,"children":2328},{"className":2327},[],[2329],{"type":56,"value":2330},"notebookutils.runtime",{"type":43,"tag":1856,"props":2332,"children":2336},{"className":2333,"code":2334,"language":2335,"meta":1861,"style":1861},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Synapse\nworkspace = mssparkutils.env.getWorkspaceName()\n\n# Fabric\nworkspace = notebookutils.runtime.context[\"workspaceName\"]\n","python",[2337],{"type":43,"tag":83,"props":2338,"children":2339},{"__ignoreMap":1861},[2340,2351,2360,2370,2379],{"type":43,"tag":2341,"props":2342,"children":2345},"span",{"class":2343,"line":2344},"line",1,[2346],{"type":43,"tag":2341,"props":2347,"children":2348},{},[2349],{"type":56,"value":2350},"# Synapse\n",{"type":43,"tag":2341,"props":2352,"children":2354},{"class":2343,"line":2353},2,[2355],{"type":43,"tag":2341,"props":2356,"children":2357},{},[2358],{"type":56,"value":2359},"workspace = mssparkutils.env.getWorkspaceName()\n",{"type":43,"tag":2341,"props":2361,"children":2363},{"class":2343,"line":2362},3,[2364],{"type":43,"tag":2341,"props":2365,"children":2367},{"emptyLinePlaceholder":2366},true,[2368],{"type":56,"value":2369},"\n",{"type":43,"tag":2341,"props":2371,"children":2373},{"class":2343,"line":2372},4,[2374],{"type":43,"tag":2341,"props":2375,"children":2376},{},[2377],{"type":56,"value":2378},"# Fabric\n",{"type":43,"tag":2341,"props":2380,"children":2382},{"class":2343,"line":2381},5,[2383],{"type":43,"tag":2341,"props":2384,"children":2385},{},[2386],{"type":56,"value":2387},"workspace = notebookutils.runtime.context[\"workspaceName\"]\n",{"type":43,"tag":48,"props":2389,"children":2390},{},[2391],{"type":43,"tag":52,"props":2392,"children":2393},{},[2394],{"type":56,"value":2395},"Linked Service credential → Key Vault secret",{"type":43,"tag":1856,"props":2397,"children":2399},{"className":2333,"code":2398,"language":2335,"meta":1861,"style":1861},"# Synapse\nconn = mssparkutils.credentials.getConnectionStringOrCreds(\"MyLinkedService\")\n\n# Fabric\nconn = notebookutils.credentials.getSecret(\"https:\u002F\u002Fmyvault.vault.azure.net\u002F\", \"my-secret\")\n",[2400],{"type":43,"tag":83,"props":2401,"children":2402},{"__ignoreMap":1861},[2403,2410,2418,2425,2432],{"type":43,"tag":2341,"props":2404,"children":2405},{"class":2343,"line":2344},[2406],{"type":43,"tag":2341,"props":2407,"children":2408},{},[2409],{"type":56,"value":2350},{"type":43,"tag":2341,"props":2411,"children":2412},{"class":2343,"line":2353},[2413],{"type":43,"tag":2341,"props":2414,"children":2415},{},[2416],{"type":56,"value":2417},"conn = mssparkutils.credentials.getConnectionStringOrCreds(\"MyLinkedService\")\n",{"type":43,"tag":2341,"props":2419,"children":2420},{"class":2343,"line":2362},[2421],{"type":43,"tag":2341,"props":2422,"children":2423},{"emptyLinePlaceholder":2366},[2424],{"type":56,"value":2369},{"type":43,"tag":2341,"props":2426,"children":2427},{"class":2343,"line":2372},[2428],{"type":43,"tag":2341,"props":2429,"children":2430},{},[2431],{"type":56,"value":2378},{"type":43,"tag":2341,"props":2433,"children":2434},{"class":2343,"line":2381},[2435],{"type":43,"tag":2341,"props":2436,"children":2437},{},[2438],{"type":56,"value":2439},"conn = notebookutils.credentials.getSecret(\"https:\u002F\u002Fmyvault.vault.azure.net\u002F\", \"my-secret\")\n",{"type":43,"tag":48,"props":2441,"children":2442},{},[2443],{"type":43,"tag":52,"props":2444,"children":2445},{},[2446],{"type":56,"value":2447},"Dedicated SQL Pool DDL → Fabric Warehouse DDL",{"type":43,"tag":1856,"props":2449,"children":2453},{"className":2450,"code":2451,"language":2452,"meta":1861,"style":1861},"language-sql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","-- Synapse (remove distribution hints)\nCREATE TABLE dbo.Fact (...) WITH (DISTRIBUTION = HASH(id), CLUSTERED COLUMNSTORE INDEX);\n\n-- Fabric Warehouse\nCREATE TABLE dbo.Fact (...);\n","sql",[2454],{"type":43,"tag":83,"props":2455,"children":2456},{"__ignoreMap":1861},[2457,2465,2473,2480,2488],{"type":43,"tag":2341,"props":2458,"children":2459},{"class":2343,"line":2344},[2460],{"type":43,"tag":2341,"props":2461,"children":2462},{},[2463],{"type":56,"value":2464},"-- Synapse (remove distribution hints)\n",{"type":43,"tag":2341,"props":2466,"children":2467},{"class":2343,"line":2353},[2468],{"type":43,"tag":2341,"props":2469,"children":2470},{},[2471],{"type":56,"value":2472},"CREATE TABLE dbo.Fact (...) WITH (DISTRIBUTION = HASH(id), CLUSTERED COLUMNSTORE INDEX);\n",{"type":43,"tag":2341,"props":2474,"children":2475},{"class":2343,"line":2362},[2476],{"type":43,"tag":2341,"props":2477,"children":2478},{"emptyLinePlaceholder":2366},[2479],{"type":56,"value":2369},{"type":43,"tag":2341,"props":2481,"children":2482},{"class":2343,"line":2372},[2483],{"type":43,"tag":2341,"props":2484,"children":2485},{},[2486],{"type":56,"value":2487},"-- Fabric Warehouse\n",{"type":43,"tag":2341,"props":2489,"children":2490},{"class":2343,"line":2381},[2491],{"type":43,"tag":2341,"props":2492,"children":2493},{},[2494],{"type":56,"value":2495},"CREATE TABLE dbo.Fact (...);\n",{"type":43,"tag":281,"props":2497,"children":2498},{},[],{"type":43,"tag":162,"props":2500,"children":2502},{"id":2501},"feature-parity-reference",[2503],{"type":56,"value":659},{"type":43,"tag":48,"props":2505,"children":2506},{},[2507,2509,2513],{"type":56,"value":2508},"Full Synapse → Fabric feature matrix (28 features), T-SQL surface area gaps, and Spark configuration differences are in ",{"type":43,"tag":187,"props":2510,"children":2511},{"href":1021},[2512],{"type":56,"value":1024},{"type":56,"value":1408},{"type":43,"tag":44,"props":2515,"children":2516},{},[2517],{"type":43,"tag":48,"props":2518,"children":2519},{},[2520,2525,2527,2532,2534,2539,2541,2546,2548],{"type":43,"tag":52,"props":2521,"children":2522},{},[2523],{"type":56,"value":2524},"Key gaps",{"type":56,"value":2526}," (⚠️\u002F❌): ",{"type":43,"tag":83,"props":2528,"children":2530},{"className":2529},[],[2531],{"type":56,"value":1942},{"type":56,"value":2533}," replaced by JDBC\u002Fshortcuts · Linked Services redesigned as Data Connections\u002FShortcuts · External HMS partial (migrate as shortcuts) · ",{"type":43,"tag":83,"props":2535,"children":2537},{"className":2536},[],[2538],{"type":56,"value":2323},{"type":56,"value":2540}," renamed to ",{"type":43,"tag":83,"props":2542,"children":2544},{"className":2543},[],[2545],{"type":56,"value":2330},{"type":56,"value":2547}," · Result set caching ❌ · Workload management ❌ · PolyBase → ",{"type":43,"tag":83,"props":2549,"children":2551},{"className":2550},[],[2552],{"type":56,"value":1885},{"type":43,"tag":281,"props":2554,"children":2555},{},[],{"type":43,"tag":162,"props":2557,"children":2559},{"id":2558},"migration-gotchas-quick-reference",[2560],{"type":56,"value":676},{"type":43,"tag":48,"props":2562,"children":2563},{},[2564,2566,2570],{"type":56,"value":2565},"The full troubleshooting guide with code examples and multi-option resolutions is in ",{"type":43,"tag":187,"props":2567,"children":2568},{"href":563},[2569],{"type":56,"value":566},{"type":56,"value":2571},". This summary surfaces the key issues for quick scanning during migration:",{"type":43,"tag":291,"props":2573,"children":2574},{},[2575,2611],{"type":43,"tag":295,"props":2576,"children":2577},{},[2578],{"type":43,"tag":299,"props":2579,"children":2580},{},[2581,2586,2591,2596,2601,2606],{"type":43,"tag":303,"props":2582,"children":2583},{},[2584],{"type":56,"value":2585},"#",{"type":43,"tag":303,"props":2587,"children":2588},{},[2589],{"type":56,"value":2590},"Flag ID",{"type":43,"tag":303,"props":2592,"children":2593},{},[2594],{"type":56,"value":2595},"Issue",{"type":43,"tag":303,"props":2597,"children":2598},{},[2599],{"type":56,"value":2600},"Severity",{"type":43,"tag":303,"props":2602,"children":2603},{},[2604],{"type":56,"value":2605},"Blocks?",{"type":43,"tag":303,"props":2607,"children":2608},{},[2609],{"type":56,"value":2610},"Resolution Summary",{"type":43,"tag":314,"props":2612,"children":2613},{},[2614,2656,2693,2743,2778,2813,2848,2921,2964],{"type":43,"tag":299,"props":2615,"children":2616},{},[2617,2622,2631,2641,2646,2651],{"type":43,"tag":321,"props":2618,"children":2619},{},[2620],{"type":56,"value":2621},"G1",{"type":43,"tag":321,"props":2623,"children":2624},{},[2625],{"type":43,"tag":83,"props":2626,"children":2628},{"className":2627},[],[2629],{"type":56,"value":2630},"SYNAPSESQL_NO_EQUIVALENT",{"type":43,"tag":321,"props":2632,"children":2633},{},[2634,2639],{"type":43,"tag":83,"props":2635,"children":2637},{"className":2636},[],[2638],{"type":56,"value":1942},{"type":56,"value":2640}," has no Fabric equivalent",{"type":43,"tag":321,"props":2642,"children":2643},{},[2644],{"type":56,"value":2645},"High",{"type":43,"tag":321,"props":2647,"children":2648},{},[2649],{"type":56,"value":2650},"Yes",{"type":43,"tag":321,"props":2652,"children":2653},{},[2654],{"type":56,"value":2655},"Replace with OneLake shortcut read, Warehouse JDBC, or Data Pipeline",{"type":43,"tag":299,"props":2657,"children":2658},{},[2659,2664,2673,2678,2683,2688],{"type":43,"tag":321,"props":2660,"children":2661},{},[2662],{"type":56,"value":2663},"G2",{"type":43,"tag":321,"props":2665,"children":2666},{},[2667],{"type":43,"tag":83,"props":2668,"children":2670},{"className":2669},[],[2671],{"type":56,"value":2672},"LIBRARY_VERSION_CONFLICT",{"type":43,"tag":321,"props":2674,"children":2675},{},[2676],{"type":56,"value":2677},"Custom library version conflicts with Fabric Runtime",{"type":43,"tag":321,"props":2679,"children":2680},{},[2681],{"type":56,"value":2682},"Medium",{"type":43,"tag":321,"props":2684,"children":2685},{},[2686],{"type":56,"value":2687},"Maybe",{"type":43,"tag":321,"props":2689,"children":2690},{},[2691],{"type":56,"value":2692},"Pin compatible version in Environment, or find Fabric-native alternative",{"type":43,"tag":299,"props":2694,"children":2695},{},[2696,2701,2710,2715,2719,2723],{"type":43,"tag":321,"props":2697,"children":2698},{},[2699],{"type":56,"value":2700},"G3",{"type":43,"tag":321,"props":2702,"children":2703},{},[2704],{"type":43,"tag":83,"props":2705,"children":2707},{"className":2706},[],[2708],{"type":56,"value":2709},"DELTA_PROTOCOL_MISMATCH",{"type":43,"tag":321,"props":2711,"children":2712},{},[2713],{"type":56,"value":2714},"Delta protocol version incompatibility",{"type":43,"tag":321,"props":2716,"children":2717},{},[2718],{"type":56,"value":2645},{"type":43,"tag":321,"props":2720,"children":2721},{},[2722],{"type":56,"value":2650},{"type":43,"tag":321,"props":2724,"children":2725},{},[2726,2728,2734,2736,2742],{"type":56,"value":2727},"Rewrite table with matching protocol (",{"type":43,"tag":83,"props":2729,"children":2731},{"className":2730},[],[2732],{"type":56,"value":2733},"delta.minReaderVersion",{"type":56,"value":2735},"\u002F",{"type":43,"tag":83,"props":2737,"children":2739},{"className":2738},[],[2740],{"type":56,"value":2741},"minWriterVersion",{"type":56,"value":247},{"type":43,"tag":299,"props":2744,"children":2745},{},[2746,2751,2760,2765,2769,2773],{"type":43,"tag":321,"props":2747,"children":2748},{},[2749],{"type":56,"value":2750},"G4",{"type":43,"tag":321,"props":2752,"children":2753},{},[2754],{"type":43,"tag":83,"props":2755,"children":2757},{"className":2756},[],[2758],{"type":56,"value":2759},"SECURITY_MODEL_INCOMPATIBLE",{"type":43,"tag":321,"props":2761,"children":2762},{},[2763],{"type":56,"value":2764},"Synapse managed identity \u002F IP firewall not portable",{"type":43,"tag":321,"props":2766,"children":2767},{},[2768],{"type":56,"value":2682},{"type":43,"tag":321,"props":2770,"children":2771},{},[2772],{"type":56,"value":2650},{"type":43,"tag":321,"props":2774,"children":2775},{},[2776],{"type":56,"value":2777},"Reconfigure as Workspace Identity + Fabric Managed Private Endpoints",{"type":43,"tag":299,"props":2779,"children":2780},{},[2781,2786,2795,2800,2804,2808],{"type":43,"tag":321,"props":2782,"children":2783},{},[2784],{"type":56,"value":2785},"G5",{"type":43,"tag":321,"props":2787,"children":2788},{},[2789],{"type":43,"tag":83,"props":2790,"children":2792},{"className":2791},[],[2793],{"type":56,"value":2794},"GPU_POOL_UNSUPPORTED",{"type":43,"tag":321,"props":2796,"children":2797},{},[2798],{"type":56,"value":2799},"GPU-accelerated Spark pools not available in Fabric",{"type":43,"tag":321,"props":2801,"children":2802},{},[2803],{"type":56,"value":2645},{"type":43,"tag":321,"props":2805,"children":2806},{},[2807],{"type":56,"value":2650},{"type":43,"tag":321,"props":2809,"children":2810},{},[2811],{"type":56,"value":2812},"Migration blocker — keep workload in Synapse or use Azure ML",{"type":43,"tag":299,"props":2814,"children":2815},{},[2816,2821,2830,2835,2839,2843],{"type":43,"tag":321,"props":2817,"children":2818},{},[2819],{"type":56,"value":2820},"G6",{"type":43,"tag":321,"props":2822,"children":2823},{},[2824],{"type":43,"tag":83,"props":2825,"children":2827},{"className":2826},[],[2828],{"type":56,"value":2829},"DOTNET_SPARK_UNSUPPORTED",{"type":43,"tag":321,"props":2831,"children":2832},{},[2833],{"type":56,"value":2834},".NET for Spark (C#\u002FF# SJDs) not supported",{"type":43,"tag":321,"props":2836,"children":2837},{},[2838],{"type":56,"value":2645},{"type":43,"tag":321,"props":2840,"children":2841},{},[2842],{"type":56,"value":2650},{"type":43,"tag":321,"props":2844,"children":2845},{},[2846],{"type":56,"value":2847},"Migration blocker — rewrite in PySpark or keep in Synapse",{"type":43,"tag":299,"props":2849,"children":2850},{},[2851,2856,2865,2899,2903,2908],{"type":43,"tag":321,"props":2852,"children":2853},{},[2854],{"type":56,"value":2855},"G7",{"type":43,"tag":321,"props":2857,"children":2858},{},[2859],{"type":43,"tag":83,"props":2860,"children":2862},{"className":2861},[],[2863],{"type":56,"value":2864},"NULLABLE_POOL_REFERENCE",{"type":43,"tag":321,"props":2866,"children":2867},{},[2868,2874,2875,2881,2883,2889,2891,2897],{"type":43,"tag":83,"props":2869,"children":2871},{"className":2870},[],[2872],{"type":56,"value":2873},"bigDataPool",{"type":56,"value":2735},{"type":43,"tag":83,"props":2876,"children":2878},{"className":2877},[],[2879],{"type":56,"value":2880},"targetBigDataPool",{"type":56,"value":2882}," field is ",{"type":43,"tag":83,"props":2884,"children":2886},{"className":2885},[],[2887],{"type":56,"value":2888},"null",{"type":56,"value":2890}," (not missing) — causes ",{"type":43,"tag":83,"props":2892,"children":2894},{"className":2893},[],[2895],{"type":56,"value":2896},"NoneType",{"type":56,"value":2898}," crash",{"type":43,"tag":321,"props":2900,"children":2901},{},[2902],{"type":56,"value":2682},{"type":43,"tag":321,"props":2904,"children":2905},{},[2906],{"type":56,"value":2907},"No",{"type":43,"tag":321,"props":2909,"children":2910},{},[2911,2913,2919],{"type":56,"value":2912},"Use ",{"type":43,"tag":83,"props":2914,"children":2916},{"className":2915},[],[2917],{"type":56,"value":2918},"(x.get(\"bigDataPool\") or {}).get(...)",{"type":56,"value":2920}," pattern",{"type":43,"tag":299,"props":2922,"children":2923},{},[2924,2929,2938,2950,2955,2959],{"type":43,"tag":321,"props":2925,"children":2926},{},[2927],{"type":56,"value":2928},"G8",{"type":43,"tag":321,"props":2930,"children":2931},{},[2932],{"type":43,"tag":83,"props":2933,"children":2935},{"className":2934},[],[2936],{"type":56,"value":2937},"SESSION_CONFIG_IGNORED",{"type":43,"tag":321,"props":2939,"children":2940},{},[2941,2943,2948],{"type":56,"value":2942},"Some ",{"type":43,"tag":83,"props":2944,"children":2946},{"className":2945},[],[2947],{"type":56,"value":1893},{"type":56,"value":2949}," keys silently ignored in Fabric",{"type":43,"tag":321,"props":2951,"children":2952},{},[2953],{"type":56,"value":2954},"Low",{"type":43,"tag":321,"props":2956,"children":2957},{},[2958],{"type":56,"value":2907},{"type":43,"tag":321,"props":2960,"children":2961},{},[2962],{"type":56,"value":2963},"Remove unsupported keys; use Environment for pool-level config",{"type":43,"tag":299,"props":2965,"children":2966},{},[2967,2972,2981,2986,2990,2995],{"type":43,"tag":321,"props":2968,"children":2969},{},[2970],{"type":56,"value":2971},"G9",{"type":43,"tag":321,"props":2973,"children":2974},{},[2975],{"type":43,"tag":83,"props":2976,"children":2978},{"className":2977},[],[2979],{"type":56,"value":2980},"SHORTCUT_CONNECTION_FAILED",{"type":43,"tag":321,"props":2982,"children":2983},{},[2984],{"type":56,"value":2985},"ADLS shortcut creation fails (connection\u002Fpermission)",{"type":43,"tag":321,"props":2987,"children":2988},{},[2989],{"type":56,"value":2645},{"type":43,"tag":321,"props":2991,"children":2992},{},[2993],{"type":56,"value":2994},"Partial",{"type":43,"tag":321,"props":2996,"children":2997},{},[2998],{"type":56,"value":2999},"Verify connection credential type (Key > WorkspaceIdentity > OAuth2) and RBAC",{"type":43,"tag":281,"props":3001,"children":3002},{},[],{"type":43,"tag":162,"props":3004,"children":3006},{"id":3005},"post-migration-whats-next",[3007],{"type":56,"value":699},{"type":43,"tag":48,"props":3009,"children":3010},{},[3011],{"type":56,"value":3012},"After completing Phases 0–3 and validation, hand off to these companion skills for ongoing operations:",{"type":43,"tag":710,"props":3014,"children":3016},{"id":3015},"agentic-exploration-workflow",[3017],{"type":56,"value":3018},"Agentic Exploration Workflow",{"type":43,"tag":48,"props":3020,"children":3021},{},[3022],{"type":56,"value":3023},"Once data has landed in Fabric Lakehouses, use this sequence to validate and explore:",{"type":43,"tag":117,"props":3025,"children":3026},{},[3027,3044,3061,3077,3099,3116],{"type":43,"tag":72,"props":3028,"children":3029},{},[3030,3035,3037,3043],{"type":43,"tag":52,"props":3031,"children":3032},{},[3033],{"type":56,"value":3034},"Discover",{"type":56,"value":3036}," → List schemas, tables, and row counts via Lakehouse SQL Endpoint (",{"type":43,"tag":83,"props":3038,"children":3040},{"className":3039},[],[3041],{"type":56,"value":3042},"sqldw-consumption-cli",{"type":56,"value":247},{"type":43,"tag":72,"props":3045,"children":3046},{},[3047,3052,3053,3059],{"type":43,"tag":52,"props":3048,"children":3049},{},[3050],{"type":56,"value":3051},"Sample",{"type":56,"value":482},{"type":43,"tag":83,"props":3054,"children":3056},{"className":3055},[],[3057],{"type":56,"value":3058},"SELECT TOP 5",{"type":56,"value":3060}," on migrated tables to verify data integrity",{"type":43,"tag":72,"props":3062,"children":3063},{},[3064,3069,3071,3075],{"type":43,"tag":52,"props":3065,"children":3066},{},[3067],{"type":56,"value":3068},"Validate",{"type":56,"value":3070}," → Run validation checks from ",{"type":43,"tag":187,"props":3072,"children":3073},{"href":580},[3074],{"type":56,"value":583},{"type":56,"value":3076}," (V1–V6)",{"type":43,"tag":72,"props":3078,"children":3079},{},[3080,3085,3087,3093,3094],{"type":43,"tag":52,"props":3081,"children":3082},{},[3083],{"type":56,"value":3084},"Explore",{"type":56,"value":3086}," → Write Spark or T-SQL queries against migrated data using ",{"type":43,"tag":83,"props":3088,"children":3090},{"className":3089},[],[3091],{"type":56,"value":3092},"spark-consumption-cli",{"type":56,"value":2275},{"type":43,"tag":83,"props":3095,"children":3097},{"className":3096},[],[3098],{"type":56,"value":3042},{"type":43,"tag":72,"props":3100,"children":3101},{},[3102,3107,3109,3114],{"type":43,"tag":52,"props":3103,"children":3104},{},[3105],{"type":56,"value":3106},"Build",{"type":56,"value":3108}," → Create Gold-layer aggregations with ",{"type":43,"tag":83,"props":3110,"children":3112},{"className":3111},[],[3113],{"type":56,"value":2145},{"type":56,"value":3115}," (Bronze → Silver → Gold)",{"type":43,"tag":72,"props":3117,"children":3118},{},[3119,3124,3126],{"type":43,"tag":52,"props":3120,"children":3121},{},[3122],{"type":56,"value":3123},"Consume",{"type":56,"value":3125}," → Build semantic models and reports with ",{"type":43,"tag":83,"props":3127,"children":3129},{"className":3128},[],[3130],{"type":56,"value":3131},"semantic-model-authoring",{"type":43,"tag":710,"props":3133,"children":3135},{"id":3134},"companion-skill-cross-references",[3136],{"type":56,"value":3137},"Companion Skill Cross-References",{"type":43,"tag":291,"props":3139,"children":3140},{},[3141,3162],{"type":43,"tag":295,"props":3142,"children":3143},{},[3144],{"type":43,"tag":299,"props":3145,"children":3146},{},[3147,3152,3157],{"type":43,"tag":303,"props":3148,"children":3149},{},[3150],{"type":56,"value":3151},"Post-Migration Task",{"type":43,"tag":303,"props":3153,"children":3154},{},[3155],{"type":56,"value":3156},"Skill",{"type":43,"tag":303,"props":3158,"children":3159},{},[3160],{"type":56,"value":3161},"When to Use",{"type":43,"tag":314,"props":3163,"children":3164},{},[3165,3186,3207,3229,3250,3272,3293,3315],{"type":43,"tag":299,"props":3166,"children":3167},{},[3168,3173,3181],{"type":43,"tag":321,"props":3169,"children":3170},{},[3171],{"type":56,"value":3172},"Interactive Lakehouse SQL queries",{"type":43,"tag":321,"props":3174,"children":3175},{},[3176],{"type":43,"tag":83,"props":3177,"children":3179},{"className":3178},[],[3180],{"type":56,"value":3042},{"type":43,"tag":321,"props":3182,"children":3183},{},[3184],{"type":56,"value":3185},"Exploring migrated data via SQL Endpoint",{"type":43,"tag":299,"props":3187,"children":3188},{},[3189,3194,3202],{"type":43,"tag":321,"props":3190,"children":3191},{},[3192],{"type":56,"value":3193},"Interactive PySpark exploration",{"type":43,"tag":321,"props":3195,"children":3196},{},[3197],{"type":43,"tag":83,"props":3198,"children":3200},{"className":3199},[],[3201],{"type":56,"value":3092},{"type":43,"tag":321,"props":3203,"children":3204},{},[3205],{"type":56,"value":3206},"Ad-hoc Spark queries on migrated Lakehouses",{"type":43,"tag":299,"props":3208,"children":3209},{},[3210,3215,3224],{"type":43,"tag":321,"props":3211,"children":3212},{},[3213],{"type":56,"value":3214},"Notebook & SJD authoring (new)",{"type":43,"tag":321,"props":3216,"children":3217},{},[3218],{"type":43,"tag":83,"props":3219,"children":3221},{"className":3220},[],[3222],{"type":56,"value":3223},"spark-authoring-cli",{"type":43,"tag":321,"props":3225,"children":3226},{},[3227],{"type":56,"value":3228},"Creating new Spark items post-migration",{"type":43,"tag":299,"props":3230,"children":3231},{},[3232,3237,3245],{"type":43,"tag":321,"props":3233,"children":3234},{},[3235],{"type":56,"value":3236},"Medallion architecture build-out",{"type":43,"tag":321,"props":3238,"children":3239},{},[3240],{"type":43,"tag":83,"props":3241,"children":3243},{"className":3242},[],[3244],{"type":56,"value":2145},{"type":43,"tag":321,"props":3246,"children":3247},{},[3248],{"type":56,"value":3249},"Structuring Bronze\u002FSilver\u002FGold after lift-and-shift",{"type":43,"tag":299,"props":3251,"children":3252},{},[3253,3258,3267],{"type":43,"tag":321,"props":3254,"children":3255},{},[3256],{"type":56,"value":3257},"Warehouse performance monitoring",{"type":43,"tag":321,"props":3259,"children":3260},{},[3261],{"type":43,"tag":83,"props":3262,"children":3264},{"className":3263},[],[3265],{"type":56,"value":3266},"sqldw-operations-cli",{"type":43,"tag":321,"props":3268,"children":3269},{},[3270],{"type":56,"value":3271},"Diagnosing slow queries on Fabric Warehouse",{"type":43,"tag":299,"props":3273,"children":3274},{},[3275,3280,3288],{"type":43,"tag":321,"props":3276,"children":3277},{},[3278],{"type":56,"value":3279},"Semantic model creation",{"type":43,"tag":321,"props":3281,"children":3282},{},[3283],{"type":43,"tag":83,"props":3284,"children":3286},{"className":3285},[],[3287],{"type":56,"value":3131},{"type":43,"tag":321,"props":3289,"children":3290},{},[3291],{"type":56,"value":3292},"Building Power BI models over migrated data",{"type":43,"tag":299,"props":3294,"children":3295},{},[3296,3301,3310],{"type":43,"tag":321,"props":3297,"children":3298},{},[3299],{"type":56,"value":3300},"Report consumption & DAX",{"type":43,"tag":321,"props":3302,"children":3303},{},[3304],{"type":43,"tag":83,"props":3305,"children":3307},{"className":3306},[],[3308],{"type":56,"value":3309},"fabriciq",{"type":43,"tag":321,"props":3311,"children":3312},{},[3313],{"type":56,"value":3314},"Querying existing semantic models",{"type":43,"tag":299,"props":3316,"children":3317},{},[3318,3323,3339],{"type":43,"tag":321,"props":3319,"children":3320},{},[3321],{"type":56,"value":3322},"KQL analytics",{"type":43,"tag":321,"props":3324,"children":3325},{},[3326,3332,3333],{"type":43,"tag":83,"props":3327,"children":3329},{"className":3328},[],[3330],{"type":56,"value":3331},"eventhouse-authoring-cli",{"type":56,"value":213},{"type":43,"tag":83,"props":3334,"children":3336},{"className":3335},[],[3337],{"type":56,"value":3338},"eventhouse-consumption-cli",{"type":43,"tag":321,"props":3340,"children":3341},{},[3342],{"type":56,"value":3343},"If migrating real-time workloads to Eventhouse",{"type":43,"tag":710,"props":3345,"children":3347},{"id":3346},"variable-library-for-environment-promotion",[3348],{"type":56,"value":3349},"Variable Library for Environment Promotion",{"type":43,"tag":48,"props":3351,"children":3352},{},[3353,3355,3360],{"type":56,"value":3354},"After migration, avoid hardcoded workspace\u002Fitem IDs by centralizing configuration in a ",{"type":43,"tag":52,"props":3356,"children":3357},{},[3358],{"type":56,"value":3359},"Variable Library",{"type":56,"value":3361}," item:",{"type":43,"tag":1856,"props":3363,"children":3365},{"className":2333,"code":3364,"language":2335,"meta":1861,"style":1861},"# Read config from Variable Library — works in notebooks\nlib = notebookutils.variableLibrary.getLibrary(\"MigrationConfig\")\nlakehouse_name = lib.lakehouse_name\nworkspace_id = lib.workspace_id\n\n# ❌ WRONG — .get() does not exist\n# notebookutils.variableLibrary.get(\"MigrationConfig\", \"lakehouse_name\")\n",[3366],{"type":43,"tag":83,"props":3367,"children":3368},{"__ignoreMap":1861},[3369,3377,3385,3393,3401,3408,3417],{"type":43,"tag":2341,"props":3370,"children":3371},{"class":2343,"line":2344},[3372],{"type":43,"tag":2341,"props":3373,"children":3374},{},[3375],{"type":56,"value":3376},"# Read config from Variable Library — works in notebooks\n",{"type":43,"tag":2341,"props":3378,"children":3379},{"class":2343,"line":2353},[3380],{"type":43,"tag":2341,"props":3381,"children":3382},{},[3383],{"type":56,"value":3384},"lib = notebookutils.variableLibrary.getLibrary(\"MigrationConfig\")\n",{"type":43,"tag":2341,"props":3386,"children":3387},{"class":2343,"line":2362},[3388],{"type":43,"tag":2341,"props":3389,"children":3390},{},[3391],{"type":56,"value":3392},"lakehouse_name = lib.lakehouse_name\n",{"type":43,"tag":2341,"props":3394,"children":3395},{"class":2343,"line":2372},[3396],{"type":43,"tag":2341,"props":3397,"children":3398},{},[3399],{"type":56,"value":3400},"workspace_id = lib.workspace_id\n",{"type":43,"tag":2341,"props":3402,"children":3403},{"class":2343,"line":2381},[3404],{"type":43,"tag":2341,"props":3405,"children":3406},{"emptyLinePlaceholder":2366},[3407],{"type":56,"value":2369},{"type":43,"tag":2341,"props":3409,"children":3411},{"class":2343,"line":3410},6,[3412],{"type":43,"tag":2341,"props":3413,"children":3414},{},[3415],{"type":56,"value":3416},"# ❌ WRONG — .get() does not exist\n",{"type":43,"tag":2341,"props":3418,"children":3420},{"class":2343,"line":3419},7,[3421],{"type":43,"tag":2341,"props":3422,"children":3423},{},[3424],{"type":56,"value":3425},"# notebookutils.variableLibrary.get(\"MigrationConfig\", \"lakehouse_name\")\n",{"type":43,"tag":68,"props":3427,"children":3428},{},[3429,3454,3473,3493],{"type":43,"tag":72,"props":3430,"children":3431},{},[3432,3433,3438,3439,3445,3446,3452],{"type":56,"value":2912},{"type":43,"tag":52,"props":3434,"children":3435},{},[3436],{"type":56,"value":3437},"Value Sets",{"type":56,"value":2219},{"type":43,"tag":83,"props":3440,"children":3442},{"className":3441},[],[3443],{"type":56,"value":3444},"valueSets\u002Fdev.json",{"type":56,"value":2244},{"type":43,"tag":83,"props":3447,"children":3449},{"className":3448},[],[3450],{"type":56,"value":3451},"valueSets\u002Fprod.json",{"type":56,"value":3453},") to promote across environments without code changes",{"type":43,"tag":72,"props":3455,"children":3456},{},[3457,3459,3465,3467],{"type":56,"value":3458},"Boolean values are returned as strings — compare with ",{"type":43,"tag":83,"props":3460,"children":3462},{"className":3461},[],[3463],{"type":56,"value":3464},".lower() == \"true\"",{"type":56,"value":3466},", not ",{"type":43,"tag":83,"props":3468,"children":3470},{"className":3469},[],[3471],{"type":56,"value":3472},"bool()",{"type":43,"tag":72,"props":3474,"children":3475},{},[3476,3478,3484,3486,3492],{"type":56,"value":3477},"In Data Pipelines, reference via ",{"type":43,"tag":83,"props":3479,"children":3481},{"className":3480},[],[3482],{"type":56,"value":3483},"@pipeline().libraryVariables.\u003Cname>",{"type":56,"value":3485}," (not ",{"type":43,"tag":83,"props":3487,"children":3489},{"className":3488},[],[3490],{"type":56,"value":3491},"@variables()",{"type":56,"value":247},{"type":43,"tag":72,"props":3494,"children":3495},{},[3496,3498],{"type":56,"value":3497},"Full Variable Library patterns → see ",{"type":43,"tag":187,"props":3499,"children":3501},{"href":3500},"..\u002F..\u002Fcommon\u002Fnotebook-authoring\u002Fcontext-and-params.md#variable-library",[3502],{"type":56,"value":3503},"common\u002Fnotebook-authoring\u002Fcontext-and-params.md § Variable Library",{"type":43,"tag":3505,"props":3506,"children":3507},"style",{},[3508],{"type":56,"value":3509},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":3511,"total":3615},[3512,3523,3539,3557,3572,3587,3602],{"slug":64,"name":64,"fn":3513,"description":3514,"org":3515,"tags":3516,"stars":26,"repoUrl":27,"updatedAt":3522},"check for Fabric skill marketplace updates","Check an installed skills-for-fabric plugin bundle or git clone for updates, show the matching changelog, and provide host-appropriate update guidance. Use when the user wants to: (1) check for skill updates, (2) see what changed, (3) verify the installed version. Triggers: \"check for updates\", \"am I up to date\", \"what version\", \"update skills\", \"show changelog\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3517,3518,3519],{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},{"name":3520,"slug":3521,"type":15},"Operations","operations","2026-07-24T05:41:25.892114",{"slug":3524,"name":3524,"fn":3525,"description":3526,"org":3527,"tags":3528,"stars":26,"repoUrl":27,"updatedAt":3538},"databricks-migration","migrate Databricks notebooks to Microsoft Fabric","Port Databricks notebooks and jobs to Microsoft Fabric. Provides an exhaustive dbutils to notebookutils substitution table: fs operations (runtime mounts or OneLake Shortcuts), secret scope to Key Vault URL conversion, notebook run and exit, widget replacement with parameter-tagged cells, and library install replacement with Fabric Environments. Covers Unity Catalog three-level namespace reduction to Lakehouse two-level schemas, DBFS path conversion to OneLake, Databricks Jobs to Spark Job Definitions, MLflow tracking URI removal, and Photon to Native Execution Engine substitution. Use when the user wants to: (1) replace dbutils with notebookutils, (2) collapse Unity Catalog namespaces to Lakehouse schemas, (3) convert Databricks Jobs or Delta Live Tables. Triggers: \"migrate from databricks\", \"databricks to fabric\", \"dbutils to notebookutils\", \"dbutils fabric\", \"unity catalog migration\", \"dbfs to onelake\", \"databricks notebook migration\", \"delta live tables fabric\", \"photon native execution\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3529,3530,3533,3534,3535,3536],{"name":17,"slug":18,"type":15},{"name":3531,"slug":3532,"type":15},"Databricks","databricks",{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},{"name":21,"slug":22,"type":15},{"name":1296,"slug":3537,"type":15},"notebooks","2026-07-24T05:41:22.914341",{"slug":3540,"name":3540,"fn":3541,"description":3542,"org":3543,"tags":3544,"stars":26,"repoUrl":27,"updatedAt":3556},"dataflows-authoring-cli","manage Microsoft Fabric Dataflows via CLI","Create, update, delete, and refresh Fabric Dataflows Gen2 with write-side CLI via Fabric APIs. Build mashup.pq and queryMetadata.json, preview candidate M with executeQuery\u002FcustomMashupDocument, bind connections, and configure output destinations. For saved query execution or refresh-status reads, use `dataflows-consumption-cli`. If a request explicitly insists on the Dataflows consumption or read-only path for a mutation, do not route here; let consumption refuse before any separately confirmed authoring handoff. Triggers: \"create dataflow\", \"update dataflow\", \"delete dataflow\", \"trigger dataflow refresh\", \"preview Power Query M\", \"preview before save\", \"customMashupDocument\", \"create Fabric data source connection\", \"create SQL Server source REST\", \"POST \u002Fv1\u002Fconnections\", \"supportedConnectionTypes\", \"passwordReference\", \"bind connection\", \"dataflow output destination\", \"dataflow write to lakehouse\", \"dataflow write to warehouse\", \"dataflow write to ADX\", \"DataDestinations annotation\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3545,3548,3549,3552,3553],{"name":3546,"slug":3547,"type":15},"CLI","cli",{"name":17,"slug":18,"type":15},{"name":3550,"slug":3551,"type":15},"Data Pipeline","data-pipeline",{"name":24,"slug":25,"type":15},{"name":3554,"slug":3555,"type":15},"REST API","rest-api","2026-07-31T05:54:59.059517",{"slug":2145,"name":2145,"fn":3558,"description":3559,"org":3560,"tags":3561,"stars":26,"repoUrl":27,"updatedAt":3571},"implement Medallion Architecture in Microsoft Fabric","Plan and implement end-to-end Microsoft Fabric data platforms and Medallion Architecture (Bronze\u002FSilver\u002FGold) lakehouse patterns using PySpark, Delta Lake, Lakehouse\u002FWarehouse items, Fabric Pipelines, and semantic-model handoff. Use when the user wants to: (1) design a Bronze\u002FSilver\u002FGold data lakehouse, (2) plan an ingestion-to-semantic-model Fabric data platform, (3) set up multi-layer workspaces with lakehouses for each tier, (4) build ingestion-to-analytics pipelines with data quality enforcement, (5) orchestrate Bronze-to-Silver-to-Gold flows via notebooks. For natural-language business questions over existing Power BI report data, use `fabriciq`. Triggers: \"medallion architecture\", \"bronze silver gold\", \"lakehouse layers\", \"e2e data pipeline\", \"end-to-end lakehouse\", \"data lakehouse pattern\", \"multi-layer lakehouse\", \"build medallion\", \"setup medallion\", \"end-to-end Fabric data platform\", \"bronze silver gold platform\", \"ingestion semantic model platform\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3562,3565,3566,3567,3568],{"name":3563,"slug":3564,"type":15},"Architecture","architecture",{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},{"name":3569,"slug":3570,"type":15},"PySpark","pyspark","2026-07-31T05:54:57.038396",{"slug":3331,"name":3331,"fn":3573,"description":3574,"org":3575,"tags":3576,"stars":26,"repoUrl":27,"updatedAt":3586},"manage Fabric Eventhouse and KQL databases","Execute KQL management commands (table management, ingestion, policies, functions, materialized views) against Fabric Eventhouse and KQL Databases via CLI. Use when the user wants to:\n  1. Create or alter KQL tables, columns, or functions\n  2. Ingest data into an Eventhouse (inline, from storage, streaming)\n  3. Configure retention, caching, or partitioning policies\n  4. Create or manage materialized views and update policies\n  5. Manage data mappings for ingestion pipelines\n  6. Deploy KQL schema via scripts\nTriggers: \"create kql table\", \"kql ingestion\", \"ingest into eventhouse\", \"kql function\", \"materialized view\", \"kql retention policy\", \"eventhouse schema\", \"kql authoring\", \"create eventhouse table\", \"kql mapping\"\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3577,3580,3583,3584,3585],{"name":3578,"slug":3579,"type":15},"Database","database",{"name":3581,"slug":3582,"type":15},"KQL","kql",{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},{"name":3520,"slug":3521,"type":15},"2026-04-06T18:36:51.340409",{"slug":3338,"name":3338,"fn":3588,"description":3589,"org":3590,"tags":3591,"stars":26,"repoUrl":27,"updatedAt":3601},"query Fabric Eventhouse with KQL","Run KQL queries against Fabric Eventhouse for real-time intelligence and time-series analytics using `az rest` against the Kusto REST API. Covers KQL operators (where, summarize, join, render), Eventhouse schema discovery (.show tables), time-series patterns with bin(), and ingestion monitoring. Use when the user wants to:\n  1. Run read-only KQL queries against an Eventhouse or KQL Database\n  2. Discover Eventhouse table schema and metadata\n  3. Analyse real-time or time-series data with KQL operators\n  4. Monitor ingestion health and active KQL queries\n  5. Export KQL results to JSON\nTriggers: \"kql query\", \"kusto query\", \"eventhouse query\", \"kql database\", \"real-time intelligence\", \"time-series kql\", \"query eventhouse\", \"explore eventhouse\", \"show tables kql\"\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3592,3595,3596,3597,3598],{"name":3593,"slug":3594,"type":15},"Analytics","analytics",{"name":3581,"slug":3582,"type":15},{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},{"name":3599,"slug":3600,"type":15},"Real-Time Intelligence","real-time-intelligence","2026-04-06T18:36:45.018807",{"slug":3603,"name":3603,"fn":3604,"description":3605,"org":3606,"tags":3607,"stars":26,"repoUrl":27,"updatedAt":3614},"eventstream-consumption-cli","monitor Fabric Eventstream ingestion pipelines","List, inspect, and monitor Fabric Eventstream real-time ingestion pipelines via the Items REST API. Discover Eventstreams across workspaces, decode base64 graph topologies tracing event flow from source through operators to destination nodes. Validate connection IDs, wiring, retention policies (1-90 days), and throughput levels. Retrieve Custom Endpoint Kafka credentials via Topology API. **Invoke this skill** to: (1) list Eventstreams, (2) inspect Eventstream topology showing sources and destinations, (3) validate Eventstream configurations, (4) check Eventstream retention policy and throughput level, (5) get connection strings. Triggers: \"list eventstreams\", \"inspect eventstream\", \"describe eventstream topology\", \"eventstream operator nodes\", \"eventstream sources and destinations\", \"eventstream health\", \"eventstream status\", \"eventstream configuration\", \"eventstream retention\", \"eventstream throughput level\", \"eventstream connection string\", \"custom endpoint credentials\", \"check eventstream\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3608,3609,3610,3611],{"name":3546,"slug":3547,"type":15},{"name":17,"slug":18,"type":15},{"name":24,"slug":25,"type":15},{"name":3612,"slug":3613,"type":15},"Monitoring","monitoring","2026-07-31T05:55:03.045486",19,{"items":3617,"total":3803},[3618,3640,3659,3676,3691,3707,3718,3731,3746,3761,3778,3791],{"slug":3619,"name":3619,"fn":3620,"description":3621,"org":3622,"tags":3623,"stars":3637,"repoUrl":3638,"updatedAt":3639},"rushstack-best-practices","manage Rush monorepos with best practices","Provides best practices and guidance for working with Rush monorepos. Use when the user is working in a Rush-based repository, asks about Rush commands (install, update, build, rebuild), needs help with project selection, dependency management, build caching, subspace configuration, or troubleshooting Rush-specific issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3624,3627,3630,3631,3634],{"name":3625,"slug":3626,"type":15},"Engineering","engineering",{"name":3628,"slug":3629,"type":15},"Local Development","local-development",{"name":9,"slug":8,"type":15},{"name":3632,"slug":3633,"type":15},"Project Management","project-management",{"name":3635,"slug":3636,"type":15},"Rush","rush",6484,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frushstack","2026-04-06T18:34:44.965032",{"slug":3641,"name":3641,"fn":3642,"description":3643,"org":3644,"tags":3645,"stars":3656,"repoUrl":3657,"updatedAt":3658},"azure-ai-agents-persistent-dotnet","build AI agents with Azure .NET SDK","Azure AI Agents Persistent SDK for .NET. Low-level SDK for creating and managing AI agents with threads, messages, runs, and tools. Use for agent CRUD, conversation threads, streaming responses, function calling, file search, and code interpreter. Triggers: \"PersistentAgentsClient\", \"persistent agents\", \"agent threads\", \"agent runs\", \"streaming agents\", \"function calling agents .NET\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3646,3649,3652,3653],{"name":3647,"slug":3648,"type":15},".NET","net",{"name":3650,"slug":3651,"type":15},"Agents","agents",{"name":13,"slug":14,"type":15},{"name":3654,"slug":3655,"type":15},"LLM","llm",2804,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills","2026-07-03T16:32:10.297433",{"slug":3660,"name":3660,"fn":3661,"description":3662,"org":3663,"tags":3664,"stars":3656,"repoUrl":3657,"updatedAt":3675},"azure-ai-anomalydetector-java","build anomaly detection applications with Java","Build anomaly detection applications with Azure AI Anomaly Detector SDK for Java. Use when implementing univariate\u002Fmultivariate anomaly detection, time-series analysis, or AI-powered monitoring.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3665,3666,3667,3670,3673,3674],{"name":3593,"slug":3594,"type":15},{"name":13,"slug":14,"type":15},{"name":3668,"slug":3669,"type":15},"Data Analysis","data-analysis",{"name":3671,"slug":3672,"type":15},"Java","java",{"name":9,"slug":8,"type":15},{"name":3612,"slug":3613,"type":15},"2026-05-13T06:14:16.261754",{"slug":3677,"name":3677,"fn":3678,"description":3679,"org":3680,"tags":3681,"stars":3656,"repoUrl":3657,"updatedAt":3690},"azure-ai-contentsafety-java","build content moderation applications with Azure AI","Build content moderation applications with Azure AI Content Safety SDK for Java. Use when implementing text\u002Fimage analysis, blocklist management, or harm detection for hate, violence, sexual content, and self-harm.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3682,3685,3686,3687],{"name":3683,"slug":3684,"type":15},"AI Infrastructure","ai-infrastructure",{"name":13,"slug":14,"type":15},{"name":3671,"slug":3672,"type":15},{"name":3688,"slug":3689,"type":15},"Security","security","2026-07-07T06:53:31.293235",{"slug":3692,"name":3692,"fn":3693,"description":3694,"org":3695,"tags":3696,"stars":3656,"repoUrl":3657,"updatedAt":3706},"azure-ai-contentsafety-py","detect harmful content with Azure AI Content Safety","Azure AI Content Safety SDK for Python. Use for detecting harmful content in text and images with multi-severity classification.\nTriggers: \"azure-ai-contentsafety\", \"ContentSafetyClient\", \"content moderation\", \"harmful content\", \"text analysis\", \"image analysis\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3697,3698,3701,3702,3703,3705],{"name":13,"slug":14,"type":15},{"name":3699,"slug":3700,"type":15},"Compliance","compliance",{"name":3654,"slug":3655,"type":15},{"name":9,"slug":8,"type":15},{"name":3704,"slug":2335,"type":15},"Python",{"name":3688,"slug":3689,"type":15},"2026-07-18T05:14:23.017504",{"slug":3708,"name":3708,"fn":3709,"description":3710,"org":3711,"tags":3712,"stars":3656,"repoUrl":3657,"updatedAt":3717},"azure-ai-language-conversations-py","implement conversational language understanding with Python","Implement Conversational Language Understanding (CLU) using the azure-ai-language-conversations Python SDK. Use when working with ConversationAnalysisClient to analyze conversation intent and entities, building NLP features, or integrating language understanding into applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3713,3714,3715,3716],{"name":3593,"slug":3594,"type":15},{"name":13,"slug":14,"type":15},{"name":3654,"slug":3655,"type":15},{"name":3704,"slug":2335,"type":15},"2026-07-31T05:54:29.068751",{"slug":3719,"name":3719,"fn":3720,"description":3721,"org":3722,"tags":3723,"stars":3656,"repoUrl":3657,"updatedAt":3730},"azure-ai-translation-text-py","translate text using Azure AI services","Azure AI Text Translation SDK for real-time text translation, transliteration, language detection, and dictionary lookup. Use for translating text content in applications.\nTriggers: \"text translation\", \"translator\", \"translate text\", \"transliterate\", \"TextTranslationClient\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3724,3727,3728,3729],{"name":3725,"slug":3726,"type":15},"API Development","api-development",{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":3704,"slug":2335,"type":15},"2026-07-18T05:14:16.988376",{"slug":3732,"name":3732,"fn":3733,"description":3734,"org":3735,"tags":3736,"stars":3656,"repoUrl":3657,"updatedAt":3745},"azure-ai-vision-imageanalysis-py","analyze images with Azure AI Vision","Azure AI Vision Image Analysis SDK for captions, tags, objects, OCR, people detection, and smart cropping. Use for computer vision and image understanding tasks.\nTriggers: \"image analysis\", \"computer vision\", \"OCR\", \"object detection\", \"ImageAnalysisClient\", \"image caption\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3737,3738,3741,3744],{"name":13,"slug":14,"type":15},{"name":3739,"slug":3740,"type":15},"Computer Vision","computer-vision",{"name":3742,"slug":3743,"type":15},"Images","images",{"name":3704,"slug":2335,"type":15},"2026-07-18T05:14:18.007737",{"slug":3747,"name":3747,"fn":3748,"description":3749,"org":3750,"tags":3751,"stars":3656,"repoUrl":3657,"updatedAt":3760},"azure-appconfiguration-java","manage configuration with Azure App Configuration","Azure App Configuration SDK for Java. Centralized application configuration management with key-value settings, feature flags, and snapshots.\nTriggers: \"ConfigurationClient java\", \"app configuration java\", \"feature flag java\", \"configuration setting java\", \"azure config java\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3752,3753,3756,3759],{"name":13,"slug":14,"type":15},{"name":3754,"slug":3755,"type":15},"Configuration","configuration",{"name":3757,"slug":3758,"type":15},"Feature Flags","feature-flags",{"name":3671,"slug":3672,"type":15},"2026-07-03T16:32:01.278468",{"slug":3762,"name":3762,"fn":3763,"description":3764,"org":3765,"tags":3766,"stars":3656,"repoUrl":3657,"updatedAt":3777},"azure-cosmos-rust","build applications with Azure Cosmos DB","Azure Cosmos DB library for Rust (NoSQL API). Document CRUD, containers, and globally distributed data.\nTriggers: \"cosmos db rust\", \"CosmosClient rust\", \"document crud rust\", \"NoSQL rust\", \"partition key rust\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3767,3770,3771,3774],{"name":3768,"slug":3769,"type":15},"Cosmos DB","cosmos-db",{"name":3578,"slug":3579,"type":15},{"name":3772,"slug":3773,"type":15},"NoSQL","nosql",{"name":3775,"slug":3776,"type":15},"Rust","rust","2026-07-31T05:54:27.021432",{"slug":3779,"name":3779,"fn":3763,"description":3780,"org":3781,"tags":3782,"stars":3656,"repoUrl":3657,"updatedAt":3790},"azure-cosmos-ts","Azure Cosmos DB JavaScript\u002FTypeScript SDK (@azure\u002Fcosmos) for data plane operations. Use for CRUD operations on documents, queries, bulk operations, and container management. Triggers: \"Cosmos DB\", \"@azure\u002Fcosmos\", \"CosmosClient\", \"document CRUD\", \"NoSQL queries\", \"bulk operations\", \"partition key\", \"container.items\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3783,3784,3785,3786,3787],{"name":3768,"slug":3769,"type":15},{"name":3578,"slug":3579,"type":15},{"name":9,"slug":8,"type":15},{"name":3772,"slug":3773,"type":15},{"name":3788,"slug":3789,"type":15},"TypeScript","typescript","2026-07-03T16:31:19.368382",{"slug":3792,"name":3792,"fn":3793,"description":3794,"org":3795,"tags":3796,"stars":3656,"repoUrl":3657,"updatedAt":3802},"azure-data-tables-java","build table storage applications with Java","Build table storage applications with Azure Tables SDK for Java. Use when working with Azure Table Storage or Cosmos DB Table API for NoSQL key-value data, schemaless storage, or structured data at scale.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3797,3798,3799,3800,3801],{"name":13,"slug":14,"type":15},{"name":3768,"slug":3769,"type":15},{"name":3578,"slug":3579,"type":15},{"name":3671,"slug":3672,"type":15},{"name":3772,"slug":3773,"type":15},"2026-05-13T06:14:17.582229",267]