Skip to content

[Canvas Apps] Add skill to migrate apps with SP list data sources to Dataverse Tables#103

Open
rsantos00 wants to merge 3 commits intomicrosoft:mainfrom
rsantos00:sharepoint-to-dataverse-Skill
Open

[Canvas Apps] Add skill to migrate apps with SP list data sources to Dataverse Tables#103
rsantos00 wants to merge 3 commits intomicrosoft:mainfrom
rsantos00:sharepoint-to-dataverse-Skill

Conversation

@rsantos00
Copy link
Copy Markdown

Add a new skill to migrate Apps with Sharepoint list datasources to Dataverse tables.

Add a new skill to migrate Apps with Sharepoint list datasources to Dataverse tables.
@rsantos00 rsantos00 requested a review from a team as a code owner April 17, 2026 10:35
Copilot AI review requested due to automatic review settings April 17, 2026 10:35
@rsantos00
Copy link
Copy Markdown
Author

@microsoft-github-policy-service agree

@rsantos00
Copy link
Copy Markdown
Author

@microsoft-github-policy-service agree company="Microsoft"

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-dataverse skill 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.

Comment thread plugins/canvas-apps/skills/migrate-to-dataverse/SKILL.md Outdated
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
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
user-invocable: true
user-invocable: true
allowed-tools:
- sync_canvas
- list_data_sources
- get_data_source_schema
- compile_canvas
- read_file
- edit_file

Copilot uses AI. Check for mistakes.
Comment on lines +23 to +27
## 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.
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment on lines +4 to +11
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:
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
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:

Copilot uses AI. Check for mistakes.
Comment thread plugins/canvas-apps/skills/migrate-to-dataverse/SKILL.md Outdated
Update metadata

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings April 17, 2026 10:40
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@lesaltzm lesaltzm changed the title Add a new skill [Canvas Apps] Add skill to migrate apps with SP list data sources to Dataverse Tables Apr 17, 2026
@@ -0,0 +1,111 @@
---
name: migrate-to-dataverse
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this skill need to specifically be migrating to dataverse, or could it be genericized to any table-replacement operations?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the Power Fx syntax might be tricky if we have think of SQL Views/Tables and the 95% of migration cases are SP-> Dataverse. Based on customers we should start with this one and if we get customer asking for SQL or any datasources, we can enhance with more targeted skills.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings April 19, 2026 15:36
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 2 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +49 to +50
- Identify every Power Fx formula that references a non-Dataverse data source (e.g. `Filter('MyList', …)`, `Patch('MyList', …)`, `LookUp('MyList', …)`, `Collect`, `ClearCollect`, etc.).
- Note the source table/list name, the columns referenced, and the operation type (`Filter`, `Patch`, `LookUp`, `Collect`, etc.).
Copy link

Copilot AI Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR is described as migrating SharePoint list data sources to Dataverse, but Step 2 targets any “non-Dataverse” data source. That can unintentionally include connectors where a Dataverse mapping isn’t valid or desired (SQL, Excel, etc.). Tighten the instructions to explicitly scope detection/replacement to SharePoint list data sources (or clearly enumerate which connector types are supported).

Copilot uses AI. Check for mistakes.
> |------|------|-------------|
> | [Table Name] | Dataverse / SharePoint / … | [column names] |

For each Dataverse table identified, call `get_data_source_schema` to retrieve the full column list and Power Fx types. This information is required to map source columns to destination columns accurately.
Copy link

Copilot AI Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Step 1 says to call get_data_source_schema for each Dataverse table returned by list_data_sources. In environments with many Dataverse tables this is unnecessarily expensive and can slow the workflow. Instead, first scan the synced .pa.yaml files to identify which source lists are actually referenced, then fetch schemas only for (a) those sources and (b) the specific target tables being mapped/approved.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants