SharePoint Governance and Continuous Improvement

There are a number of reasons why I have seen SharePoint Governance stall in many environments, but one of the most common reasons and the one I would like to address today, is the problem of trying to take or address too much scope at once.  There are a lot of topics that roll into SharePoint Governance; the SharePoint Governance Framework we use at my company identifies over 50 distinct topics.  In most cases it is not practical to take the full list of topics and work through a governance plan in one pass.  Instead, I advocate for an iterative approach starting with a selection of core topics and finding a pace that matches your organizations cadence to continue solidifying the process.

Continuous Improvement

Continuous Improvement (CI) is a concept that relates to Lean, Kaizen or TQM practices and is intended to use small, incremental changes to bring big results instead of trying change everything at once.  There are many advantages to this approach but the one that resonate most with me is that the incremental investments could be very small, but you start to see gains quickly.  I believe this relates very well to the process and concepts of SharePoint governance.  As you start to gain momentum you are much more likely to get stakeholder involvement which is critical to any governance effort.

Selecting Topics

The selection of topics is important.  There are some topics that lay the foundation for everything else.  I typically start with the core topics that are needed to define the service and system to be implemented (or that has been implemented).  I then move to the most critical items that are needed for managing the system such as touching on the core Information Architecture, Site Topologies, Site Creation Process (who/how/where) and Permission Management.  Over time, and definitely in more mature organizations, you can start to tackle some of the more subtle topics.

Depth for Topics

When reviewing a topical area, it is important to iterate there as well.  For example, when starting an implementation stakeholders may have a decent idea what the service definitions and SLAs might look like, but this will certainly change after it is in use for a while and perhaps became mission critical for core business processes.  As these requirements and needs evolve, additional iterations are required.  This fits very well with the CI concepts mentioned above.  These iterations continue to deliver more value to the stakeholders in small increments.

Finding a Pace

Finding the pace for the governance work can be difficult.  I think the pace for change in any organization is heavily tied to the organization’s maturity.  Anyone that has been IS/IT or IS/IT management for while should be familiar with the Capability Maturity Model.  In Level 1 organizations things are completely chaotic, with ad-hoc efforts which means you are constantly chasing a moving target.  As you progress up the maturity model though, there should be more discipline and an ability to stay focused.  In these organizations it is possible to iterate more frequently and potentially to tackle more topics in parallel.  There is no doubt that more mature organizations work more efficiently.

Other Considerations

Governance should be an ongoing process and the document should be a living document that continues to see change over time as the organization and it’s needs evolve.

It is also important to note that groups should not take a shortcut and try to minimize the stakeholder involvement to simplify the process or to quicken the pace.  Stakeholder involvement, specifically non-IT, is critical to these efforts and it could be argued that you really do not have any governance without this involvement.


Governance is a key aspect to success with SharePoint and by taking the right approach, and one that is in sync with your organization’s capabilities will greatly increase the likelihood that your governance effort will be successful.

Event – Planning for MySites and Social Features in the Enterprise

On November 17th, I will be presenting my session “Planning for MySites and Social Features in the Enterprise” at the Charlotte Area SharePoint User Group

I will provide an overview and best practices for planning and deploying MySites in the Enterprise.  The session will cover how to determine organizational readiness, how to select features to implement, governance considerations, and the architectural impact on the farm.   Based on this session you will have a much better understanding of when and how to implement SharePoint’s new social features.

Meeting Overview

Please join us for the November meeting of the Charlotte Area SharePoint User Group!  The meeting will be held Wednesday, November 17th from 2:30-5:30 at National Gypsum, 2001 Rexford Road, Charlotte, NC 28211.  Be sure to stay for the Networking Mixer immediately following the meeting at Bricktop’s across the street, 6401 Morrison Boulevard, sponsored by Sogeti

Please see the agenda below:

2:00-2:30     Registration

2:30-2:45     Welcome & Introductions

2:45-3:30     " FAST for SharePoint Dan Gilroy, RDA

3:30-4:15     " Planning for MySites and Social Features in the Enterprise"- Mike Oryszak, intellinet

4:15-4:30     Break

4:30-5:20     Track Sessions:

                                Track 1-" Best Practices for applying Cumulative Updates"- Joe Vasil, Microsoft                    

                                Track 2- " A look at InfoPath 2010 and SharePoint 2010"- Brian Gough, Coca-Cola Bottling

5:20-5:30     Meeting Wrap-Up and Prize Drawing

5:30-7:30     Networking Mixer at Bricktop’s Sponsored by Sogeti

As always, we will be collecting donations for local area non-profit organizations.  You may bring in a non-perishable food item or choose from a list of specific needs which I will forward to you with your confirmation. 

To sign up for the meeting please reply to this email.  You do need to pre-register for the meeting so make sure you send your response as soon as you can.

If you are in the Charlotte area, stop by!

Keys to Long Term SharePoint Stability and Success

Recently I have been called into a few environments where the customers were having some serious performance problems or had features that were no longer working.  It really nailed home the point that Capacity Planning should really be Capacity Management as Microsoft now refers to it in their Capacity Management and Sizing Overview guidance for SharePoint 2010.  These environments also tend to have some other issues with patching and large un-used content databases.

The Keys below will help establish long term success for your SharePoint environment.

Initial Design and Planning

