Let me also add that when I say "customization" in this post, I am including integrations and interfaces between systems as well.
With clients we have implemented, and those we have picked up over time, the tendency seems to be to "trust the professionals" with the customizations. While I agree with this on one level, in terms of who should be doing the actual development-- I also would emphasize that every client/power user needs to understand their customizations on several levels. This due diligence on the client/power user side can help ensure that the customization...
- works in a practical sense for your everyday business
- is built on technology that you understand at a high level
- can grow with your business
- is understood in a way that can be communicated throughout the user base (and for future users)
- why they have customization
- what the customization does
- how the customization can be adjusted for new needs
None of this is anyone's fault necessarily, but it does emphasize the need for due diligence anytime you engage with a consultant or developer for a customization (and even a worthwhile endeavor to review your existing customization). What are the key parts of the due diligence I would recommend? Well, you KNEW I was going to get to that! So here you go...
- Every customization you have should have a specification. It doesn't have to be fancy, but it does need to be a document that contains an explanation of the functionality of the customization as well as the technology to be used to develop it. Ideally, it should also contain contact information regarding the developer. I'll be honest, I run in to clients wanting to skip this step more than consultants and developers. I suppose this has to do with not seeing the value of this step, seeing it as a way for consultants to bill more. But this step has the greatest impact on a client's ability to understand what they are paying for, and minimizing miscommunication and missed expectations. If you don't have them for your existing customizations, ask for them to be written now (either internally or by the consultants/developers). On another side note, somewhere the actual process for using the customization should be documented as well. Sometimes this is added to the spec, sometimes if is added to other process documentation. But make sure it happens, so that the customization is included in training efforts internally.
- Understand at a high level what technology is being used to develop the customization. Why do you need to know this? Well, you need to understand what is involved in upgrading the customization for new versions? How about adjusting or adding functionality? Will it mean code writing, or something simpler? How about source code? Does the customization have source code, and who owns it (in most cases not the client but the developer/company retains ownership)? What does that mean if the developer stops working for the company? Or if you change companies? Will there be a detailed technical design document to be used if other developers need to be engaged? And is the technology specialized (e.g., Dexterity) or more common (e.g., VB, .Net, etc). All are important questions that impact the longevity and flexibility of the customization.
- Conduct full testing with a method for collecting feedback internally, so that you can ensure that the customization indeed meets expectations and enhances the user experience. It is not uncommon for a customization to be developed per the specification but in practice still need adjustments to make it truly useful for the users. When this happens, clients will sometimes "stall out" out of fear of additional costs. Even though, in the long run, the additional costs that might be incurred at this stage could save frustration as well as future replacement costs when the customization is abandoned. Just make sure during this point in the project, that the spec and process documentation are updated with changes.
Christina Phillips is a Microsoft Certified Trainer and Dynamics GP Certified Professional. She is a director with BKD Technologies, providing training, support, and project management services to new and existing Microsoft Dynamics customers. This blog represents her views only, not those of her employer.