Legacy Customizations and Extensions: What to Keep, Rebuild, or Retire During an Upgrade
In this article, we explore the strategic framework for assessing legacy code and extensions, how to make informed decisions, and how to align them with your organization’s long-term goals during a Dynamics 365 upgrade.

As businesses grow and adapt to evolving digital landscapes, upgrading to newer platforms becomes essential. For many organizations, moving to Microsoft’s modern cloud ecosystem via a Dynamics 365 upgrade offers substantial benefits in scalability, performance, and innovation. However, one of the most complex and critical phases in the upgrade journey is handling legacy customizations and extensions—deciding what to keep, rebuild, or retire.
In this article, we explore the strategic framework for assessing legacy code and extensions, how to make informed decisions, and how to align them with your organization’s long-term goals during a Dynamics 365 upgrade.
Understanding Legacy Customizations and Extensions
Legacy customizations refer to modifications made in older versions of Microsoft Dynamics—such as Dynamics AX, NAV, or CRM—tailored to specific business processes. These may include:
-
Custom tables and fields
-
Custom reports and dashboards
-
Modified workflows
-
Add-on modules
-
X++ code modifications (in AX)
-
Legacy plug-ins and JavaScript (in CRM)
Over time, these changes often become deeply embedded into daily operations. While they deliver short-term functionality, they also add complexity and technical debt—especially during an upgrade.
The Challenge: Why Legacy Customizations Complicate Upgrades
Modern Dynamics 365 upgrade projects often involve moving to a cloud-first, low-code/no-code platform designed for extensibility. Many legacy modifications, particularly hard-coded customizations, are no longer compatible or recommended in the new environment.
Upgrades now demand a more strategic approach:
-
Is the customization still necessary?
-
Can the functionality be delivered through out-of-the-box features?
-
Would it be more efficient to rebuild using Power Platform tools?
-
Does the customization introduce security or performance risks?
Answering these questions is crucial to ensuring a successful upgrade.
Step 1: Inventory All Existing Customizations and Extensions
Before making any decisions, start with a detailed audit of all existing customizations. Tools like Microsoft’s Code Upgrade Tool, LCS (Lifecycle Services), and ISV solution checkers can help identify custom objects and evaluate their complexity.
This inventory should capture:
-
Type of customization (UI, workflow, integration, report, etc.)
-
Dependencies (e.g., modules, third-party solutions)
-
Custom code vs. configuration
-
Business owner and usage frequency
-
Performance impact and support history
This baseline helps categorize what is business-critical and what may be obsolete.
Step 2: Categorize: Keep, Rebuild, or Retire
Once you’ve cataloged your customizations, apply a structured decision framework to determine their future in the Dynamics 365 ecosystem.
1. Keep: Leverage Native Functionality
Some customizations can remain as-is or be replaced with native features in Dynamics 365. Microsoft has continuously enhanced standard modules—Sales, Finance, Supply Chain, Customer Service—with features that were previously only achievable through customization.
Criteria for Keeping:
-
The customization still serves a high business value
-
It aligns with Dynamics 365’s cloud architecture
-
It has minimal technical debt
-
It doesn’t duplicate out-of-the-box features
Example: A custom report built in SSRS may be replaced with Power BI, eliminating the need for redevelopment while offering more interactive analytics.
2. Rebuild: Modernize with Extensibility Tools
For customizations that are still essential but not directly compatible, consider rebuilding them using modern tools. Dynamics 365 supports extensions over overlays, promoting maintainability and upgradability.
Tools to Use:
-
Power Apps for custom interfaces
-
Power Automate for workflows
-
Power BI for analytics
-
Dataverse for new entities
-
Azure Functions for scalable, event-driven automation
Criteria for Rebuilding:
-
The functionality is critical to business operations
-
There is no out-of-the-box alternative
-
The legacy approach is not cloud-compatible
-
Security, performance, or integration improvements are needed
Example: A heavily modified sales workflow can be rebuilt using Power Automate, enabling more flexible triggers, audit logs, and approvals.
3. Retire: Eliminate Obsolete or Redundant Features
Some customizations served a purpose in the past but are no longer relevant. This is the perfect time to simplify and reduce system clutter by retiring them.
Criteria for Retiring:
-
The process has changed or is no longer used
-
Out-of-the-box Dynamics 365 functionality now covers it
-
The customization causes performance or upgrade issues
-
It's unsupported or insecure
Example: An old integration with a legacy CRM system that is no longer in use can be safely decommissioned, reducing maintenance burden.
Step 3: Engage Business Stakeholders
Technical analysis alone is insufficient. Engage business users to understand the real-world impact of retiring or modifying legacy features. Stakeholder input helps:
-
Validate the necessity of a feature
-
Identify process changes that may affect functionality
-
Promote ownership and adoption post-upgrade
Conduct workshops, demos, and interviews with functional leads to prioritize what’s essential.
Step 4: Design the Future State Architecture
After deciding what to keep, rebuild, or retire, map out your future architecture in Dynamics 365. This should include:
-
Custom extensions using Extension Framework
-
Use of Power Platform for new apps or workflows
-
Modern reporting with Power BI
-
Replaced integrations using Azure Logic Apps, Dataverse, or APIs
-
Improved security roles and permission structures
This future-proof design ensures scalability, supportability, and alignment with Microsoft’s roadmap.
Step 5: Execute and Validate
Once your new architecture is in place, begin the actual implementation. Use agile methodology to break the project into manageable sprints. Build in test cycles for:
-
Functional testing
-
Performance benchmarking
-
User acceptance testing (UAT)
-
Regression testing for integrations and reports
Validation ensures the rebuilt or retained customizations function correctly and offer improved user experience and performance.
Step 6: Train and Transition Users
Legacy systems often breed user dependency on specific screens, reports, or workflows. As you retire or rebuild customizations, provide ample user training and documentation.
-
Create "Before and After" process maps
-
Offer hands-on training sessions
-
Use in-app guidance tools in Dynamics 365
-
Deploy support champions to help users adapt
This mitigates resistance and accelerates adoption.
Long-Term Governance: Avoiding Future Technical Debt
Post-upgrade, implement governance policies to avoid unnecessary customization:
-
Prioritize configuration over customization
-
Establish a change control board
-
Review requests against Microsoft’s roadmap
-
Encourage use of Power Platform for agile needs
This ensures that your Dynamics 365 upgrade remains clean, maintainable, and aligned with future innovation.
Conclusion
A Dynamics 365 upgrade is not just a technical transition—it’s a strategic opportunity to streamline, modernize, and improve your business processes. Carefully assessing legacy customizations and extensions is critical to this success.
By categorizing your legacy features into what to keep, rebuild, or retire, you can maximize the value of your upgrade while minimizing risk and complexity. Leveraging modern tools like Power Platform, Azure, and Dataverse empowers your organization to innovate faster, maintain compliance, and stay ahead in a competitive digital landscape.
Remember: simplicity, standardization, and user adoption are your best allies in a successful Dynamics 365 upgrade journey.