Update: It's uploaded.
I'm in the progress of slowly updating some of my CRM 3.0 samples and publicly releasing some others which I built as internal proof of concept tools. The add-in consists of a custom entity and a plugin. In addition to these 'raw' components I have a configuration application which connects to CRM, creates the entity, adds a custom icon, modifies the sitemap menu and uploads the plugin.
In the next few days I'll conduct the required security tests on the plugin and entity XML and upload it to code.msdn.microsoft.com. Like other projects located there the source code will available and licensed under the Microsoft Public License (Ms-PL).
My development methodology for this was pretty basic:
- Determine the Scenario: Customizers often make many changes to the customizations in a CRM org. It can be time consuming to constantly export the customizations and save them somewhere.
- Describe the Solution: The Customizer (or end user in this case) simply creates a new 'Version' record. The system then automatically attaches a zip file containing the customizations currently on the system to this record.
- Code the core Solution: Created the entity with the UI. Write the plugin. The Plugin Registration Tool is invaluable for testing and debugging plugins.
- Create the Configuration App: Using my configuration code I integrate the solution components (entity, plugin etc). Don't underestimate the work involved here. Ensuring that your solution can be deployed seamlessly alongside other solutions is important.
- Testing: FX Cop, Unit Testing, Manual Testing etc etc. I also enable tracing on my CRM machine during testing to look for any abnormal activity.
- Documentation: In this case it's a basic Wiki page on the code.msdn.microsoft.com resource page. Wiki is probably the best way to document software IMHO. I'm not a fan of old style help documents - even if you don't intend to make your Wiki publicly editable it's a far superior option compared to a semi-static doc file.
I didn't opt for an reconfiguration tool for this solution. For those who wish to remove the solution they can simply delete the Customization Version entity. For more advanced solutions the inclusion of a reconfiguration/removal application is highly advised.