Saturday, 25 October 2025

Managing Solution Architecture in Microsoft Dynamics CRM – Lessons from the Field

 Post Content:

In large-scale CRM implementations, managing solution layers and platform integrity is critical for stability and scalability. At Volvo, we adopted a structured approach to balance platform governance with development agility.

Here’s what worked for us:


Platform vs Dev Solutions

  • Platform Solution: Core managed components deployed by the platform team—locked for consistency.
  • Dev Solution: Customizations layered on top of the platform solution without breaking its integrity.

Updates vs Upgrades

  • Updates: Incremental changes (e.g., adding fields, modifying views) applied safely over the platform layer.
  • Upgrades: Full solution replacement—only possible when no immutable platform layer exists.

Using Patches

  • Deploy small fixes without re-importing entire solutions.
  • Workflow: Create patch → Import → Consolidate via “Clone Solution.”

Governance Strategies

  • Collaboration: Align platform and dev teams early.
  • Standardization: Separate platform and custom components for clarity.
  • Incremental Updates: Prefer updates and patches over full upgrades.

Publisher Strategy

  • Multiple Publishers: Better governance, accountability, and audit trails.
  • Single Publisher: Simplified upgrades but less oversight.

Key Takeaways:

  • Respect platform layers to avoid deployment conflicts.
  • Use patches and updates for agility without compromising stability.
  • Define clear rules for dependencies, upgrades, and communication across teams.

How to create Platform and Solution Architecture in Dynamics 365 and manage Effectively

 

Here’s a consolidated overview of how updates, upgrades, and patches work in relation to platform solutions and Dev solutions in Microsoft Dynamics CRM, along with strategies to handle your specific scenario:

                             General Dynamics of Platform Solutions and Dev Solutions

Platform Solution: Provides the foundational or core managed components, typically deployed as managed solutions by a platform team. These components are locked and cannot be removed or replaced.

 Dev Solution: Contains customizations and updates created by development teams. Dev solutions often need to layer changes on top of the platform solution when deployed to higher environments.

Challenges:

 Dev solutions cannot overwrite or upgrade the platform layer due to managed layer restrictions.

 Any updates from the Dev team must respect the integrity of the platform managed components.

 

                                                                        Updates vs. Upgrades

 Updates:

 Purpose: Incremental changes or modifications to components, layered on top of the existing solution.

 Use Case: Ideal when the platform solution exists, as updates do not attempt to remove or replace the platform base layer. Safely applies new changes without disrupting foundational components.

 Examples: Adding fields to a form, modifying views, or updating metadata tied to managed components.

 Upgrades:

 Purpose: Full replacement of an existing solution, consolidating patches or unmanaged components into a new managed solution version.

 Limitations: Cannot upgrade solutions if a base layer (e.g., platform solution) is immutable, as CRM prevents removing platform components.

 Examples: Used in scenarios where no platform managed layers exist, or the entire solution structure requires a reset.

 

                                                                        Using Patches

 Definition: Patches provide a way to deploy small, specific updates without reimporting the entire solution.

Workflow:

  1. Create a patch from the parent solution for targeted modifications.

  2. Import the patch to the target environment, layering updates without altering other components.

  3. Consolidate patches into a new parent solution if needed (using "Clone Solution").

 

Benefits: Useful for applying fixes or updates to environments with platform managed layers, ensuring seamless deployments.

 

 

 4. Best Practices and Recommendations

 To Address Your Current Scenario:

 For 8192 views and other platform layer components, use updates or patches from the Dev solution to layer customizations without attempting to remove the platform's managed base layer.

 If multiple patches exist, consolidate them using the Clone Solution feature to simplify future updates, while still preserving the platform solution layer.

 Test updates in a staging environment to validate that the layering works as expected with the platform solution.

 

 

 Proactive Strategies Moving Forward:

1. Collaboration: Work closely with the platform team to align on solution design principles.

2. Standardization: Keep platform and custom components in separate solutions for clarity and better manageability.

3. Incremental Updates: Use updates and patches as your primary deployment mechanism when platform managed components exist.

This structure minimizes risks, respects platform layer restrictions, and ensures smooth deployments across environments

 

Single Publisher vs Multiple Publisher

Using multiple publishers can help facilitate governance and maintain consistency in your base platform solution. Here’s how this approach supports your goals:

 Benefits of Multiple Publishers

1. Enhanced Customization Governance:

    By assigning specific publishers to dev teams or environments, you create clear boundaries. This allows better control over what changes are made, by whom, and where they originate.

2. Consistency in the Base Platform Solution:

    The base platform, under its own publisher, remains consistent across all environments. Customizations from different publishers do not directly alter the base solution, ensuring its integrity.

3. Controlled Production Deployment:

    You can control which publishers' customizations are promoted to production by reviewing their managed solutions independently. This prevents accidental or unauthorized changes.

4. Audit and Accountability:

    With separate publishers, it’s easier to trace who made specific customizations and when. This ensures accountability and simplifies auditing.

Cons:

1. Complex Upgrade Coordination:

    Requires careful management to resolve dependencies and validate compatibility during base platform updates.

2. Higher Testing Overheads:

    Updates to the base platform must be tested with all dev solutions to avoid disruptions.

