XRM Tool Box has this cool plugin to clone entity metadata. I wanted to create an entity similar to the out of the box contact entity. This should have all the out of the box fields and few additional fields. The design decision to clone the Contact entity rather than using the existing one was:
- Contact entity was used for other requirement to store information about individuals.
- Cloning the contact entity will have more diverse entity structure
- Maintain simplicity, where if I used the Contact entity for storing both type of records, the design would be more complex, leading to maintenance overhead in the future.
When we design for distributed systems logging is one of the important thing that we need to consider. Why is it so important? As we all know, when we take a distributed system there are many layers involved and also many third party integrations such as facebook, twitter, payment gateways, etc. All these component together may build your enterprise solution.
So the problem arises when it comes to locate issues within your system. The business needs are changing and new competitors comes up all around the world and no one can rest, sometimes you may get requirements to be implemented over night. So these requirements need to be implemented and deployed to the target users as quickly as possible and we can’t afford to have bugs in these releases as they will end up with catastrophic results to the end users.
Debugging would be an ideal and the apparent solution for this, but believe me if you have several different layers in your solution and some third party integrations, it is not. Because you’ll have to spend hours to locate the locations to put the break points and have to run the debugger several times to identify the issue. This is like brain surgery hard scenario and you can’t spend time one these. And if you have any asynchronous processing and any threads involved, identifying an issue will be more difficult than anything else.