This guide explains how to move an environment from the AppSource Volunteer Management solution (installed from the marketplace) to the open-source (OS) Volunteer Management build compiled from this repository.
Both solutions are published by Microsoft; they are distinguished by origin — the AppSource managed solution versus the OS build from the public GitHub repository. The AppSource solution is no longer supported and is being removed from AppSource, so existing customers and partners should migrate to the OS build.
The OS build ships under its own identity so it can be installed side-by-side with the AppSource solution. Once the OS build is in place, the unsupported AppSource solution can be removed. The separate identities are:
| Aspect | AppSource (marketplace) | Open-source build |
|---|---|---|
| Solution unique name | VolunteerManagement |
volunteermanagementos |
| Solution display name | Volunteer Management |
Volunteer Management (OS) |
| Plugin assembly | Plugins (token 8ad1edaac4bc000c) |
PluginsOS (token 703f25cc8a15a472) |
| PCF controls | shipped & owned | shipped & owned (its own copies) |
Because the identities differ, both solutions can coexist during the migration. Your data (volunteers, engagement opportunities, participations, etc.) lives on the shared Dataverse tables and is not deleted when the AppSource solution is removed — only the solution layer and its metadata are.
pac)az) (used by the migration script to acquire a Dataverse token)Steps 2–4 are automated by
Deployment/Migrate-VolunteerManagementToOpenSource.ps1.
See Deployment/README.md for the full script reference,
parameters, and authentication options.
dotnet build .\VolunteerManagement\VolunteerManagement\VolunteerManagement.cdsproj -c Release
pac solution import --path .\VolunteerManagement\VolunteerManagement\bin\Release\VolunteerManagement_managed.zip
The OS solution installs alongside the AppSource one because it uses a separate unique name
(volunteermanagementos) and plugin assembly (PluginsOS).
The AppSource forms and views reference its PCF controls in the active (merged) layer.
That Form -> Control dependency is Published and blocks deletion of the AppSource
solution. This stage rewrites those active layers to substitute the default control, then
runs PublishAllXml.
.\VolunteerManagement\Deployment\Migrate-VolunteerManagementToOpenSource.ps1 -EnvironmentUrl https://contoso.crm.dynamics.com -StripReferences
Tip: add
-WhatIfto preview every change without applying it.
.\VolunteerManagement\Deployment\Migrate-VolunteerManagementToOpenSource.ps1 -EnvironmentUrl https://contoso.crm.dynamics.com -DeleteAppSourceSolution
Re-importing restores the forms and views so they reference the OS-owned PCF controls.
pac solution import --path .\VolunteerManagement\VolunteerManagement\bin\Release\VolunteerManagement_managed.zip --force-overwrite
.\VolunteerManagement\Deployment\Migrate-VolunteerManagementToOpenSource.ps1 -EnvironmentUrl https://contoso.crm.dynamics.com -Verify
The verification report lists the plugin assemblies, the owning solutions of each PCF
control, and the SDK steps registered on PluginsOS. After a successful migration you should
see only the PluginsOS assembly and the PCF controls owned by volunteermanagementos.
By default the script acquires a Dataverse token with the Azure CLI
(az account get-access-token). Sign in first with az login, or:
-AccessToken <token>, or-AzCommand at an alternate/isolated Azure CLI executable for a non-default sign-in.-WhatIf and -Confirm (the script declares
ConfirmImpact = 'High'), so you can preview each PATCH / publish / delete.Deployment/README.md — full migration script reference.Deployment/Migrate-VolunteerManagementToOpenSource.ps1 — the migration script.