One of my customers learned (hopefully) a very important lesson this week regarding the protection of their Dynamics CRM/365 assets. In this case: Customizations, but it applies to any asset that is created or modified by hand.
#1: Solution Repository
First and foremost, have a location that everyone has access to, that is regularly backed-up or replicated (Team Foundation Services, OneDrive, Dropbox, Box, etc.). Next, establish procedures on how solution files are copied to this repository. Here are a few:
- Define a clear solution numbering scheme and enforce its use.
- If using Managed solutions for production deployment, always create an Unmanaged version that matches the Managed version.
- Ensure that everyone, development, QA, and management understands your release procedures.
If you are using managed solutions, then you must have an unmanaged version in order to make modifications. Managed solutions can’t be exported so if you end up in a situation where you do not have the original unmanaged version, you will have a huge problem.
#2: Source Code Repository
I cannot emphasize enough the need to have and utilize a source code repository for JavaScript, plugins, and any custom integration code that you may have. As I mentioned in this article, there are a variety of benefits, the least of which is piece of mind.
#3: Know and Understand Your Development Environment
I see this in certain cases where a company hires a consultant or a consultancy and has them develop a custom solution or component. One of the questions that frequently arises is “where do we do development?” Hopefully, all or most development is performed on a customer-controlled system but sometimes that is not practical, due to the nature of the work.
I bring this up because I have seen too many instances where #1 and #2 were not followed and the development environment was out of the control of the customer. Weeks or months later, when they decided there were changes to be made, they discover their development environment is no longer in existence (for whatever reason) and the person or company who did the work cannot be contacted. Now what do they do?
#4: Create Clear and Concise Development Procedures and Follow Them
This one is for all of the administrators and management people out there. Most development is not rocket science, it is common sense, and your procedures governing how you do things, like the one’s above, should be as well.
Conclusion
As they say, “It’s all fun and games until someone loses an eye.” Most of the bad situations I have encountered contain one of the following phrases:
- They are no longer with the company
- They left
- We can’t get in touch with them
- We are no longer working with them
All customized or developed assess within your Dynamics CRM/365 project need to be stored in a safe place so that personnel changes (internal or external) do not waste business cycles trying to recreate what has already been created.
Let’s make it a goal for 2017 that your company is not one of “those” companies.