Categories
ALM DevOps Dynamics 365 Power Platform

Power Platform DevOps : Part 1 – ALM Fundamentals

Part 1 of a series of Articles co-authored by Dylan Haskins and Eugene Van Staden covering our thoughts, strategies and tools for Application Lifecycle Management (ALM) and DevOps for the Power Platform and PowerApps Portals.

Welcome to Part 1 of a series of Articles co-authored by Dylan Haskins and Eugene Van Staden covering our thoughts, strategies and tools for Application Lifecycle Management (ALM) and DevOps for the Power Platform and PowerApps Portals.

In this series we cover the following topics :

Before progressing we recommend you assess your ALM maturity by completing the checklist below, if you answer “No” to 2 or more items (or to understand the fundamentals of a good ALM strategy) we would recommend familiarisation with the white-paper : Solution Lifecycle Management for Dynamics 365 for Customer Engagement apps, Dynamics 365 for Customer Engagement apps (on-premises) and Common Data Service (CDS) for Apps

ALM self-assessment checklist

  • Solution Management
    • Solution boundaries are defined as they relate to production – not organised just to simplify development
    • There is at least one discrete development instance per solution being developed and serviced
    • Where a solution being developed has dependencies on one or more solutions, the dependencies are satisfied through always importing those solutions as managed solutions into the discrete development instance for the solution being developed
    • Where multiple solutions are developed for deployment to a single production environment, the same solution publisher and prefix are used
    • The term “Solution Segmentation” is understood
    • Solution Segmentation is practiced consistently
    • The term “Patch Solution” is understood
    • Use of patch solutions is practiced consistently for developing solution fixes
    • Solution.zip files and their contents are never manually edited
  • Version Control & Build Management
    • Solutions are unpacked using the Solution Packager and version controlled in a repository such as Azure DevOps or GitHub
    • Solutions are built through an automated process that invokes the Solution Packager to repack the solution into a Solution.zip file
    • Packages are built through an automated process that combines the required solutions and configuration data into a PackageDeployer.zip file
  • Test Management
    • Each test case has traceability back to requirement
    • Test cases are automated
  • Deployment Management
    • Only managed solutions are deployed to environments outside (downstream) of development
    • All solutions are deployed via the Package Deployer
    • No unmanaged changes are made directly to environments downstream of development
    • The use of patch solutions is practiced consistently for deploying solution fixes

Each part of this series is aimed to help you address and meet the requirements to reach all of these ALM maturity milestones.

To set the stage for our ALM journey we will, however, state the following assumptions :

  • We will be catering for an Approach that uses Managed Solutions downstream (outside) of the Development Environments
  • We are using Solution Segmentation and Layering
  • We are using separate environments for each of the Solution layers
  • We are using the same publisher and prefix in all environments
  • We are supporting a Patch Solution strategy both in our automatic versioning and our Source control and deployment approach

The diagram below represents a sample solution layering model against which we have built and tested our ALM strategy

That concludes Part 1, in Part 2 : Our ALM Framework and Provisioning Tool we will give you access to our ALM framework and our new Provisioning tool that makes it easy to setup a full ALM process including Continuous Deployment in Azure DevOps.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.