D365Forge

Templates › Environment and ALM strategy

Environment and ALM strategy

Format
Word (docx)
Owning skill
solution-architecture:environment-strategy
Tailored from
organisation, estate, constraints, edition, modules_in_scope, roles, generated_on
Status
draft

How to use this template

The solution architect ({{roles.solution-architect}}) drafts this strategy in Initiate with the platform administrator ({{roles.platform-administrator}}) and, where one exists, the release manager ({{roles.release-manager}}). It must be approved before the first sprint, because environments, the solution publisher and the pipeline are expensive to change once build has started. Review it at each stage gate and after any change to licences or capacity.

Guidance: The aim is simple: every change is made in development, held in source control, and reaches test and production only as a managed solution through a repeatable pipeline. Each section below should show how that holds for this project.

SMB: Three environments (development, test, production) and a simple pipeline are usually enough. Keep source control and managed solutions even when the partner is the only developer.

Enterprise only: Plan separate environments for SIT, UAT, training and pre-production, per-developer environments where the team is large, and pipeline approval gates owned by the release manager.

Document control

VersionDateAuthorSummary of changeApproved by
0.1{{generated_on}}{{roles.solution-architect}}First draft generated from organisation profile

1. Context

{{organisation.name}} is delivering {{modules_in_scope}} as a {{edition}} project. Existing environments recorded in the profile: {{estate.environments}}. Licences recorded: {{estate.licences}}. Microsoft 365 tenant: {{estate.microsoft_365}}.

Guidance: Note any existing Dataverse environments, Power Apps or flows already in the tenant, and who owns them. Unmanaged makers' work in the default environment is common and should be inventoried before the project's environments are created.

2. Principles

3. Environment inventory

EnvironmentTypePurposeRegionSecurity groupOwnerData heldRefresh approach
DevelopmentSandboxConfiguration and build{{roles.platform-administrator}}Sample data onlyRebuilt from source as needed
Test or SITSandboxIntegrated testing with test endpoints{{roles.test-manager}}Migrated test dataRefreshed before each test cycle
UATSandboxBusiness acceptance testing{{roles.test-manager}}Masked or synthetic dataRefreshed before UAT
TrainingSandboxEnd-user training{{roles.trainer}}Training data setReset between sessions
ProductionProductionLive service{{roles.platform-administrator}}Live dataNot applicable

Guidance: Choose the region to meet data residency needs for {{organisation.countries}} and any compliance constraints ({{constraints.compliance}}); confirm with the DPO or legal adviser where personal data is involved. Copying production into a sandbox brings live personal data with it, so agree masking or restricted access before doing so.

Enterprise only: Add pre-production for cutover rehearsal and performance testing, and consider separate developer environments per developer or workstream.

4. Solution structure

SolutionContentsPublisher prefixDepends onOwner
CoreShared tables, columns, security roles, base componentsNone{{roles.solution-architect}}
Module solution per workstreamModule-specific configurationCoreModule lead
IntegrationCustom APIs, plugins, connection referencesCore{{roles.integration-lead}}

Guidance: Fewer solutions are easier to manage. Split only where release cadence or ownership genuinely differs, and never let two solutions modify the same component without a clear layering plan.

5. Source control and branching

Guidance: Name the repository, the branching model and who may merge. Solutions are exported and unpacked into source control on each change. Keep configuration data (for example queues, SLA settings, reference data) in source control too, packaged with the deployment.

6. Deployment pipeline

StageFromToTriggerApproval required fromAutomated checks
BuildDevelopmentArtefact storeMerge to main branchNoneSolution checker, unit tests
Deploy to testArtefactTest or SITSuccessful build{{roles.test-manager}}Smoke tests
Deploy to UATArtefactUATTest cycle passed{{roles.process-owner}}Smoke tests
Deploy to productionArtefactProductionRelease approved{{roles.release-manager}}Smoke tests, deployment log

Guidance: Options include Power Platform pipelines, Azure DevOps or GitHub with the Power Platform tooling. Check current Microsoft Learn documentation for capabilities and prerequisites before choosing.

7. Environment-specific settings

SettingTypeDevelopmentTestUATProductionOwner
ERP endpoint for {{estate.erp}}Environment variable{{roles.integration-lead}}
Mailbox server profileConfiguration{{roles.platform-administrator}}
Sending domain (Marketing only)Configuration{{roles.journeys-consultant}}

8. Governance and capacity

Guidance: Describe data loss prevention policies for each environment, whether Managed Environments are used, who may create environments, and how the default environment is governed. Record storage capacity and how growth is monitored. Confirm licence and capacity entitlements with the Microsoft licensing guide or your partner; check current Microsoft Learn documentation for governance features.

9. Release waves and updates

Guidance: Describe how each release wave is tested before it reaches production: which sandbox receives early access, who runs the regression pack, and who decides whether issues block. Note organisation change freezes ({{constraints.change_freezes}}).

10. Access and administration

ActivityWho may perform itApproval
Create or delete environments{{roles.platform-administrator}}{{roles.solution-architect}}
Assign system administrator role{{roles.platform-administrator}}{{roles.security-lead}}
Copy or reset an environment{{roles.platform-administrator}}Environment owner; DPO if production data is copied
Import solutions to productionPipeline only{{roles.release-manager}}

11. Approval

NameRoleDecisionDate
{{roles.solution-architect}}Solution architect
{{roles.design-authority-lead}}Design authority lead
{{roles.platform-administrator}}Platform administrator

Credit: Template from D365Forge by Simon Foote and Robert Peledie (https://github.com/SimonFoote-greensparx/D365Forge), licensed under CC BY 4.0. Keep this credit when you share or adapt the template; in your own completed document you may keep it as a footer or remove it.