Commercial off-the-shelf products (COTS) are attractive options for enterprise organizations as they are packed with configurable out-of-the-box features that address a good portion of business requirements without writing any code. Dynamics 365 is no exception. Dynamics CRM 365 specifically offers a powerful modularized feature-rich product that can be tailored to suit your organization's needs.
Generally speaking, configurable, no-code extensions are cheaper to implement, easier to maintain, and easier to upgrade, as the product evolves. Modeled correctly, those extensions can greatly enhance the value of your investment. Modeled incorrectly, they can lead to a platform that is locked down to one purpose only.
Using the same analogy as that of the Dynamics 365 suite, you can build your CRM application for general use by loosely coupling your entities, or you can build a specialized application by tightly coupling all the content. The following picture taken from the Dynamics 365 Microsoft marketing pack visualizes a specialized implementation versus a more general one:
A specialized implementation is not necessarily wrong, as some applications won't make sense if rendered generic, especially as some organizations work in siloed business units. That said, most organizations prefer a more flexible implementation.
This chapter will cover different schema-modeling techniques to deal with different business scenarios, along with their respective pros and cons. It will also cover out-of-the-box configurable business logic extensions that were introduced over the last few years, which drastically reduce the amount of code required to configure implementations.
To give context to our configuration, we will model our entities based on a college solution with a student/contact management system. The system will hold contacts that can either be generic individuals, students with graduation details, or contractors working for the college.