Through the community, I’m constantly talking to and chatting with the very people who have shaped Dynamics 365 into what it is today. I see pride and passion, and I also recognize their personal investments in making Dynamics 365 better and implementing it for customers. They invest deep thought, teamwork, and long hours to create the best ERP offering on the market. I often hear comments like, “I created that feature many years ago.” This applies both to consultants and to past and present Microsoft employees.
In many cases, I recognize that, for those working with Dynamics 365, it’s more than a job; it’s a lifestyle, a passion, and a community. We love to create!
We can all agree that not everything is perfect, and more than 25 years of code have accumulated to form what we have today. Each new piece of code added value from an isolated perspective. But with each new feature introduced, the combinatory complexity has increased, making performance more challenging. Often, I see people searching for the proverbial needle in the haystack—a query, index, or loop that could improve performance. But the problem isn’t the “needle”—it’s the haystack. We have layer upon layer of code added over the years, plus numerous customer extensions.
Microsoft does have a process for phasing out code, known as deprecation.
It’s important to understand the definitions Microsoft uses:
- Removed feature: No longer available in the product.
- Deprecated feature: Not in active development and may be removed in a future update.
When Microsoft deprecates features, they publish the information here (for Finance, Supply Chain Management, Commerce, Human Resources, Project Operations, and Platform features):
We typically see a few elements per area per release, but the process of phasing out, replacing, and refactoring old code is slow. Microsoft also has guidelines for how deprecations are carried out. However, the amount of new code added is dramatically greater than the amount removed. More code means increased compute requirements and more pressure on performance. I understand that removing something is risky—there is always a customer who relies on a particular piece of code—making the deprecation process difficult and slow. We all have a closet filled with items we think might be valuable someday, but most often they aren’t and just occupy valuable space.
Now, to the essence of this blog post: what I hope to see deprecated. I’m sure many will disagree with my opinions, but I believe I have a few valid points. Remember, these are my personal opinions.
Record Templates
A great idea, but with current limitations, you cannot change a template if a DirParty/AddressBook is part of the entity. Additionally, when inserting records, code checks whether a default record template is assigned. In reality, this means record templates for Customers, Vendors, and Workers cannot be easily maintained—you must always recreate the template from scratch. The code that checks for record templates consumes precious milliseconds. Let’s thank record templates for their service over the years and rethink how this should work.
Database Log
This feature is often for micromanagers who want to track every action and assign blame. Its value is low, as enabling database logging on transactions generally isn’t advisable. Why not remove it from the X++ stack and consider using SQL system-versioned temporal tables instead?
Alerts
I think there are other technical ways of notifying changes.
Telex and Fax Numbers
I doubt these will be missed in contact information. Maybe replace them with modern contact methods like Snapchat or TikTok. 😊
Task Recorder
Great for presales, but as scenarios grow more complex, its value diminishes. Perhaps this could be replaced or supplemented by a Copilot agent?
Workflow
It works and is widely used, but this area should embrace newer technologies like Power Automate. At the very least, a refactoring of the concept would help.
Financial Reporting
Thank you for your service. Hopefully, Business Performance Analytics can replace it in the future.
Document Management
This is required, but some refactoring would be nice.
Attributes
Desperately needed in eCommerce, Unified Pricing, and as metadata for Copilots. However, a complete refactoring would be best.
Business Events
They generate too much “chattiness.” The feature is needed, but are there better ways to notify event subscribers?
If you have any opinions on what is ready for deprecation, please share them with the community. I hope I provoked some thought. 😊 Also, keep in mind that customers should evaluate their own extensions and deprecate those no longer needed to reduce system load.




