V2.0 Released - Supporting both SP2010 and SP2007.
Why Site Configurator?
There were three main reasons for creating the Site Configurator feature:
Provisioning site process of SharePoint
- In some scenarios there is a need for being in as much control of the site provisioning process as possible; making sure what gets created in what order.
- A wish to reuse as much custom functionality as possible.
- Making site provisioning as easy as possible, because sometimes developers found it hard to use and understand the built-in provisioning mechanisms.
The term provisioning is used to describe the process of creating a new SharePoint site and making it available for end-users. There are several steps in the creation process and SharePoint provisions in the following order:
- Global onet.xml This file defines list templates for hidden lists, list base types, a default definition configuration, and modules that apply globally to the deployment.
- SPSite scoped features defined in site definitions onet.xml, in the order they are defined in the file. The onet.xml file defined in the site definition can define navigational areas, list templates, document templates, configurations, modules, components,
and server e-mail footers used in the site definition to which it corresponds.
- SPSite scoped stapled features, in quasi random order
- SPWeb scoped features defined in onet.xml, in the order they are defined in the file.
- SPWeb scoped stapled features, in quasi random order
- List instances defined in onet.xml
- Modules defined in onet.xml
This is a fairly complex process and it can often be hard to know the method for customizing a site definition. A solution can be right in one scenario and completely wrong in another, making this somewhat confusing.
Provisioning with Site Configurator
Site Configurator is attaching to step 5, as a web stapled feature, as late in the out-of-the-box (OOB) provisioning as possible. Omitting steps 2, 3 and 4 is also recommended and will be the case if you use the blank site definition template as a starting
Once the Site Configurator is activated, it reads a siteconfigurations.xml file from its feature folder. The file consists of configuration elements, ie. custom settings, web parts, list instances, other features to activate, and then configures your site according
to the specifications.
In order to make Site Configurator handle customization of your site, you need to complete three steps with an optional fourth:
- Create a Site Configurator feature
- (Optional) Create a new site definition
- Staple the Site Configurator feature to a site definition.
- Deploy and create a new site.
For more information, take a look at the documentation in the download section.
Versjon 1.0 Released on 16. January!
(But you might want to check out the latest check-in from the source code tab...)
SharePoint Site Configurator Feature is a small framework for taking care of all configurations, settings and featurestapling you need for transforming a standard blank site definition into your own full blown site, without the hassle of creating a complex
custom site definition.
Several bloggers have lately argued that you should avoid creating site definitions whenever possible, and instead do the configuration through features that are stapled to "empty" site definitions. The Site Configurator feature is a feature that
lets you define the most common configurations in a "shadow" site definition.
Staple this feature to a copy of a blank site definition. Enter the settings and your own features in the settings file.
The goal with the SharePoint Site Configurator Feature is to minimize the need to create custom site definitions in SharePoint development projects.
Main reasons for moving away from custom site definitions are:
- No need for creating and maintaining large and complex custom onet.xml-files
- Minimize effort in a future upgrade scenario, no need for creating difficult mapping files and performing tedious tests and retests to get good results
- Better control of the site creation process, e.g. activate features in a controllable order
- Make testing/debugging of site creation a whole lot easier!
The SharePoint Site Configurator Feature consists of these elements:
- Microsoft.MCS.FeatureStapler: The stapler Feature binding the staplee to an OOB blank site definition
- Microsoft.MCS.SiteConfigurator: The staplee Feature which is the SiteConfigurator
- SiteConfiguration.xml: The xml-file holding the settings for the site(s)
In addition these files might also need to be added/modified
SharePoint Site Configurator Feature example solution
- /12/Template/<localeid>/XML/webtemp<your>.xml: The site with the stapler as it appears in the "Create site"-dialog
- /12/Template/SiteTemplates/<the site definition that has the stapler, a copy of a blank site definition>
This is how the process of creating a site happens:
- A site is created that has the feature stapled
- The Feature's FeatureActivated event kicks off the configuring of the site in this order:
If the Feature is deactivated, this sequence of functions are run:
Note that the Top/Quick launch links and lists/webparts are deleted. This could be a non-desired behavior. The lists deletion is depending on the settings in the configuration xml.
Example of a configuration xml file
Root element holding the different site configurations
Element(s) describing one configuration which will be run for one site
Element(s) describing site properties to be configured
Element(s) telling Feature to be activated with site collection scope, including the activation order
Element(s) telling Feature to be activated with site scope, including the activation order
Element(s) describing top navigation links
Element(s) describing quick launch links
Element(s) for configuring properties in the site propertybag
Element(s) describing list view web parts to be added to the homepage
Element(s) describing connections between web parts
Element(s) describing lists to be created in the site
Element(s) describing lists to be deleted on Feature deactivation
Element(s) describing files to be copied to the site.
The feature is logging information and errors with the standard SharePoint logging mechanisms
Web part connections cannot be configured yet