The planning and design work that typically goes on prior to an implementation is based heavily on assumptions and the understanding of current requirements.  In any environment where an application like SharePoint takes off, those assumptions change quickly, the needs of the business evolves, and therefore all of those requirements change.  In many cases though, the SharePoint farm topology is not changed and can no longer meet the needs.  With the current state of IT many resources are stretched and do not have time to make major changes to the system, but in many cases a few proactive changes would remove some of the ongoing system support and troubleshooting efforts.

Continued Monitoring

Every system needs regular monitoring.  The frequency and depth of the reviews depends on how complicated the implementation is, but below I have listed out some generic topics that can be reviewed.

Quarterly Review

  • Memory and CPU Utilization
  • Patches – Review new patches and install if appropriate

Semi-Annual Review

  • Review Content Databases – Number of Site Collections per Content DB and the size of each Content Database
  • Search Index Health – Number of items in the index, length of the crawls
  • Average and Peak Usage Stats – Review the average and peak user stats and add hardware if needed.

In addition, in some cases new features are enabled or leveraged months after the initial implementation.  If for example you are going to use SharePoint to host your BI solutions additional capacity may be needed.  If the system was initially designed for a pretty basic Intranet and the BI capabilities are added then the system may not be able to keep up.


Patch management also contributes to keeping your SharePoint installation stable and high performing over time.  Installing Service Packs or the bi-monthly Cumulative Updates can be difficult in some environments where maintenance windows are tight, but these patches will also help keep services running smoothly and bugs at bay.  I worked in one environment where at least three major issues were all resolved with previously released patches.  Unfortunately a lot of time was spent troubleshooting needlessly.

Prune the Hedges

Most information stores get bloated over time, SharePoint is not immune to this.  IT groups have been fighting this for years with shared drives and mail servers.  It is important to have some good retention policies in place to make sure you are keeping the right content, but also getting rid of the stale content.  At the very least you can implement an archiving solution that can move the content to cheaper storage, while keeping it accessible.


Following these recommendations will greatly increase your chances for maintaining a highly capable, well performing environment.

Houston TechFest Wrap-up

As they say, “everything is bigger in Texas” and the Houston TechFest is a great example of that.  A large, independently organized event covering many diverse technical subjects and disciplines.  I really had fun and got to meet some interesting people.

I enjoyed my session, and would like to thank everyone that attended.  My slide deck for the session is available here:

Houston tech fest dev intro to sharepoint search

View more presentations from nextconnect.

Source Code for the Manager Web Part is below:

using System;
using System.ComponentModel;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.Office.Server;
using Microsoft.Office.Server.Search.Query;
using Microsoft.Office.Server.Search.Administration;
using Microsoft.Office.Server.UserProfiles;
using System.Collections.Specialized;
using Microsoft.SharePoint.Administration;
using System.Collections;
using System.Data;
using System.Text;

namespace NextConnect.Search.Presentation.DisplayManagers
public class DisplayManagers : WebPart
protected Literal literalMessage;

protected override void CreateChildControls()
this.literalMessage = new Literal();
this.literalMessage.ID = "literalMessage";

protected override void OnLoad(EventArgs e)

protected void DisplayFullText()
StringBuilder messages = new StringBuilder();
DataTable results = new DataTable();

string searchProxyName = "Search Service Application";
SearchQueryAndSiteSettingsServiceProxy settingsProxy = SPFarm.Local.ServiceProxies.GetValue();
SearchServiceApplicationProxy searchProxy = settingsProxy.ApplicationProxies.GetValue(searchProxyName);
FullTextSqlQuery mQuery = new FullTextSqlQuery(searchProxy);

mQuery.QueryText = "SELECT LastName, FirstName, JobTitle, accountname FROM SCOPE() WHERE ("scope" = 'People') AND CONTAINS(JobTitle, 'Manager') AND NOT CONTAINS(Department, '1099')";

mQuery.ResultTypes = ResultType.RelevantResults;
mQuery.TrimDuplicates = false;
mQuery.RowLimit = 100;
//mQuery.KeywordInclusion = KeywordInclusion.AnyKeyword;
//mQuery.AuthenticationType = QueryAuthenticationType.NtAuthenticatedQuery;

ResultTableCollection resultTables = mQuery.Execute();
if (resultTables.Count > 0)
ResultTable relevantResults = resultTables[ResultType.RelevantResults];
results.Load(relevantResults, LoadOption.OverwriteChanges);
Found {0} result(s).
    ", results.Rows.Count);

    foreach (DataRow row in results.Rows)
  • {0}, {1} - {2}
  • ", row[0].ToString(), row[1].ToString(), row[2].ToString(), row[3].ToString());

this.literalMessage.Text = messages.ToString();
catch (Exception ex)
this.literalMessage.Text = "Error: " + ex.Message.ToString();

I hope everyone else enjoyed the event as well!

Review – SharePoint 2010 How-To

I was recently given the opportunity to review Ishai Sagi’s new book SharePoint 2010 How-To.  The book provides an overview on many of the concepts and tasks that site users, authors, content managers, and site owners need to know.  The format of the book makes it a great Quick Reference for users not interested in reading it end to end.  

I highly recommend this for groups looking to maximize their use and value in SharePoint within the business as well as for support professionals supporting SharePoint end users.

%d bloggers like this: