The platform evolution over a decade from 2001-2013 not only changed the user experience, functionality but also the building blocks and development principles and tools. In development landscape we have moved on from custom site definitions to web templates, features and feature stapling to apps and solution files based on wsp as Sandbox solutions and Farm solutions. The challenges today are in deciding the approach to development traditional and apps, and choices in app development.
At a very fundamental level, the columns, content types and features and lists now called apps remain the same as building blocks. From development perspective the office 365 and on premise differ from the type of features that a developer can access, consider and include for developing artefacts for office 365 and on premise solutions. The standard and enterprise versions also have different set of features available for activation at different scopes- Farm, Site and Web. The concept of apps imposes more decision making points in the road to development.
For an excellent initial introduction and Microsoft SharePoint 2013 approach to apps you can read the article by Ted Pattison, Introducing SharePoint Apps written in July last year and you can find more in the book Microsoft SharePoint 2013 App development which you can buy from Amazon. Around the same time Chris o Brien posed the million dollar questions for all budding developers. SharePoint 2013 apps – architecture, capability and UX considerations. I would urge all developers to read them and understand before embarking on any development in SharePoint 2013.
Forensics of features- On premise and Cloud – Office 365
I am sure a lot of developers have seen the dreaded error
The site template requires that the feature (xxxx- xxxx) be activated in the site collection correlation ID (xxxxx-xxxxx).
This simply meant that features included in web template did not match what is deployed in target site. This usually happened when we moved from development to production where features installed and activated were not in sync and it was easy to find the feature name and ensure that either it is deleted in onet.xml or activated in target site. Now we have similar challenges when we take an office 365 web template, let us say a office 365 Project site saved as template and web template as wsp file downloaded .and imported in Visual studio 2012 make some changes and want to test it on a local on premise environment. It will definitely throw an error because there are features that are in the cloud- office 365 that are not there in an on premise deployment.
I have an office 365 small business premium subscription in which I made some customisations through user interface and created a web template. The template was downloaded as wsp solution. The WSP was then imported in Visual Studio 2012 to make a few minor changes and deployed as a solution in my local farm to create a custom web template for testing.Then I went on to create a site using it and as expected it threw an error. The errors indicate that a feature is missing and it will repeat till you exclude them from the onet.xml file, a tedious process that will drive you crazy. The objective here was to check interoperability of web templates developed between online and on premise deployments.
So what are the features that prevented me from deploying a cloud based web template in the on premise testing environment.
<!--HelpCollectionRemoveDefault Feature--> <!--<Feature ID="{232b3f94-9d6e-4ed6-8d55-04d5a44ac449}" Name="FeatureDefinition/15/232b3f94-9d6e-4ed6-8d55-04d5a44ac449" />--> <!--HelpCollectionLiteFeature Feature--> <!--<Feature ID="{d28bf940-11d3-496c-a9b9-22f60076a879}" Name="FeatureDefinition/15/d28bf940-11d3-496c-a9b9-22f60076a879" />--> <!--BPOSExtranetFlag Feature--> <!--<Feature ID="{69cadbef-ac7d-494d-9d0a-39a26e008377}" Name="FeatureDefinition/15/69cadbef-ac7d-494d-9d0a-39a26e008377" />--> <!--IssueTrackingWorkflow Feature--> <!--<Feature ID="{fde5d850-671e-4143-950a-87b473922dc7}" Name="FeatureDefinition/15/fde5d850-671e-4143-950a-87b473922dc7" />--> <!--ShellControl Feature--> <!--<Feature ID="{5d86fce4-1d23-11df-85a4-a17a56d89593}" Name="FeatureDefinition/15/5d86fce4-1d23-11df-85a4-a17a56d89593" />--> <!--SpoGuestIntegration Feature--> <!--<Feature ID="{9836d446-3785-4579-8480-a27d5c965b19}" Name="FeatureDefinition/15/9836d446-3785-4579-8480-a27d5c965b19" /><!-->
In a scenario of testing or developing a web template downloaded from office 365 in an on premise deployment you should identify these exclusive features and exclude in Onet.xml.An examination of the Features extracted using powershell commands for on premise Project site and office 365 –Project site from the onet.xml from web template identified the same set of features as not available.
The onet.xml file will only contain features that are installed and activated. For example my on premise Project site web features were only 51 and site features were 65. In comparison the office 365 project site had 28 web features and 45 site features.
The current version of SharePoint 2013 consists of the following across all versions –Standard and Enterprise.
Total Number of Features: 413
- Farm Level Features: 78
- We application features: 21
- Site features: 136
- Web Features: 178
Total 413
You can request for a full list of features and classification by email- chundur@ushareinfo.biz as space constraints do not permit me to publish a complete feature matrix here.
Managing Features
For review, management and administration of features for an On Premise deployment you could use Power shell commands and a new addition to the tools Feature Admin tool developed by the codeplex community.
The following PowerShell commands posted for SharePoint 2010 in a blog by Glyn Clough can be used to list all features in on premise SharePoint 2013 deployment.
Get-Feature | Sort -Property Scope,DisplayName | FT -GroupBy Scope DisplayName,Id > c:\AllInstalledFeatures.txt Get-Feature -Site http://sitecollectionurl | Sort DisplayName | FT DisplayName,Id Get-SPSite http://sitecollectionurl | Get-SPWeb -Limit ALL | %{ Get-SPFeature -Web $_ } | Sort DisplayName -Unique | FT DisplayName,Id
The following commands provide ability to manage features in the platform as before.
Disable-SPFeature | Disables an installed SharePoint feature at a given scope. |
Enable-SPFeature | Enables an installed SharePoint feature at the given scope. |
Get-SPFeature | Returns the SharePoint features based on a given scope. |
Uninstall-SPFeature | Uninstalls an installed feature definition. |
Install-SPFeature | Installs a SharePoint feature by using the Feature.xml file. |
You can now also use PowerShell Command builder to create and use PowerShell commands for managing SharePoint.
Feature Admin Tool SharePoint 2013
Over the years the consultants and developers used either stsadm or PowerShell commands to install, activate, deactivate and remove features. Now you can use a very useful feature admin tool kit for review and management of features in SharePoint 2013 at farm, Web application, site collection and Website level and it is a GUI based tool.
‘Features’ of the Feature Admin Tool – (Quoted from Codeplex Site)
- List features and feature definitions
- Search for faulty features in the farm and remove them cleanly if wanted
- Uninstall feature Definitions from the farm, even if faulty
- When uninstalling a feature, FeatureAdmin provides an option to deactivate this feature in the entire farm before uninstalling it!
- can also simply activate or deactivate features with any scope in the whole farm, in only a Web Application, only within a SiteCollection or in a Site (SPWeb)
- Web Apps are parsed automatically, after selecting one, all Site Collections in the Web App are shown
- When selecting a SiteCollection, all sites (webs) are listed automatically.
- logging information is shown (e.g. change of selections, features added or removed)
- Features and Feature Definitions are sorted (first after scope and then) after name
- The FeatureAdmin window and all internal windows are resizeable (starting with version 2.1)”
I would recommend all SharePoint administrators, support staff and developers install this handy tool in all environments. The use and security requirements need to be noted prior to use of tool from codeplex site.
SharePoint Manager 2013
Another tool which has been around for some time for review of environment is SharePoint Manager. The SharePoint Manager 2013 is a SharePoint object model explorer. It enables you to browse every site on the local farm and view every property.
As you can see the number of features shown here is 659. This is because the tool kit shows both sets of features 14 and 15 version available in the farm.You can view all data related to features installed at farm level, site and web level.
Exploring Features- SharePoint – Online
What about SharePoint Manager online. We have an app for it as well in app store. You can add the app for use by 5 persons for 15 days as a trial. The power shell commands for managing SharePoint Online are very limited. Powershell Commands for SharePoint OnLine
It provides an explorer view of site where it is deployed and is useful for administrators to provide a view of features, lists etc.
Now we know all the building blocks as features that are in SharePoint 2013 on premise and in office 365 and ways to explore, review and manage them the next stage would be to explore the new features and the functionality they provide in this version and learn how we can use them to provide required end user experience and functionality.