Last week I was in a discussion with a colleague and the topic of whether or not he should re purpose the opportunity entity came up. He had a scenario that was somewhat similar to opportunities, but was not a sales opportunity. This lead me to rediscover a blog post I wrote 8 years ago for the Dynamics team blog called The CRM Configurator’s Dilemma to answer the question “should you re-purpose system entities or create new entities?”
My advice from the post, with updated comments:
- Consider the future
Still valid, even more so. The future of Dynamics is moving much faster than it was back then, using entities in non standard ways can cause problems if Microsoft makes changes to the entity that you are using. Also, if you choose to re-purpose a little uses system entity like contracts, there is a good chance that Microsoft will elect to deprecate that entity in the future. Custom entities don’t get deprecated.
2. Consider the overhead
When I wrote the original post, there were a number of system entities that had certain fields that could not be removed from the forms. This has changed somewhat as system entities have been refreshed and modernized, but there are still fields on entities like opportunity, case, and campaign that cannot be removed from the form.
3. Consider the user experience
This still applies–if your use case is less that 50% in line with the standard entity functionality, a custom entity will typically give users a more simple user experience than scaling down a more complex system entity. Plus we now have the ability to add business process flows to any entity, including custom entities, which can easily make a custom entity use experience as good or better than re-purposing a system entity.
The advice 8 years later is still the same–don’t re-purpose system entities. There is even less reason to do so now–one of the biggest reasons that configurators 10 years ago would re-purpose system entities was activities–users wanted an activity type that wasn’t a fax, email, appointment, or task, so the configurator would grab one that wasn’t being used and re-purpose it. Now we have custom activity entities, this is no longer necessary.