[Canvas Apps] Add skill to migrate apps with SP list data sources to Dataverse Tables#103
[Canvas Apps] Add skill to migrate apps with SP list data sources to Dataverse Tables#103rsantos00 wants to merge 2 commits intomicrosoft:mainfrom
Conversation
Add a new skill to migrate Apps with Sharepoint list datasources to Dataverse tables.
|
@microsoft-github-policy-service agree |
|
@microsoft-github-policy-service agree company="Microsoft" |
There was a problem hiding this comment.
Pull request overview
Adds a new Canvas Apps skill intended to guide migration of Canvas App .pa.yaml formulas from SharePoint (and other non-Dataverse sources) to Dataverse tables, using the Canvas Authoring MCP workflow.
Changes:
- Introduces a new
migrate-to-dataverseskill with a prescribed discovery → mapping → replacement → compile/validate workflow. - Adds user-facing guidance for building a column mapping plan and requesting approval before applying edits.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| version: 1.0.0 | ||
| description: Read the YAML files of an existing Canvas App and replace Power FX data source calls with equivalent Dataverse table calls. USE WHEN the user wants to migrate, replace, or update data source references in pa.yaml files to point to Dataverse tables. | ||
| author: Rui Santos | ||
| user-invocable: true |
There was a problem hiding this comment.
The skill frontmatter is missing an allowed-tools entry. In this plugin, other skills declare allowed-tools to permit required MCP tools and file operations; without it, this skill may be unable to call sync_canvas, list_data_sources, get_data_source_schema, compile_canvas, or edit files at runtime.
| user-invocable: true | |
| user-invocable: true | |
| allowed-tools: | |
| - sync_canvas | |
| - list_data_sources | |
| - get_data_source_schema | |
| - compile_canvas | |
| - read_file | |
| - edit_file |
| ## CRITICAL: Sync the Canvas App First | ||
|
|
||
| Before reading or editing any YAML files, call the `sync_canvas` MCP tool to ensure a local copy of the canvas app YAML is present and up to date. This pulls the current app state from the coauthoring session into local `.pa.yaml` files. | ||
|
|
||
| Only proceed after `sync_canvas` completes successfully. |
There was a problem hiding this comment.
This workflow instructs calling sync_canvas/compile_canvas but never establishes a working directory or specifies the target directory argument. Other canvas-app skills create a dedicated folder and pass that absolute path to these tools to avoid syncing/editing into the repo root and to ensure compilation runs against the right files.
| description: Read the YAML files of an existing Canvas App and replace Power FX data source calls with equivalent Dataverse table calls. USE WHEN the user wants to migrate, replace, or update data source references in pa.yaml files to point to Dataverse tables. | ||
| author: Rui Santos | ||
| user-invocable: true | ||
| --- | ||
|
|
||
| # Migrate Canvas App Data Sources to Dataverse | ||
|
|
||
| Read the YAML files of the current Canvas App and replace all Power FX data source calls with Dataverse equivalents for the following requirements: |
There was a problem hiding this comment.
The document uses both "Power FX" and "Power Fx"; elsewhere in this plugin (and in TechnicalGuide.md) the casing is consistently "Power Fx". Standardizing the term will keep guidance consistent and avoid search/replace misses in downstream tooling.
| description: Read the YAML files of an existing Canvas App and replace Power FX data source calls with equivalent Dataverse table calls. USE WHEN the user wants to migrate, replace, or update data source references in pa.yaml files to point to Dataverse tables. | |
| author: Rui Santos | |
| user-invocable: true | |
| --- | |
| # Migrate Canvas App Data Sources to Dataverse | |
| Read the YAML files of the current Canvas App and replace all Power FX data source calls with Dataverse equivalents for the following requirements: | |
| description: Read the YAML files of an existing Canvas App and replace Power Fx data source calls with equivalent Dataverse table calls. USE WHEN the user wants to migrate, replace, or update data source references in pa.yaml files to point to Dataverse tables. | |
| author: Rui Santos | |
| user-invocable: true | |
| --- | |
| # Migrate Canvas App Data Sources to Dataverse | |
| Read the YAML files of the current Canvas App and replace all Power Fx data source calls with Dataverse equivalents for the following requirements: |
|
|
||
| Read every `.pa.yaml` file produced by `sync_canvas`. For each file: | ||
|
|
||
| - Identify every Power Fx formula that references a non-Dataverse data source (e.g. `SharePoint.GetItems`, `Filter('MyList', …)`, `Patch('MyList', …)`, `LookUp`, `Collect`, `ClearCollect`, etc.). |
There was a problem hiding this comment.
SharePoint.GetItems is not a standard Power Fx pattern for SharePoint list data sources in Canvas Apps (SharePoint lists are typically referenced as tables directly, e.g. Filter('My List', ...), Patch('My List', ...)). Including a non-existent/atypical example here may mislead the migration logic—consider replacing it with an example that matches actual Canvas Apps formulas.
| - Identify every Power Fx formula that references a non-Dataverse data source (e.g. `SharePoint.GetItems`, `Filter('MyList', …)`, `Patch('MyList', …)`, `LookUp`, `Collect`, `ClearCollect`, etc.). | |
| - Identify every Power Fx formula that references a non-Dataverse data source (e.g. `Filter('MyList', …)`, `Patch('MyList', …)`, `LookUp('MyList', …)`, `Collect`, `ClearCollect`, etc.). |
Update metadata Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| @@ -0,0 +1,111 @@ | |||
| --- | |||
| name: migrate-to-dataverse | |||
There was a problem hiding this comment.
Does this skill need to specifically be migrating to dataverse, or could it be genericized to any table-replacement operations?
Add a new skill to migrate Apps with Sharepoint list datasources to Dataverse tables.