3. Risk of Dependency Conflicts

   Multiple publishers may create dependencies that complicate cross environment upgrades.

 

Single Publisher

 Pros:

1. Simplified Upgrade Process:

    Consistent version control and easier dependency management during upgrades.

2. Unified Governance:

    Centralized control over solutions ensures alignment with the base platform.

3. Streamlined Compatibility:

    Reduces the risk of conflicts as all customizations share the same publisher identity.

 Cons:

1. Limited Customization Oversight:

    Hard to track changes across dev teams due to shared publisher identity.

2. Higher Risk of Conflicts:

    Customizations from different teams may inadvertently overlap or override each other.

3. Reduced Accountability:

    It becomes challenging to pinpoint who made specific changes.

 

 Key Points to Consider

 Dependency Management:

   Ensure that customizations from different publishers do not create conflicting dependencies with the base platform.

 Upgrade Coordination:

    Define rules for how base platform upgrades will affect dev solutions under different publishers to avoid disruptions.

 Communication Between Teams:

    Facilitate coordination among teams to ensure their solutions align with organizational standards and the base platform’s functionality.

 

To manage dependencies and create rules for upgrades in a setup with multiple publishers, here’s a detailed approach:

                                           Dependency Management Guidelines

 Establish Clear Boundaries for Customizations:

 Isolation of Components: Dev teams should avoid direct dependencies on the base platform's components unless explicitly permitted. For instance, shared components like fields or workflows should be part of the base platform solution.

 Use Solution Layers Properly: Ensure customizations are layered correctly, with the base platform solution always at the lowest layer. Dev solutions should build on top of it without overwriting base components.

 Identify and Document Dependencies:

 Dependency Checker: Use the Solution Checker tool to analyze solutions and identify any existing dependencies between custom and base solutions.

 Documentation: Maintain a repository (e.g., in Azure DevOps or SharePoint) that lists components in the base platform and their acceptable usages.

 Scoped Component Ownership:

 Assign specific types of customizations (e.g., entities, forms, or plugins) to each publisher to prevent overlap or duplication of components.

 

 2. Upgrade Rules and Processes

 Upgrade Coordination for the Base Platform:

 Dependency Free Base Upgrades: Ensure the base platform solution does not depend on any custom solutions. This allows it to be upgraded independently.

 Pre Upgrade Testing: Create a sandbox environment to test upgrades of the base platform with dev solutions from all publishers to identify issues before deployment.

 

 Guidelines for Custom Solution Updates:

 After a base platform upgrade, dev teams must:

  1. Validate their custom solutions for compatibility with the updated base platform.

  2. Update their solutions if required to resolve any conflicts caused by the upgrade.

 

 Upgrade Ownership:

 Assign one team (e.g., the platform team) as the owner of the upgrade process. This team is responsible for initiating, coordinating, and validating all upgrades.

 

 3. Communication and Collaboration

 Notify All Teams Before Base Upgrades: Inform dev teams about upcoming base solution updates, including timelines, potential impacts, and required actions.

 Feedback Loops: Establish a process for dev teams to report issues or conflicts during testing or after upgrades.

 

 4. Continuous Monitoring and Audits

 Regularly audit solutions to ensure adherence to dependency and upgrade policies.

 Use tools like Power Platform Admin Center or custom reports to monitor changes and track solution performance post upgrade.

 

 Platform Solution Team (Base Solution):

   Has the sole authority to perform upgrades to the base platform solution. This ensures consistency and avoids dependency conflicts across environments.

   Upgrades to the base solution are applied across all environments, maintaining the integrity of the foundational layer.

 

 Dev Teams (Custom Solutions):

   Can only perform updates to their respective custom solutions. These updates add features or modify functionalities on top of the base platform solution but don’t alter the base layer itself.

   Their updates must be tested for compatibility with the current version of the base solution before being deployed.

 

This separation of responsibilities ensures that:

 The base platform remains consistent and scalable across environments.

 Dev teams maintain autonomy for their customizations while adhering to governance standards.

 Production deployments are tightly controlled, reducing the risk of conflicts or errors.

Configuring Azure Attachment Management and Azure Blob Storage

 1. Download Attachment Manager from Microsoft App Source and install it in your respective Orgs.

2. Connect to your CRM Instance

3. Create Azure Storage as shown I pic below:

Once created, open the storage account and scroll down and open the Blobsservice. Here, the admin will be able to create the containers that will contain the attachments uploaded via CRM. 

Create two global containers (which will be utilised in the Azure Attachment Storage Configuration page) and then create a container for each entity that will map attachments to Azure Blob Storage.

Note: Create two (global) containers named “emailsattachmentcontainer” and “notesattachmentcontainer.” Set the “Public Access Level” of any other containers for their respective entities to “Blob,” as this will enable users to have a preview feature

4.       Now provide access to the users by navigating to Shared Access Signature in Azure portal and create SAS Token by setting Expiry DateTime as shown below :

5.       Now navigate to the Dynamics Azure Attachments and paste SAS token in Configuration window as shown below :

6.       Now enable the Entity for Azure Blob Storage and map Entity in Container window as shown below :

7.       For Email Attachments , map Email entity as shown below :

8.       Provide necessary Access to Users by assigning Security Roles which has Azure Blob Storage Settings, NotesEntityAttachment Settings permissions.