In previous posts I wrote about SharePoint Customization Policies and Change Control. That post was pretty high level and at its root questioned the position of some environments that set a No Customization policy. It then gave a brief overview of the types of customizations and how they differ from content changes.
I wanted to follow up with a post that goes a bit more in detail how to manage an environment that does allow customizations along with some suggestions on how to document and manage those customizations.
Packaging Custom Code
Most SharePoint developers start out as regular .NET developers. It is a natural progression and there are a lot of similarities. One big difference comes in deploying solutions. Most try to manually deploy their solutions, not understanding all of the implications. In order to gain all of the benefits of the SharePoint platform code needs to be bundled into packages. Simple, stand-alone web parts can be packaged and deployed via cab files and more sophisticated apps, templates, and timer jobs can be deployed via SharePoint Solution files.
By packaging and deploying these customizations through supported interfaces they will be easier to manage during updates and when adding additional Web Front Ends to your farm.
Targeting Custom Code
Not all solutions or web parts have to be deployed globally throughout the farm. If your solution or web part is used to support a specific application then only deploy it to the site(s) that need it. That will reduce clutter in the solution listings or Web Part catalog.
Tracking Installations and Deployments
It is a very good idea to keep a running list of the patches, components, and customizations installed. This can make troubleshooting issues a lot easier, and help make migrations or farm changes easier. I keep a site within my SharePoint farms to manage the change log and documentation.
Some data elements that I would recommend tracking include:
• SolType (WP, List Tmpl, Site Tmpl, WF Actions, Timer Jobs, Sys Patch)
• Source (Custom, Community, 3rd Party)
• Install Date
• Current Version
• Scope (Farm, Application, Site Collection)
• Scope Detail
• Additional Details