Life and things around it (WP)

Life experiences, SharePoint, coding issues and photography…

How to find all the websites using enterprise features in SharePoint

with one comment

A customer came up and said, we are having a large number of SharePoint Enterprise licenses and we want to know how many websites in our Farm are actually using Enterprise features of SharePoint.

In SharePoint, enterprise features are available by enabling the SharePoint Feature called as “PremiumWeb” with featureID as “0806D127-06E6-447a-980E-2E90B03101B8”. A good list of available enterprise features and their contents is available at http://blogs.msdn.com/ekraus/archive/2008/08/13/enterprise-features-exposed.aspx.

Now to find out which websites are actually have the Enterprise features (using them or not, is a totally different area of discussion) enabled for them, we should be easily able to iterate through the webs and their sub-webs and then check the feature list of each SPWeb object and see if we have “PremiumWeb” feature available or not. If the feature exists, that particular web has got enterprise features enabled.

Below is the code that I used to create a sample console application, which would give us a count of SPWebs which have got “PremiumWeb” feature enabled.

namespace FindPremiumWebs 
{ 
    class Program 
    { 
        static long featureCounter = 0; 
        static void Main(string[] args) 
        { 
            if (args.Length > 0) 
            { 
                Console.WriteLine("Checking webs under {0}...", args[0]); 
                Console.WriteLine("Found {0} webs using Enterprise Features.", 
                                   getAllPremiumWebs(args[0])); 
            } 
            else 
            { 
                Console.WriteLine("URL not specified"); 
            } 
        } 
        
        public static long getAllPremiumWebs(string siteURL) 
        { 
            using (SPSite site = new SPSite(siteURL)) 
            { 
                using (SPWeb web = site.RootWeb) 
                { 
                    CheckSubWebs(web); 
                } 
            } 
            return featureCounter; 
        } 
        
        private static void CheckSubWebs(SPWeb web) 
        { 
            foreach (SPWeb subWeb in web.Webs) 
            { 
                foreach (SPFeature feature in subWeb.Features) 
                { 
                    if (feature.Definition.DisplayName == "PremiumWeb") 
                    { 
                        featureCounter++; 
                    } 
                } 
                CheckSubWebs(subWeb); 
                subWeb.Dispose(); 
            } 
        } 
    } 
}

This console application expects that a URL of the root site be passed to it and it will iterate all the sub-webs under that root site and give out a total count of webs using (oops! enabled with) enterprise features.

As always… Happy Coding

Advertisements

Written by Manpreet Alag

February 28, 2013 at 12:03 am

Posted in SharePoint

Tagged with ,

One Response

Subscribe to comments with RSS.

  1. SutoCom

    March 1, 2013 at 11:14 pm


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: