Lots of companies have been running SharePoint systems for many years. Some have built up a lot of expertise, some even have dedicated support professionals and teams in place. Yet even for these very mature organizations, ‘governance’ can still be a bit of a mystery.
Any company running SharePoint needs to think about governance, and what it means to them. According to Microsoft the definition of governance is:
“Governance is the set of policies, roles, responsibilities, and processes that control how an organization’s business divisions and IT teams work together to achieve its goals. “
Failing to think about these things means a SharePoint portal can become disorganized, users can get confused, people don’t know where to go with questions, and there is no clear plan around the future direction of the system.
Whilst many companies struggle with governance, the SharePoint community is particularly good at trying to help. Besides a lot of good articles on Microsoft TechNet, many posts have been written about governance in SharePoint projects for example
Codeplex even hosts a SharePoint Governance tool by Bill Baer, Senior Technical Product Manager at Microsoft, to make the process easier (please note it is currently in alpha status).
However, all these articles are usually focussing only on IT Management and Information Management Governance. One topic that is nearly always missed in any governance conversation is that of Application Management & Governance of the custom code.
Microsoft explains the application management for custom solutions in its governance poster (PDF) and TechNet article for SharePoint 2013.
But what are the controls and processes in place around customizations?
Let us look into this area in a bit more detail.
Without proper governance in this area, it can become unclear who wrote customizations, what exactly each one is doing, and what the dependencies are to keep them working. People come and go, requirements change, and without proper governance, it can become impossible to understand the status or impact on your farm. If something goes wrong it could feasibly cost the company time and money, so something needs to be done.
As we have discussed previously substandard customizations can have a negative impact on a SharePoint environment, both on-premises or cloud-hosted:
So an important part of any governance strategy is to understand what customizations you have, what they do, and exactly how they have been implemented.
Quite a while ago (in 2009) Microsoft has published 10 best practices for SharePoint farm solutions. Even though the blog focuses on SharePoint 2007, many of it is still valid for farm solutions in SharePoint 2010 and 2013.
The problem with such and similar guidance on blogs is that a lot of it became obsolete with the shift to SharePoint Online but also the requirement to prepare your code already now for future updates and migration if you are still developing for SharePoint on-premises. Even worse, the thousands of SharePoint developer-focused blogs and forums on the internet are full of false or at least questionable guidance and code solutions. Sadly many developers tend to just copy & paste code snippets of a solution without even giving it a thought or thorough investigation if this piece of code should be really used. This might minimize the costs and time to finish their projects, but in the end, the customer will pay the bill when realizing that poor code caused high maintenance and operational costs, or needs to be re-implemented entirely when upgrading to a new SharePoint version.
Here are three examples that might make you reconsider your current practices and show pretty clear how hard it is to get the right up-to-date guidance on what to do and what to avoid:
Just these examples show you already how hard and complicated it is to make sure your SharePoint Code is of high quality, secure, performant, upgradeable/future-proof, and follows best practices. Even harder is to govern this code when it is running and used in your production environment or needs to be migrated to a new SharePoint version.
For this reason, we have created the SharePoint Code Analysis Framework (SPCAF) that helps you to analyze all the server-side (SSOM), client-side (CSOM), JavaScript (JSOM), and all declarative (XML, HTML, CSS, ASPX) code of SharePoint solutions (.wsp), apps (.app), executables (.exe) and assemblies (.dll). It allows you to choose between pre-configured or your customized rulesets for different target SharePoint versions and development models, detects code issues, memory leaks, security risks, etc. and generates reports on dependencies, calculates metrics, documents the application, and analyzes the ability to upgrade a farm solution to the app model.
Governance is essential for a successful SharePoint implementation. While most governance strategies focus on business processes, rules, audits, and strategies, custom code is nearly always forgotten. By following the best practices above, and using automatic tooling, custom code can be made part of the governance strategy.
Companies can go even further and record individual features and customizations, the business requirements behind them, version history of changes, and even the author’s names as part of formal SharePoint governance documentation.
Governance, around custom code or more business-focused areas of SharePoint, can be hard to implement at first and difficult to keep going in the long term. But you will certainly be glad you put the effort in when the day comes to update or rework the system.
Find about more about how SharePoint Code Analysis Framework (SPCAF) can help as part of your governance plan.
Merken