Choose your path Increase your proficiency with the Dynamics 365 applications that you already use and learn more about the apps that interest you. Up your game with a learning path tailored to today's Dynamics 365 masterminds and designed to prepare you for industry-recognized Microsoft certifications.
Visit Microsoft Learn
2020 release wave 1Discover the latest updates and new features to Dynamics 365 planned through September 2020
Release overview guides and videos Release Plan | Preview 2020 Release Wave 1 Timeline
Ace your Dynamics 365 deployment with packaged services delivered by expert consultants. | Explore service offerings
Connect with the ISV success team on the latest roadmap, developer tool for AppSource certification, and ISV community engagements | ISV self-service portal
The FastTrack program is designed to help you accelerate your Dynamics 365 deployment with confidence.
FastTrack Program | Finance TechTalks | Customer Engagement TechTalks | Upcoming TechTalks
I have heard many people say not to do this because it is against best practices and MS recommendations but I am not saying that I want to make changes to system tables but customer names, dates etc.
This is unsupported and can lead to problems.
IF you do it directly on the DB this won't happen. This could cause the database to get in an odd state that could be very tricky to fix.
you can change values on fields to incorrect values because you have bypassed CRM validation.
You can also update the wrong fields, in correct values and all sorts of dangerous things by modifying the database directly.
The final reason it's not supported is because Microsoft will offer limited support to fixing your CRM Database because you made an unsupported change.
So my advice is don't do it, there are plenty of ways to modify the data in a supported way
Ben, I have been given that exact reason by many other devs but I think if there is no custom plugins/workflows that cause an event to trigger on the change of a field, then it is ok. Like changing someones name from Donnal to Donald.
I was wondering if there are any other reasons? If I changed a value in my DB - then how would Microsoft know anyway?
There are a number of internal processes that may be triggered by updating the data in the database. Not to say that changing a name will trigger this, but there is always a chance that an "update" to a record will trigger an internal process for auditing or maybe some other kind of action. Basically it's not supported because Microsoft can't control any changes you make to the DB or it's data, therefore won't be willing to investigate issues that may arise in the future. If there is another way to update these records, through the SDK or custom process this will guarantee Microsoft support.
There are lots of Microsoft/CRM processes/plugins and other things triggered.
Behind the scenes there are lots of processes altering lists, security and other internal database tables which CRM uses.
Personally the risk isn't worth it because if it goes wrong (and you might not be able to tell straight away), Microsoft won't help you resolve the problem.
You might be in a situation where you have to create a new CRM organisation and export the data to it or lose lots of data.
Why do you need to modify the SQL tables directly anyway?
So when you update a Contact "FirstName" field in the DB from Donnal to Donald, will the platform also update the "FullName" field to reflect the new first and last names? I am pretty sure it won't. So you would have to remember to do that too.
Just one simple example of a potential problem, building on your (deceptively) simple example.
And of course the last modified by / on fields for person and date/time won't get updated. And auditing won't record the changes.
Dead simple - don't do it. There are plenty of methods of updating records using out of the box functionality, third party solutions or writing custom code for more complex requirements or large loads that need performance optimisation.
Let me chip in here from the Microsoft Supportability perspective. Making direct changes in the database structure of CRM (this also includes changing data) is a not supported modification which means that Microsoft is unable to offer support should the modification lead to issues.
As Adam has pointed out, based on different needs, there are great ways, both in-CRM or third party to do the modifications without jeopardizing database integrity.
Business Applications communities