Friday, May 8, 2015

Microsoft's Ignite Conference SharePoint Updates and Announcements

As Microsoft's Ignite Conference winds down, there have been several SharePoint-related updates and announcements:

SharePoint 2016 will ship in the second quarter of 2016 and will include the following enhancements:
  •  Patching SharePoint 2016 will require zero downtime! Yay!!! In addition to that, distributed cache is being enhanced to support increased uptime. Microsoft is promising the capability to deliver 99.99% up-time with SharePoint 2016 on premises!
  • SharePoint 2016 will require SQL server 2014 or later
  • There is a new “min role” installation option. This codifies the server role by laying down only the bits it needs to fulfill the role. The roles include Web Front End, Caching, Application, Search, and Specialized.
  • Content DBs will be allowed to scale to TBs
  • The list threshold soft limit will be significantly increased beyond the current 5,000
  • Maximum file size limit will be increased to 10 GB.
  • There is a new “fast site creation” capability which basically creates sites from a “base version” stored in the database. Creating a team site, for example will simply require copying a few rows from the database and will take a matter of a seconds.
In addition to the SharePoint 2016 announcements, there were several announcements for hybrid scenarios:
  • There will be a wizard-like process for setting up and creating hybrid team sites, extranets, and search capabilities
  • Office Graph and Delve capabilities will be enabled for SharePoint on premises beginning with SharePoint 2013 later this year.
  • Microsoft is investing heavily in hybrid scenarios and we can expect to see much more coming in this area.
Windows 10 will be the last “version” of Windows. It will continue to receive small, incremental updates…similar to how other browsers are updated.
One consistent message has been that Office 365 is NOT well suited for traditional

branding customizations (custom mater pages and site definitions). Microsoft continues to take the stance that Office 365 should ONLY be customized through the app model and custom apps.

There still is no good forms story for SharePoint. There was no big announcement. The message remains…use out of the box and InfoPath forms for simple stuff. Use third party tools or custom development for more complex forms
OneDrive continues to play a huge role in the Microsoft ecosystem as they try to get enterprises to go to the cloud. Microsoft openly acknowledged that OneDrive for Business has had its share of issues. However, they have stated that improving OneDrive for Business is THE #1 PRIORITY for the SharePoint team.

This is by no means a comprehensive list. I encourage you to check out the session videos on Channel 9:

Thursday, July 24, 2014

Getting Values from SharePoint 2013 Property Bags

SharePoint 2013 has a hierarchical set of property bags. At each of the following levels in a SharePoint farm, one can store properties and their corresponding values:
  • Farm
  • Web Application
  • Site
  • Web
  • List
This can be extremely handy when writing code. For example, if you have four different environments (Development, QA, Staging, Production), you could store properties in each  environment's farm property bag that specifies things like connection strings, debugging constants, or host URLs.

It's even handier when you have a simple means to extract these properties from the property bag in your code. I generally make a class (FarmProperty in the example below) with a "Get" method that extracts the string value for the given property.

    public class FarmProperty
        public static string Get(string name)
            string value = null;
            SPSecurity.RunWithElevatedPrivileges(() =>
                var farm = SPFarm.Local;
                foreach (var prop in farm.Properties.Cast<DictionaryEntry>().Where(prop => prop.Key.Equals(name)))
                    value = prop.Value.ToString();
            return value;

To use this code, just call the Get method on the FarmProperty class. If the property doesn't exist, it will return null.

    var reportServerHost = FarmProperty.Get("ReportServerHost");

Wednesday, June 11, 2014

How to configure People Picker in SharePoint 2013 for a remote domain with a one-way trust

I came across a situation today that required use of the STSADM command on SharePoint 2013 (Yes, it still lives)...

If SharePoint is installed on a domain that has a one-way trust with other domains and you want the People Picker on SharePoint 2013 to show users and groups from those other domains, you have to use the STSADM command to configure the People Picker. Basically, the People Picker needs an identity that it can use to authenticate against the remote trusted domains to query them.

Step 1 

First, you have to set an encryption key on all web servers in your farm so that the stored credentials can be encrypted:

Just to be clear, you have to run this on all web servers in your farm and the "AnyKey" value has to be set to the same value on all of those servers.

STSADM.exe -o setapppassword -password AnyKey

where "AnyKey" is any value. For example,

STSADM.exe -o setapppassword -password B1gL0ngPassw0rd

Step 2

Next, you have to give SharePoint the credentials to authenticate against the remote domain and tell it which domain you would like to authenticate against. You only have to run this on one of your SharePoint web servers

STSADM.exe -o setproperty -propertyname peoplepicker-searchadforests -propertyvalue <Valid list of domains> -url <URL of the Web application>

where <Valid list of domains> is in the following format:


For example, a sample command might look like this:

STSADM.exe -o setproperty -propertyname peoplepicker-searchadforests -propertyvalue ",microsoft\UserX,Ne@tP@ssw0rd" -url

You can add more than one domain. Just delimit them with a semicolon and a space. For example:

STSADM.exe -o setproperty -propertyname peoplepicker-searchadforests -propertyvalue ",microsoft\UserX,Ne@tP@ssw0rd;,bing\UserY,L@meP@ssw0rd" -url

Other Notes

There are lots of other things you can do with the People Picker control. For example:
  • You can run a custom query to search active directory and only display those users or groups.
  • You can also tell the people picker control to restrict to users in the site collection.
  • You are not restricted to remote domains. You can run the same commands I showed above for forests.


There is actually good documentation on this here: