Skip to content

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

Open
rsantos00 wants to merge 2 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 2 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.

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.).
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.

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.

Suggested change
- 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.).

Copilot uses AI. Check for mistakes.
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?

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