Skill v1.0.0
currentTrusted Publisher100/100version: "1.0.0" name: ve-legacy-to-spa-migration description: "Migrate, classify, or validate Volunteer Engagement legacy Power Pages sites and customizations against Volunteer Engagement 2.0, the Portal-EDM React SPA on Enhanced Data Model. Use when users ask to migrate an existing site to the new portal SPA, move a site to enhanced data model, migrate legacy VE, compare Portal-EDM, inspect site settings, Liquid pages, table permissions, web roles, bot consumers, authentication, localization, accessibility, or run migration dry runs." argument-hint: "<legacy export path or site id> <target environment> <task: classify|migrate|validate>"
Volunteer Engagement legacy-to-SPA migration
Use this skill for multi-step Volunteer Engagement migration work where the source is an existing legacy Power Pages site and the target is the Volunteer Engagement 2.0 React SPA on Enhanced Data Model.
Source of truth
Before planning or editing, read the relevant files in .ai/instructions:
README.mdlegacy-to-spa-migration.mdcustomization-migration.mdspa-development.mdauthentication-migration.mdsite-agent-setup.mdlocalization-accessibility.mddeployment-validation.md
Use Portal-EDM as the target baseline. Do not rebuild Volunteer Engagement from zero.
When to use
Use this skill when the user asks to:
- Migrate an existing site to Volunteer Engagement 2.0.
- Move a legacy site to the enhanced Volunteer Engagement SPA.
- Export or inspect a legacy Volunteer Engagement Power Pages site.
- Compare a legacy VE site with
Portal-EDM. - Migrate legacy site customizations to the React SPA.
- Classify Liquid pages, content snippets, web files, table permissions, web roles, site settings, or bot consumers.
- Validate authentication, local username/password sign-in, Microsoft Entra sign-in, bot visibility, localization readiness, or accessibility.
- Run a dry-run migration report for an uncustomized or customized legacy VE site.
Procedure
- Confirm the source site or exported folder.
- If only a site ID is provided, run
pac pages listin the selected environment and confirm whether the ID is a Power Pages website record ID. - For Standard Data Model source sites only, use
pac pages download --path <legacy-site-export> --websiteId <website-id> --modelVersion 1whendownload-code-siteis not supported. Do not usemodelVersion 1for the newPortal-EDMtarget deployment. - For Enhanced Data Model code sites, use
pac pages download-code-site --path <legacy-site-export> --webSiteId <website-id> --overwrite. - Prefer
.migration-work/<site-name-or-id>/legacy-export/for raw exports when working in this solution. Keep raw exports unchanged and put final migration output inPortal-EDM/.
- Inventory the source export.
- Pages, templates, snippets, web files, table permissions, web roles, forms, bot consumers, site settings, localization, and authentication-related metadata.
- Compare with
Portal-EDM.
- Classify product baseline, site customizations, obsolete legacy implementation, security-sensitive items, environment-specific items, and unknowns.
- Apply the baseline-first rule.
- If the source is uncustomized VE, produce a classification and validation report. Do not recommend porting all Liquid templates.
- If custom deltas exist, map them to React routes/components, services, localization-ready strings, or reviewed Power Pages metadata.
- Require review for sensitive changes.
- Site settings, authentication providers, secrets, anonymous access, table permissions, Web API fields, web roles, bot visibility, and third-party scripts.
- Public bot visibility is allowed for opportunity discovery and general help, but apply, profile, participation, and personal-data bot flows must require sign-in.
- Validate before declaring completion.
- Use
npm run build,npm run lint,npm run test,npm run deploy,npm run permissions:patch-roles,npm run powerpages-site-agent:patch-roles, browser smoke tests, and WCAG AA-oriented checks as applicable fromPortal-EDM.
Output expectations
For classification or dry-run tasks, include these sections:
- Product baseline already covered.
- Customizations to migrate.
- Obsolete legacy implementation.
- Items requiring validation.
- Items not to migrate.
- Unexpected deltas.
- Recommended next steps.
For implementation tasks, include changed files, validation commands, browser checks, unresolved review items, and known limitations.