This guide explains how to move an existing Volunteer Engagement Power Pages site to Volunteer Engagement 2.0, a React single-page application (SPA) deployed as a Power Pages code site on the Enhanced Data Model.
The migration creates a new Volunteer Engagement site. It does not upgrade the legacy site in place. Keep the legacy site available while you deploy, configure, and validate the new site.
Volunteer Engagement 2.0 replaces the legacy Liquid-based portal experience with the Portal-EDM React SPA. The new and legacy sites can coexist during migration because they have separate Power Pages website records.
Volunteer Engagement records remain in the shared Dataverse tables provided by Common Data Model for Nonprofits and Volunteer Management. The migration normally does not copy that business data. Site-specific pages, code, content, security metadata, authentication configuration, and other customizations must be reviewed and either reimplemented, reconfigured, or retired.
Do not copy the entire legacy portal into the new site. Volunteer Engagement 2.0 is the product baseline; migrate only approved customizations and configuration that the new experience does not already provide.
The repository provides an AI-assisted workflow for discovering and classifying legacy customizations. The migration can also be performed manually, but every customization and security-sensitive setting must still be reviewed. See the Migration Checklist for the detailed work list.
Authenticate to the environment that contains the existing site and download an unchanged source export:
pac auth list
pac auth select --index <index>
pac pages list
pac pages download-code-site --path <legacy-site-export> --webSiteId <legacy-site-id> --overwrite
Keep this export as the migration source of truth. Store any custom code or configuration maintained outside Power Pages with the export, but do not include secrets in migration files or source control.
Compare the export with VolunteerEngagement/Portal-EDM. Classify each difference as:
| Classification | Action |
|---|---|
| Already provided by Volunteer Engagement 2.0 | Do not duplicate it |
| Required site customization | Reimplement it in the React SPA or Enhanced Data Model metadata |
| Obsolete legacy implementation | Retire it |
| Security-sensitive configuration | Review and approve it explicitly |
| Environment-specific configuration | Reconfigure it for the new site |
| Unknown | Resolve it before cutover |
For an uncustomized site, this phase should produce a short validation and cutover plan rather than a large code migration. Legacy Liquid templates, Bootstrap code, JavaScript, and CSS that implement standard product behavior should not be carried forward.
For AI-assisted classification, open VolunteerEngagement/ as the VS Code workspace root and follow the instructions in .ai/instructions/README.md.
Apply approved changes to the Portal-EDM baseline:
See Security and Permissions Checklist for the required security review.
Follow the Deployment Checklist to build, test, deploy, reactivate, synchronize, and restart the new site. Run its commands from VolunteerEngagement/Portal-EDM/.
The deployment creates the new code site and applies baseline table-permission role assignments. Authentication providers and the optional Power Pages site agent require separate configuration. See Portal-EDM/README.md for command details and troubleshooting.
Complete the Security and Permissions Checklist, then configure the required identity providers, languages, custom domain, certificate, site visibility, and optional site agent features for the new site.
Authentication and web-role records can be site-specific. A successful sign-in alone does not prove that role assignments and data access migrated correctly.
Complete the post-deployment checks in the Deployment Checklist, Security and Permissions Checklist, and Operations Checklist. In addition, verify every migrated custom page, integration, language, authentication provider, and accessibility requirement against the approved migration scope.
Record the results and unresolved review items before requesting business, security, and accessibility acceptance.
After business, security, and accessibility acceptance:
Do not delete the legacy site as part of the initial deployment. If cutover validation fails, direct users back to the legacy site while you correct and retest the new site.
pac pages commands - official CLI reference.