<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SHAREPOINT BUILDING BLOCKS</title>
	<atom:link href="http://www.benjaminathawes.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.benjaminathawes.com</link>
	<description>Unofficial blog by Benjamin Athawes</description>
	<lastBuildDate>Mon, 07 Mar 2016 09:29:51 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.4.24</generator>
	<item>
		<title>Solving site and document follow issues in SharePoint 2013 caused by security updates</title>
		<link>http://www.benjaminathawes.com/2016/01/15/solving-site-and-document-follow-issues-in-sharepoint-2013-caused-by-security-updates/</link>
		<comments>http://www.benjaminathawes.com/2016/01/15/solving-site-and-document-follow-issues-in-sharepoint-2013-caused-by-security-updates/#comments</comments>
		<pubDate>Fri, 15 Jan 2016 01:26:55 +0000</pubDate>
		<dc:creator><![CDATA[ben@bathawes.com]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.benjaminathawes.com/?p=549</guid>
		<description><![CDATA[Although I&#8217;ve performed my own testing to support the content of this blog post, all software updates should be regression tested in your specific environment before being deployed to production. No two farms are exactly alike! What&#8217;s the issue? Last year, a client of ours reported that they were unable to follow sites in SharePoint [&#8230;]]]></description>
				<content:encoded><![CDATA[<div>
<table style="background: #fbe5d5; border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 600px;" /></colgroup>
<tbody valign="top">
<tr>
<td style="padding: 5px; border: 1pt solid #a3a3a3;"><span style="color: #000000;">Although I&#8217;ve performed my own testing to support the content of this blog post, all software updates should be regression tested in your specific environment before being deployed to production. No two farms are exactly alike!</span></td>
</tr>
</tbody>
</table>
</div>
<p><span style="color: black;"><strong>What&#8217;s the issue?</strong><br />
</span></p>
<p><span style="color: black;">Last year, a client of ours reported that they were unable to follow sites in SharePoint 2013 following the installation of an August 2015 security update for Word Automation Services (KB3054858). The error message displayed was simply &#8220;Sorry, we couldn&#8217;t follow the site&#8221;. As it turns out, this regression also breaks SharePoint&#8217;s document follow functionality. This blog post identifies the security updates (plural) that cause this problem, and explains the options that are available to either avoid or resolve it.<br />
</span></p>
<p><span style="color: black;">If your farm is suffering from this problem, here are the error messages that you will see when attempting to follow SharePoint 2013 sites and documents:<br />
</span></p>
<p><img src="http://www.benjaminathawes.com/wp-content/uploads/2016/01/011516_1316_Solvingsite1.png" alt="" /><span style="color: black;"><br />
</span></p>
<p><img src="http://www.benjaminathawes.com/wp-content/uploads/2016/01/011516_1316_Solvingsite2.png" alt="" /><span style="color: black;"><br />
</span></p>
<p><span style="color: black;"><strong>Has this been &#8220;officially&#8221; recognised by Microsoft as a regression?</strong><br />
</span></p>
<p><span style="color: black;"><strong>No</strong>. However, the testing that I&#8217;ve carried out so far has convinced me that the public updates listed below are responsible for the problem, and that it is not environment-specific. Additionally, it looks as though <a href="https://social.technet.microsoft.com/Forums/en-US/010f774e-8416-4ef4-8f02-f7e592dd2083/sorry-we-couldnt-follow-the-document?forum=sharepointadmin"><span style="color: blue; text-decoration: underline;">a number of other folks have encountered this issue</span></a> at various times since August 2015, when the regression was first shipped in KB3054858. </span></p>
<p><span style="color: black;">Given that deploying these updates can cause a SharePoint Server 2013 farm to &#8220;return to a former or less developed state&#8221; (the Oxford Dictionaries definition), I&#8217;m going to describe this issue as a &#8220;regression&#8221;, albeit an unofficial one.</span></p>
<p><span style="color: black;"><strong>Does this affect me?</strong><br />
</span></p>
<p><span style="color: black;">This post is aimed at people that look after SharePoint 2013 farms that &#8211; for whatever reason &#8211; are a little behind in terms of SharePoint updates. If you&#8217;ve already deployed the October 2015 Public Update (<a href="https://support.microsoft.com/en-us/kb/3085567"><span style="color: blue; text-decoration: underline;">KB3085567</span></a>), or are on the August 2015 Cumulative Update (<a href="https://support.microsoft.com/en-gb/kb/3055009"><span style="color: blue; text-decoration: underline;">KB3055009</span></a>) or later then you shouldn&#8217;t be affected. You may of course be affected by other regressions, particularly if you have opted to install any recent cumulative updates. The August 2015 CU, for example, contains two known regressions that Todd Klindt reminds us about on his ever-useful SharePoint <a href="http://www.toddklindt.com/blog/Regressions/Home.aspx"><span style="color: blue; text-decoration: underline;">regressions page.</span></a> That particular CU is also particularly troublesome to install, sometimes requiring <a href="https://blogs.technet.microsoft.com/stefan_gossner/2015/08/10/august-2015-cu-for-sharepoint-2013-is-available-for-download/"><span style="color: blue; text-decoration: underline;">three attempts.</span></a><br />
</span></p>
<p><span style="color: black;">If you aren&#8217;t sure about the distinction between the different types of SharePoint update that I&#8217;ve mentioned above (I think you should be able to tell cumulative and public updates apart, for example), I&#8217;d recommend reading <a href="https://blogs.technet.microsoft.com/stefan_gossner/2013/03/21/common-question-what-is-the-difference-between-a-pu-a-cu-and-a-cod/"><span style="color: blue; text-decoration: underline;">this article</span></a> by Stefan Goßner, a Senior Escalation Engineer at Microsoft. Since public updates usually include SharePoint security fixes, I use the terms &#8220;security update&#8221; and &#8220;public update&#8221; (PU) interchangeably for the remainder of this article.<br />
</span></p>
<p><span style="color: black;"><strong>Are we definitely talking about the same issue?</strong><br />
</span></p>
<p><span style="color: black;">If you think that your farm might be suffering from the site and document follow issue that I&#8217;ve described, here is the ULS error that you should see when attempting to follow a site:<br />
</span></p>
<div>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 600px;" /></colgroup>
<tbody valign="top">
<tr>
<td style="padding: 5px; border: 1pt solid #a3a3a3;">Original error: System.MissingMethodException: Method not found: &#8216;System.String <span style="background-color: yellow;">Microsoft.Office.Server.UserProfiles.UserProfile.get_FollowPersonalSiteUrl()</span>&#8216;.</p>
<p>at Microsoft.Office.Server.UserProfiles.UserProfileServerStub.GetProperty(Object target, String propName, ProxyContext proxyContext)</p>
<p>at Microsoft.SharePoint.Client.ServerStub.GetPropertyWithMonitoredScope(Object target, String propertyName, ProxyContext proxyContext)</td>
</tr>
</tbody>
</table>
</div>
<p><span style="color: black;">I&#8217;ve highlighted the get_FollowPersonalSiteUrl() method because we&#8217;ll be revisiting that shortly.<br />
</span></p>
<p><a href="http://www.benjaminathawes.com/wp-content/uploads/2016/01/ULS-get_FollowPersonalSiteUrl-error.png"><img class="alignnone size-full wp-image-597" src="http://www.benjaminathawes.com/wp-content/uploads/2016/01/ULS-get_FollowPersonalSiteUrl-error.png" alt="ULS get_FollowPersonalSiteUrl() error" width="1167" height="387" srcset="//www.benjaminathawes.com/wp-content/uploads/2016/01/ULS-get_FollowPersonalSiteUrl-error-300x99.png 300w, //www.benjaminathawes.com/wp-content/uploads/2016/01/ULS-get_FollowPersonalSiteUrl-error-1024x340.png 1024w, //www.benjaminathawes.com/wp-content/uploads/2016/01/ULS-get_FollowPersonalSiteUrl-error-624x207.png 624w, //www.benjaminathawes.com/wp-content/uploads/2016/01/ULS-get_FollowPersonalSiteUrl-error.png 1167w" sizes="(max-width: 1167px) 100vw, 1167px" /></a></p>
<p><span style="color: black;"><strong>Microsoft&#8217;s investigation</strong><br />
</span></p>
<p><span style="color: black;">Our client uses SharePoint&#8217;s native social functionality extensively, so we decided to escalate the site and document follow issue to Microsoft in an effort to speed up the resolution. Microsoft Support provided the following statements and recommendations:<br />
</span></p>
<ul>
<li><span style="color: black;">The problem relates to a dependency between the Microsoft.Office.Server.<span style="text-decoration: underline;">UserProfiles</span>.dll and Microsoft.Office.Server.UserProfiles.<span style="text-decoration: underline;">ServerStub</span>.dll assemblies, which manifests itself when KB3054858 (released August 11, 2015) is installed without the August 2015 CU or later.<br />
</span></li>
<li><span style="color: black;">Although installing the August 2015 CU or later will resolve the issue, Microsoft recommended that we deploy the November 2015 CU (<a href="https://support.microsoft.com/en-us/kb/3101373"><span style="color: blue; text-decoration: underline;">KB3101373</span></a>). The precise reasons for that recommendation have not been disclosed to us yet.<br />
</span></li>
</ul>
<p><span style="color: black;">Having considered the known regression that the November 2015 CU contains (it <a href="http://www.toddklindt.com/blog/Regressions/sp2013Nov2015CU.aspx"><span style="color: blue; text-decoration: underline;">breaks outbound search federation</span></a>), our client decided to proceed with Microsoft&#8217;s suggested course of action. Installing the <span style="color: #000000;">November 2015 CU</span> *does* resolve the site and document follow issue. But that&#8217;s not the whole story.<br />
</span></p>
<p><span style="color: black;"><strong>My follow-up</strong><br />
</span></p>
<p><span style="color: black;">Since deploying this fix, I&#8217;ve had some time to perform my own testing to help determine which specific updates contain the site and document follow regression. My intention was not to second-guess Microsoft&#8217;s recommendation, but I did want to clearly understand the root cause of the problem in order to ensure that I can provide folks with the right advice. In doing so, I&#8217;ve concluded that at least <strong>four</strong> separate security updates released between August and November 2015 can cause the regression, and that deploying the November 2015 CU is *not* the only way to fix it. Feel free to skip the end of this post if you simply want to see the list of affected updates. If you&#8217;d like to see the &#8220;evidence&#8221; that backs my assertions, read on.<br />
</span></p>
<p><span style="color: black;">I started my testing by configuring a local single-server lab environment in an attempt to re-create the issue (I figured that even my mediocre PowerShell skills could manage that). I installed SharePoint Server 2013 with Service Pack 1, then installed all security updates for SharePoint up to and <em>including</em> the August 2015 <span style="text-decoration: underline;">P</span>U (KB3054858). The site and document follow issues described by my client <strong>immediately</strong> reared their ugly head. Keep in mind that my lab is sat on my home machine, and is completely isolated from the client&#8217;s infrastructure.<br />
</span></p>
<p><span style="color: black;">I decided to fire up .NET Reflector and dig a little deeper. Having analysed dependencies within Microsoft.Office.Server.UserProfiles.<span style="text-decoration: underline;">ServerStub</span>.dll (the file mentioned in the ULS entry), it appeared clear that the version of this assembly that ships with KB3054858 relies on a method that was absent in my lab farm&#8217;s version of Microsoft.Office.Server.<span style="text-decoration: underline;">UserProfiles</span>.dll:<br />
</span></p>
<p><a href="http://www.benjaminathawes.com/wp-content/uploads/2016/01/Missing-get_FollowPersonalSiteUrl-method.png"><img class="alignnone size-full wp-image-598" src="http://www.benjaminathawes.com/wp-content/uploads/2016/01/Missing-get_FollowPersonalSiteUrl-method.png" alt="Missing get_FollowPersonalSiteUrl() method" width="1416" height="831" srcset="//www.benjaminathawes.com/wp-content/uploads/2016/01/Missing-get_FollowPersonalSiteUrl-method-300x176.png 300w, //www.benjaminathawes.com/wp-content/uploads/2016/01/Missing-get_FollowPersonalSiteUrl-method-1024x601.png 1024w, //www.benjaminathawes.com/wp-content/uploads/2016/01/Missing-get_FollowPersonalSiteUrl-method-624x366.png 624w, //www.benjaminathawes.com/wp-content/uploads/2016/01/Missing-get_FollowPersonalSiteUrl-method.png 1416w" sizes="(max-width: 1416px) 100vw, 1416px" /></a></p>
<p><span style="color: black;">In contrast, the get_FollowPersonalSiteUrl() method was alive and kicking after I upgraded my lab farm to the August 2015 <span style="text-decoration: underline;">C</span>U, and I was once again able to follow sites and documents. All this is expected behaviour based on the Microsoft Support statements included earlier.<br />
</span></p>
<p><img src="http://www.benjaminathawes.com/wp-content/uploads/2016/01/011516_1316_Solvingsite5.png" alt="" /><span style="color: black;"><br />
</span></p>
<p><span style="color: black;">I was now keen to understand which SharePoint 2013 updates included the two DLLs in question. Through liberal usage of Hyper-V checkpoints and reflector, I found that:<br />
</span></p>
<ul>
<li><span style="color: black;">Microsoft.Office.Server.UserProfiles.<span style="text-decoration: underline;">ServerStub</span>.dll hasn&#8217;t changed since August 2015, and ALL SharePoint Server 2013 updates (cumulative and public) include it<br />
</span></li>
<li><span style="color: black;">The &#8220;missing&#8221; get_FollowPersonalSiteUrl() method was added to Microsoft.Office.Server.<span style="text-decoration: underline;">UserProfiles</span>.dll in the August 2015 <span style="text-decoration: underline;">C</span>U<br />
</span></li>
<li><span style="color: black;">All *cumulative* updates released since August 2015 contain Microsoft.Office.Server.<span style="text-decoration: underline;">UserProfiles</span>.dll and therefore the &#8220;missing&#8221; method<br />
</span></li>
<li><span style="color: black;">However, the <strong>October 2015 <span style="text-decoration: underline;">P</span>U</strong> is the ONLY *public* update released since August 2015 that contains Microsoft.Office.Server.<span style="text-decoration: underline;">UserProfiles</span>.dll and therefore the &#8220;missing&#8221; method<br />
</span></li>
</ul>
<p><span style="color: black;">To help clarify the version history of these assemblies, I&#8217;ve pulled together a list of all cumulative and public updates that have been released for SharePoint <span style="text-decoration: underline;">Server</span> 2013 since August 2015. Note that I have excluded SharePoint <span style="text-decoration: underline;">Foundation</span> 2013 updates, as those do not appear to include the two assemblies in question (most likely because the User Profile Service Application doesn&#8217;t ship with the Foundation SKU):<br />
</span></p>
<p><span style="color: black;"><span style="text-decoration: underline;">SharePoint Server 2013 updates released since August that include the Microsoft.Office.Server.UserProfiles.dll assembly</span><br />
</span></p>
<div>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 64px;" />
<col style="width: 456px;" /></colgroup>
<tbody valign="top">
<tr>
<td style="background: #a8d08d; padding: 5px; border: 0.5pt solid currentColor;"></td>
<td style="border-width: 0.5pt 0.5pt 0.5pt medium; border-style: solid solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">Public Update that includes Microsoft.Office.Server.<span style="text-decoration: underline;">UserProfiles</span>.dll</span></td>
</tr>
<tr>
<td style="background: #d9d9d9; border-width: medium 0.5pt 0.5pt; border-style: none solid solid; border-color: currentColor; padding: 5px;"><span style="color: #000000;"> </span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">Cumulative Update that includes Microsoft.Office.Server.<span style="text-decoration: underline;">UserProfiles</span>.dll</span></td>
</tr>
<tr>
<td style="background: #f1937a; border-width: medium 0.5pt 0.5pt; border-style: none solid solid; border-color: currentColor; padding: 5px;"><span style="color: #000000;"> </span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">Update that does NOT include Microsoft.Office.Server.<span style="text-decoration: underline;">UserProfiles</span>.dll</span></td>
</tr>
</tbody>
</table>
</div>
<div>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 108px;" />
<col style="width: 64px;" />
<col style="width: 103px;" />
<col style="width: 108px;" />
<col style="width: 180px;" /></colgroup>
<tbody valign="top">
<tr>
<td style="padding: 5px; border: 0.5pt solid currentColor;"><span style="color: #000000;"><strong>KB</strong></span></td>
<td style="border-width: 0.5pt 0.5pt 0.5pt medium; border-style: solid solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;"><strong>Type</strong></span></td>
<td style="border-width: 0.5pt 0.5pt 0.5pt medium; border-style: solid solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;"><strong>Release Date</strong></span></td>
<td style="border-width: 0.5pt 0.5pt 0.5pt medium; border-style: solid solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;"><strong>UserProfiles.dll version</strong></span></td>
<td style="border-width: 0.5pt 0.5pt 0.5pt medium; border-style: solid solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;"><strong>UserProfiles.ServerStub.dll<br />
</strong></span><span style="color: #000000;"><strong>version</strong></span></td>
</tr>
<tr style="background: #f1937a;">
<td style="border-width: medium 0.5pt 0.5pt; border-style: none solid solid; border-color: currentColor; padding: 5px;"><span style="color: #000000;">KB3054858</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">PU</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">August 11, 2015</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">&#8211;</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">15.0.4745.1000</span></td>
</tr>
<tr style="background: #d9d9d9;">
<td style="border-width: medium 0.5pt 0.5pt; border-style: none solid solid; border-color: currentColor; padding: 5px;"><span style="color: #000000;">KB3055009</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">CU</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">August 11, 2015</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">15.0.4745.1000</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">15.0.4745.1000</span></td>
</tr>
<tr style="background: #f1937a;">
<td style="border-width: medium 0.5pt 0.5pt; border-style: none solid solid; border-color: currentColor; padding: 5px;"><span style="color: #000000;">KB3054813</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">PU</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">September 8, 2015</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">&#8211;</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">15.0.4745.1000</span></td>
</tr>
<tr style="background: #d9d9d9;">
<td style="border-width: medium 0.5pt 0.5pt; border-style: none solid solid; border-color: currentColor; padding: 5px;"><span style="color: #000000;">KB2986213</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">CU</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">September 17, 2015</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">15.0.4749.1000</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">15.0.4745.1000</span></td>
</tr>
<tr style="background: #a8d08d;">
<td style="border-width: medium 0.5pt 0.5pt; border-style: none solid solid; border-color: currentColor; padding: 5px;"><span style="color: #0000ff;"><a style="color: #0000ff;" href="https://support.microsoft.com/en-us/kb/3085567"><span style="text-decoration: underline;">KB3085567</span></a></span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">PU</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">October 13, 2015</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">15.0.4757.1000</span><br />
<span style="color: #000000;"> </span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">15.0.4745.1000</span></td>
</tr>
<tr style="background: #d9d9d9;">
<td style="border-width: medium 0.5pt 0.5pt; border-style: none solid solid; border-color: currentColor; padding: 5px;"><span style="color: #000000;">KB3085492</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">CU</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">October 13, 2015</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">15.0.4757.1000</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">15.0.4745.1000</span></td>
</tr>
<tr style="background: #f1937a;">
<td style="border-width: medium 0.5pt 0.5pt; border-style: none solid solid; border-color: currentColor; padding: 5px;"><span style="color: #000000;">KB3085477</span><br />
<span style="color: #000000;">(replaces KB3054858)</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">PU</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">November 10, 2015</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">&#8211;</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">15.0.4745.1000</span></td>
</tr>
<tr style="background: #f1937a;">
<td style="border-width: medium 0.5pt 0.5pt; border-style: none solid solid; border-color: currentColor; padding: 5px;"><span style="color: #000000;">KB3101364</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">PU</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">November 10, 2015</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">&#8211;</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">15.0.4745.1000</span></td>
</tr>
<tr style="background: #d9d9d9;">
<td style="border-width: medium 0.5pt 0.5pt; border-style: none solid solid; border-color: currentColor; padding: 5px;"><span style="color: #000000;">KB3101373</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">CU</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">November 10, 2015</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">15.0.4771.1000</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">15.0.4745.1000</span></td>
</tr>
<tr style="background: #d9d9d9;">
<td style="border-width: medium 0.5pt 0.5pt; border-style: none solid solid; border-color: currentColor; padding: 5px;"><span style="color: #000000;">KB3114345</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">CU</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">December 8, 2015</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">15.0.4779.1000</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">15.0.4745.1000</span></td>
</tr>
<tr style="background: #d9d9d9;">
<td style="border-width: medium 0.5pt 0.5pt; border-style: none solid solid; border-color: currentColor; padding: 5px;"><span style="color: #000000;">KB3114497</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">CU</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">January 12, 2016</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">15.0.4787.1000</span></td>
<td style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentColor; padding: 5px;"><span style="color: #000000;">15.0.4745.1000</span></td>
</tr>
</tbody>
</table>
</div>
<p><span style="color: black;">Note that this list my not be exhaustive – the security updates were mostly identified by reviewing the list available within Windows Update. Please let me know if I&#8217;ve missed off a SharePoint <span style="text-decoration: underline;">Server</span> 2013 update that shipped between August 2015 and January 2016.<br />
</span></p>
<p><span style="color: black;">Having identified that the October 2015 <span style="text-decoration: underline;">P</span>U is the only public update released since August 2015 that contains Microsoft.Office.Server.<span style="text-decoration: underline;">UserProfiles</span>.dll, I was keen to understand whether that update alone would &#8220;fix&#8221; the site and document follow regression <em>without</em> having to install a cumulative update. Keep in mind that <a href="https://blogs.technet.microsoft.com/stefan_gossner/2013/03/21/common-question-what-is-the-difference-between-a-pu-a-cu-and-a-cod/"><span style="color: blue; text-decoration: underline;">Microsoft categorise cumulative updates as hotfixes</span></a> that <strong>should only be installed if they resolve specific problems</strong>, whereas security updates should be tested and deployed as soon as possible.<br />
</span></p>
<p><span style="color: black;">I rolled back my lab environment to its original &#8220;regressed&#8221; state (SharePoint Server 2013 with Service Pack 1 + all security updates up to and <em>including</em> the August <span style="text-decoration: underline;">P</span>U), and confirmed that I got the &#8220;Sorry, we couldn&#8217;t follow the site&#8221; error. Once again using Hyper-V checkpoints, I ran through a number of different scenarios to help confirm that the October 2015 <span style="text-decoration: underline;">P</span>U irons out the site and document follow regression:<br />
</span></p>
<ol>
<li><span style="color: black;">I installed the October PU (KB3085567) alone, with no other additional updates. Site and document follow functionality was <span style="color: #00b050;">fixed <span style="color: black;">as I had anticipated.<br />
</span></span></span></li>
<li><span style="color: black;">I rolled back to the August PU (<span style="color: #000000;">KB3054858</span>), and installed ALL outstanding SharePoint 2013 security updates up to and including January 2016. Given that the October PU was included, site and document follow functionality was <span style="color: #00b050;">fixed.<span style="color: black;"><br />
</span></span></span></li>
<li><span style="color: black;">I once again rolled back to the <span style="color: #000000;">August PU</span><span style="color: #000000;">,</span> and installed all outstanding SharePoint 2013 security updates <span style="color: #000000;">up to <span style="color: #000000;">and including </span>January 2016</span> EXCEPT the October 2015 PU. This time, site and document follow functionality remained <span style="color: red;">broken<span style="color: black;">.<br />
</span></span></span></li>
</ol>
<p><span style="color: black;">Although clearly not exhaustive, these tests give me a level of confidence that installing the October 2015 PU is one (perhaps the only) way of fixing &#8211; or avoiding &#8211; the regression described here short of deploying a cumulative update. With this information in-hand, my default approach to resolving this problem is to simply <strong>test and install all outstanding security updates </strong><strong>for SharePoint</strong> as a first port of call.<br />
</span></p>
<p><span style="color: black;">In contrast &#8211; with limited time available to thoroughly investigate the root cause &#8211; we followed Microsoft&#8217;s recommendation to install the November 2015 <span style="text-decoration: underline;">C</span>U for our client due to a pressing need to restore SharePoint&#8217;s follow functionality. I now plan to point Microsoft Support at this post in order to help understand whether the October <span style="text-decoration: underline;">P</span>U would also have been a viable option, and will post an update if I receive any further clarification.<br />
</span></p>
<p><span style="color: black;">If you decide to go ahead with the <a href="https://support.microsoft.com/en-us/kb/3085567"><span style="color: blue; text-decoration: underline;">October 2015 PU (KB3085567)</span></a>, it should be available for download via Windows Update if you&#8217;ve opted in to receive non-OS updates. Security updates for SharePoint 2013 sit within the &#8220;Office 2013&#8221; category and look like this if you happen to be installing them via Windows Update (remember to opt in to non-OS updates):<br />
</span></p>
<p><img src="http://www.benjaminathawes.com/wp-content/uploads/2016/01/011516_1316_Solvingsite6.png" alt="" /><span style="color: black;"><br />
</span></p>
<p><span style="color: black;">One should of course be testing and installing <em>all</em> security updates, but this specific PU resolves the follow regression described in this post. Remember to test all this in your environment first, and please stop by to let me know how you get on!<br />
</span></p>
<p><span style="color: black;"><strong>Q&amp;A</strong><br />
</span></p>
<p><span style="color: black;"><strong>Should I just install all available security updates rather than the specific update that you&#8217;ve mentioned?</strong><br />
</span></p>
<p><span style="color: black;">Yes, I suggest you test and deploy all security updates. Make sure, however, that KB3085567 is included if you&#8217;ve run into the site and document follow issue.<br />
</span></p>
<p><span style="color: black;"><strong>Which updates can cause the site and document follow regression?</strong><br />
</span></p>
<p><span style="color: black;">The security updates highlighted in red in the table will cause the site and document follow issue described here *if* they are installed without the October 2015 <span style="text-decoration: underline;">P</span>U, or the August 2015 <span style="text-decoration: underline;">C</span>U or later.<br />
</span></p>
<p><span style="color: black;"><strong>So do I need to install any cumulative updates?</strong><br />
</span></p>
<p><span style="color: black;">As far as I can tell, no CUs are required to fix the site and document follow issue.<br />
</span></p>
<p><span style="color: black;"><strong>Why would anyone run into this problem now, given that one can simply &#8220;install all security updates&#8221; to avoid it?</strong><br />
</span></p>
<p><span style="color: black;">I don&#8217;t expect that many farms will suffer from this regression given that the October 2015 PU includes the goodies required to avoid it. However, considering that patching SharePoint can be very time consuming, I anticipate some folks might run into this if they are behind on patching and need to deploy a subset of the outstanding security updates for SharePoint (perhaps to minimise an outage window).<br />
</span></p>
<p><span style="color: black;"><strong>Should I run PSConfig after installing security updates?</strong><br />
</span></p>
<p><span style="color: black;">Yes &#8211; see <a href="https://blogs.technet.microsoft.com/stefan_gossner/2015/09/09/why-we-recommend-require-to-run-the-configuration-wizard-also-for-security-fixes/"><span style="color: blue; text-decoration: underline;">why [Microsoft] recommend / require to run the Configuration Wizard also for Security fixes</span></a><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.benjaminathawes.com/2016/01/15/solving-site-and-document-follow-issues-in-sharepoint-2013-caused-by-security-updates/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The SharePoint Cloud Search Service Application &#8211; initial thoughts</title>
		<link>http://www.benjaminathawes.com/2015/06/15/the-sharepoint-cloud-search-service-application-initial-thoughts/</link>
		<pubDate>Mon, 15 Jun 2015 10:07:19 +0000</pubDate>
		<dc:creator><![CDATA[ben@bathawes.com]]></dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[SharePoint 2013]]></category>
		<category><![CDATA[SharePoint 2016]]></category>

		<guid isPermaLink="false">http://www.benjaminathawes.com/?p=538</guid>
		<description><![CDATA[In May, I was lucky enough to attend Microsoft&#8217;s Ignite 2015 conference in Chicago along with a handful of other Content and Code colleagues. A stand-out session for me unveiled the forthcoming SharePoint Cloud Search Service Application, which &#8211; among other enhancements &#8211; will finally deliver a consolidated on-premises and cloud Search Index, that lives in SharePoint Online. The [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>In May, I was lucky enough to attend Microsoft&#8217;s Ignite 2015 conference in Chicago along with a handful of other Content and Code colleagues. A stand-out session for me unveiled the forthcoming SharePoint Cloud Search Service Application, which &#8211; among other enhancements &#8211; will finally deliver a <strong>consolidated on-premises and cloud Search Index, that lives in SharePoint Online</strong>. The news that this thing will be available for both <strong>SharePoint Server 2013 and 2016 </strong>was particularly interesting.</p>
<p>You can read more over on the Content and Code blog, in a post titled <a href="https://www.contentandcode.com/blog-post/why-we-care-about-the-sharepoint-cloud-search-service-application/">why we care about the SharePoint Cloud Search Service Application</a>.</p>
]]></content:encoded>
			</item>
		<item>
		<title>Introduction to Basic and HA SharePoint Server Farms in Microsoft Azure IaaS</title>
		<link>http://www.benjaminathawes.com/2014/07/20/introduction-to-basic-and-h-sharepoint-server-farms-in-microsoft-azure-iaas/</link>
		<comments>http://www.benjaminathawes.com/2014/07/20/introduction-to-basic-and-h-sharepoint-server-farms-in-microsoft-azure-iaas/#comments</comments>
		<pubDate>Sun, 20 Jul 2014 15:18:41 +0000</pubDate>
		<dc:creator><![CDATA[ben@bathawes.com]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.benjaminathawes.com/?p=500</guid>
		<description><![CDATA[Too long, didn&#8217;t read (TLDR) summary The Azure SharePoint Server Farm application template appears to be targeted at development and testing scenarios. You get two topology options: a &#8220;basic&#8221; farm (3 VMs, no HA) and a &#8220;high-availability&#8221; farm (9 VMs). The HA option costs about twice as much per month. It cost me about £10 [&#8230;]]]></description>
				<content:encoded><![CDATA[<div>
<table style="border-collapse: collapse; background: #0072c6;" border="0">
<colgroup>
<col style="width: 600px;" /></colgroup>
<tbody valign="top">
<tr>
<td style="border: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: white;"><span style="text-decoration: underline;"><strong>Too long, didn&#8217;t read (TLDR) summary</strong></span><br />
</span></p>
<ul style="color: #ffffff;">
<li><span style="color: #ffffff;">The Azure SharePoint Server Farm application template appears to be targeted at development and testing scenarios.</span></li>
<li><span style="color: #ffffff;">You get two topology options: a &#8220;basic&#8221; farm (3 VMs, no HA) and a &#8220;high-availability&#8221; farm (9 VMs). The HA option costs about twice as much per month.</span></li>
<li><span style="color: #ffffff;">It cost me about £10 to &#8220;spin-up&#8221;, then de-allocate an Azure SharePoint Server Farm, but your mileage may vary.</span></li>
<li><span style="color: #ffffff;">I&#8217;ve uploaded a <span style="text-decoration: underline;"><a href="http://www.benjaminathawes.com/wp-content/uploads/2014/07/SPSFarmReport-HAAzureSharePointFarm1.zip"><span style="color: #ffffff; text-decoration: underline;">SPSFarmReport </span></a></span>of a vanilla &#8220;high-availability&#8221; Azure SharePoint Farm for you to peruse at your leisure.</span></li>
</ul>
</td>
</tr>
</tbody>
</table>
</div>
<p><span style="color: black;">On 9th July 2014, Microsoft published an article titled <a href="http://azure.microsoft.com/blog/2014/07/09/azure-rapid-innovation/"><span style="color: blue; text-decoration: underline;">Microsoft Azure Continues to Deliver Rapid Innovation in the Cloud</span></a> . Amongst other announcements, that article introduced the idea of templates within Azure Infrastructure as a Service (<a href="http://en.wikipedia.org/wiki/Infrastructure_as_a_service"><span style="color: blue; text-decoration: underline;">IaaS</span></a>) for multi-machine/tier applications such as SharePoint:<br />
</span></p>
<p style="margin-left: 27pt;"><span style="color: black;"><em>&#8220;Create, deploy, monitor and manage rich virtual machines&#8217; based applications, and manage virtual networks within a fully customizable Portal experience. In addition to creating simple virtual machines, we are adding the ability to <strong>automate the deployment of rich multi-machine application templates with a few clicks</strong>. With this, <strong>deploying a multi-tier, highly-available SharePoint farm from the portal will be a few clicks away!&#8221;</strong></em><br />
</span></p>
<p><span style="color: black;">Sure enough, a quick trip over to the <a href="https://portal.azure.com/"><span style="color: blue; text-decoration: underline;">Azure Preview Portal</span></a> confirmed that this functionality is available within the gallery (for me at least):<br />
</span></p>
<p><img src="http://www.benjaminathawes.com/wp-content/uploads/2014/07/072014_1518_Introductio1.png" alt="" /><span style="color: black;"><br />
</span></p>
<p><span style="color: black;">In this blog, I briefly note down my thoughts on how this offering has been positioned, then go on to discuss what you get, and some of the main assumptions that Microsoft have made when putting these templates together. Note that I have no &#8220;inside&#8221; information &#8211; everything here is inferred from the Azure Preview Portal, and inspection of the VMs that are provisioned when creating an Azure &#8220;SharePoint Server Farm&#8221;.<br />
</span></p>
<p><span style="color: black;"><span style="text-decoration: underline;"><strong>When might we deploy an Azure &#8220;SharePoint Server Farm&#8221;?</strong></span><br />
</span></p>
<p><span style="color: black;">Looking at the screenshot above of the Azure Preview Portal, it isn&#8217;t obvious whether the Azure SharePoint Server Farm is intended for development, testing, production or all of the above. The <a href="http://azure.microsoft.com/en-us/documentation/articles/virtual-machines-sharepoint-farm-azure-preview/"><span style="color: blue; text-decoration: underline;">Azure SharePoint Server Farm</span></a> article is clearer, as it differentiates between a &#8220;basic&#8221; farm (three VMs, no HA) and a &#8220;high-availability&#8221; farm (nine VMs with HA), and briefly notes their intended purpose (emphasis added):<br />
</span></p>
<ul>
<li><span style="color: black;"><em>&#8220;You can use this [<strong>basic</strong>] farm configuration for a simplified setup for SharePoint app <strong>development</strong> or your first-time <strong>evaluation</strong> of SharePoint 2013.&#8221;</em><br />
</span></li>
<li><span style="color: black;"><em>&#8220;You can use this [<strong>high-availability</strong>] farm configuration to <strong>test</strong> higher client loads, high-availability of the external SharePoint site, and SQL Server AlwaysOn for a SharePoint farm. You can also use this configuration for SharePoint app <strong>development</strong> in a highly available environment.&#8221;</em><br />
</span></li>
</ul>
<p><span style="color: black;">As you can see, it appears that an Azure SharePoint Server Farm is intended for development, test and evaluation purposes. There is no mention of production workloads, and I speak to some of the possible reasons for that below.<br />
</span></p>
<p><span style="color: black;"><span style="text-decoration: underline;"><strong>What do I get?</strong></span><br />
</span></p>
<p><span style="color: black;">By clicking the &#8220;Create&#8221; button in the Azure Preview Portal, you will either create a &#8220;basic&#8221; or &#8220;high-availability&#8221; SharePoint Server 2013 farm. The topologies of those farms are shown below:<br />
</span></p>
<p><span style="color: black;"><span style="text-decoration: underline;">&#8220;Basic&#8221; Azure SharePoint Server Farm (3 VMs, no high-availability), from the <a href="http://azure.microsoft.com/en-us/documentation/articles/virtual-machines-sharepoint-farm-azure-preview/"><span style="color: blue;">Microsoft Azure site</span></a></span><br />
</span></p>
<p><img src="http://www.benjaminathawes.com/wp-content/uploads/2014/07/072014_1518_Introductio2.png" alt="" /><span style="color: black;"><br />
</span></p>
<p><span style="color: black;"><span style="text-decoration: underline;">&#8220;High-availability&#8221; Azure SharePoint Server Farm (9 VMs, including a SQL Server 2014 AlwaysOn availability group), from the <a href="http://azure.microsoft.com/en-us/documentation/articles/virtual-machines-sharepoint-farm-azure-preview/"><span style="color: blue;">Microsoft Azure site</span></a></span><br />
</span></p>
<p><img src="http://www.benjaminathawes.com/wp-content/uploads/2014/07/072014_1518_Introductio3.png" alt="" /><span style="color: black;"><br />
</span></p>
<p><span style="color: black;">Clearly there are a ton of configuration options <em>within</em> each VM that are not spoken to above. Here are some of the key design choices that I noted whilst perusing my Azure SharePoint Server farm:<br />
</span></p>
<ul>
<li><span style="color: black;">A <strong>new forest and root domain</strong> are created along with your Azure SharePoint Server farm. If you already have existing AD DS infrastructure in Azure IaaS, there does not appear to be a way of installing SharePoint within that infrastructure.<br />
</span></li>
<li><span style="color: black;">A <strong>SQL Server 2014 AlwaysOn availability group</strong> is created automatically. This requires SQL Server 2014 Enterprise Edition, which isn&#8217;t cheap (as reflected in the VM costs shown below).<br />
</span></li>
<li>
<div><span style="color: black;">The following choices were made regarding SharePoint Server 2013:<br />
</span></div>
<ul>
<li><span style="color: black;"><strong>SharePoint Server 2013 Service Pack 1</strong> is installed (build 15.0.4569.1000).<br />
</span></li>
<li>
<div><span style="color: black;">A single content-serving Web Application is created, with a single root <strong>path-based Site Collection</strong>. This does not align with <a href="http://technet.microsoft.com/en-us/library/cc424952(v=office.15).aspx"><span style="color: blue; text-decoration: underline;">Microsoft&#8217;s recommendation to use host-named Site Collections</span></a> for new SharePoint 2013 environments.<br />
</span></div>
<ul>
<li><span style="color: black;">Interestingly, <strong>port 80 is open within the Windows Firewall</strong>, exposing this Web Application to the Internet. We would typically expose SharePoint to the Internet using a reverse proxy server such as the <a href="http://technet.microsoft.com/en-us/library/dn584113.aspx"><span style="color: blue; text-decoration: underline;">Windows Server 2012 R2 Web Application Proxy</span></a>, and ensure that all Web Applications are SSL-secured for security reasons.<br />
</span></li>
</ul>
</li>
<li><span style="color: black;"><strong>No Service Applications are provisioned</strong> aside from those that are created automatically when creating a new farm (the Security Token Service and Application Topology Service).<br />
</span></li>
<li><span style="color: black;"><strong>Only the Setup and Farm Accounts are provisioned. </strong>In production, it is unlikely that those accounts would be sufficient, assuming that Microsoft&#8217;s <a href="http://technet.microsoft.com/en-us/library/cc263445(v=office.15).aspx"><span style="color: blue; text-decoration: underline;">best practices related to least-privilege configuration</span></a> are followed.<br />
</span></li>
<li><span style="color: black;"><strong>All SharePoint VMs host an instance of the Distributed Cache Service</strong>. Some Microsoft staff (including <a href="http://blogs.technet.com/b/speschka/archive/2013/08/29/dedicating-servers-to-distributed-cache-in-sharepoint-2013.aspx"><span style="color: blue; text-decoration: underline;">Steve Peschka</span></a>) recommend dedicated Distributed Cache servers for performance and stability reasons.<br />
</span></li>
</ul>
</li>
<li><span style="color: black;">The default pricing tier/specifications SQL Server and SharePoint VMs <strong>do not meet Microsoft&#8217;s minimum <a href="http://technet.microsoft.com/en-us/library/cc262485(v=office.15).aspx"><span style="color: blue; text-decoration: underline;">hardware and software requirements for SharePoint 2013</span></a></strong>. For example, Web and Application servers require 12 GB RAM and 4 CPU cores per server, and the default pricing tier selected for those VMs (A2 Standard) provides 3.5 GB RAM and 2 cores. I expect the default specifications for Azure SharePoint Server Farm VMs to be insufficient per SharePoint 2013 Service Application resource requirements, even if those VMs are intended for development or testing purposes.<br />
</span></li>
</ul>
<p><span style="color: black;">These design points underline the idea that an Azure SharePoint Server Farm is a <strong>starting point for development and testing</strong>. We still need to apply additional effort to get these guys into a state that is ready for anything but the most basic SharePoint development. Today, that effort would most likely take the form of applying a PowerShell script to automate &#8220;remaining&#8221; Service Application, Web Application and systems configuration in order to produce a farm that is aligned with the production environment(s) that it supports.<br />
</span></p>
<p><span style="color: black;">It&#8217;s worth noting that if an Azure SharePoint Server Farm <em>were</em> intended for production usage, the act of creating it via the Azure Preview Portal does not remove the need to <a href="http://technet.microsoft.com/en-us/library/cc261834(v=office.15).aspx"><span style="color: blue; text-decoration: underline;">plan and design</span></a>. Once we arrive at a design, it is likely that we would choose the &#8220;high-availability&#8221; option for production as a starting point, then add or remove VMs to meet our requirements. Identity integration would be a key design consideration given that &#8220;Azure SharePoint Server Farms&#8221; come with a dedicated Active Directory Forest (essentially a <a href="http://technet.microsoft.com/en-us/library/cc737263(v=ws.10).aspx"><span style="color: blue; text-decoration: underline;">Resource Forest</span></a>). Taking all of this into account, I question how much time we would save by using the Azure SharePoint Server Farm template in production, and can see why the feature is marketed as a development/test capability.<br />
</span></p>
<p><span style="color: black;"><strong><span style="text-decoration: underline;">How much is it?</span></strong></span></p>
<p><span style="color: black;">It&#8217;s always challenging to talk about pricing in a blog post, as Microsoft licensing agreements differ from customer to customer. What I will do is put together a quick &#8220;back of the napkin&#8221; price list so that you can see the relative cost of the &#8220;basic&#8221; and &#8220;high-availability&#8221; Azure SharePoint Server Farm options. Note that these are list prices, and I only list the <strong>default pricing tier costs</strong> mentioned on the Azure Preview Portal. Additional licensing costs (such as those required for SharePoint) are likely to apply, and an MSDN subscription may make this more affordable, as <a href="http://azure.microsoft.com/en-us/documentation/articles/virtual-machines-sharepoint-farm-config-azure-preview/"><span style="color: blue; text-decoration: underline;">recently noted by a Microsoft employee</span></a>. I&#8217;m no licensing expert, so please check with your licensing reseller before committing to anything.<br />
</span></p>
<p><span style="color: black;"><span style="text-decoration: underline;">List prices for &#8220;basic&#8221; Azure SharePoint Server Farm (default pricing tiers on <span style="text-decoration: underline;"><span style="color: #000000;">pay-as-you-go</span></span>) on July 20th, 2014</span><br />
</span></p>
<div>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 129px;" />
<col style="width: 73px;" />
<col style="width: 133px;" />
<col style="width: 99px;" /></colgroup>
<tbody valign="top">
<tr style="background: #0072c6;">
<td style="border: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: white;"><strong>VM role</strong></span></td>
<td style="border-top: solid #a3a3a3 1.0pt; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: white;"><strong>Quantity</strong></span></td>
<td style="border-top: solid #a3a3a3 1.0pt; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: white;"><strong>Default pricing tier</strong></span></td>
<td style="border-top: solid #a3a3a3 1.0pt; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: white;"><strong>Monthly cost</strong></span></td>
</tr>
<tr>
<td style="border-top: none; border-left: solid #a3a3a3 1.0pt; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">Domain Controller</span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">1</span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">A1 Standard</span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">42.61</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: solid #a3a3a3 1.0pt; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">SQL Server</span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">1</span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">A5 Standard</span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">2130.67</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: solid #a3a3a3 1.0pt; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">SharePoint</span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">1</span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">A2 Standard</span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">85.23</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: solid #a3a3a3 1.0pt; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;"> </span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;"> </span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;"> </span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;"><strong>£ 2258.51</strong></span></td>
</tr>
</tbody>
</table>
</div>
<p><span style="color: black;"><span style="text-decoration: underline;">List prices for &#8220;high-availability&#8221; Azure SharePoint Server Farm (default pricing tiers on <span style="text-decoration: underline;"><span style="color: #000000;">pay-as-you-go</span></span>) <span style="text-decoration: underline;"><span style="color: #000000;">on July 20th, 2014</span></span></span><br />
</span></p>
<div>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 235px;" />
<col style="width: 73px;" />
<col style="width: 133px;" />
<col style="width: 99px;" /></colgroup>
<tbody valign="top">
<tr style="background: #0072c6;">
<td style="border: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: white;"><strong>VM role</strong></span></td>
<td style="border-top: solid #a3a3a3 1.0pt; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: white;"><strong>Quantity</strong></span></td>
<td style="border-top: solid #a3a3a3 1.0pt; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: white;"><strong>Default pricing tier</strong></span></td>
<td style="border-top: solid #a3a3a3 1.0pt; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: white;"><strong>Monthly cost</strong></span></td>
</tr>
<tr>
<td style="border-top: none; border-left: solid #a3a3a3 1.0pt; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">Domain Controller</span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">2</span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">A1 Standard</span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">85.22</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: solid #a3a3a3 1.0pt; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">SQL Server</span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">2</span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">A5 Standard</span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">4261.34</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: solid #a3a3a3 1.0pt; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">SQL Server File Share Witness (FSW)</span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">1</span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">Basic A0</span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">9.47</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: solid #a3a3a3 1.0pt; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">SharePoint</span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">4</span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">A2 Standard</span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;">340.92</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: solid #a3a3a3 1.0pt; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;"> </span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;"> </span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;"> </span></td>
<td style="border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 3px 4px 3px 4px;"><span style="color: #000000;"><strong>£ 4696.95</strong></span></td>
</tr>
</tbody>
</table>
</div>
<p><span style="color: black;">A few points to note about the pricing shown in the Azure Preview Portal (and listed above):<br />
</span></p>
<ul>
<li><span style="color: black;">The default pricing tier/specification of individual VMs in each &#8220;tier&#8221; is the same in both the &#8220;basic&#8221; and &#8220;high-availability&#8221; options.<br />
</span></li>
<li><span style="color: black;">As explained earlier in this post, the default pricing tier/specifications SQL Server and SharePoint VMs <strong>do not meet Microsoft&#8217;s minimum <a href="http://technet.microsoft.com/en-us/library/cc262485(v=office.15).aspx"><span style="color: blue; text-decoration: underline;">hardware and software requirements for SharePoint 2013</span></a></strong>. For example, Web and Application servers require 12 GB RAM and 4 CPU cores per server, and the default pricing tier selected for those VMs (A2 Standard) provides 3.5 GB RAM and 2 cores. I expect the default specifications for Azure SharePoint Server Farm VMs to be insufficient per SharePoint 2013 Service Application resource requirements, even if that farm is intended for development or testing purposes. Of course, you can bump up those specifications at an additional cost.<br />
</span></li>
<li><span style="color: black;">SQL Server VM costs appear to include SQL Server licensing fees, whereas SharePoint VMs do not. This is reflected in the &#8220;choose your pricing tier&#8221; dialogue shown below.<br />
</span></li>
</ul>
<p><span style="color: black;"><span style="text-decoration: underline;">&#8220;Choose your pricing tier&#8221; dialogue for SQL Server VMs</span><br />
</span></p>
<p><img src="http://www.benjaminathawes.com/wp-content/uploads/2014/07/072014_1518_Introductio4.png" alt="" /><span style="color: black;"><br />
</span></p>
<p><span style="color: black;"><span style="text-decoration: underline;">&#8220;Choose your pricing tier&#8221; dialogue for SharePoint VMs</span><br />
</span></p>
<p><img src="http://www.benjaminathawes.com/wp-content/uploads/2014/07/072014_1518_Introductio5.png" alt="" /><span style="color: black;"><br />
</span></p>
<p><span style="color: black;">Personally, I find it a little odd that you can&#8217;t change the SQL Server license that is applied when creating a SharePoint farm via the Azure Preview Portal. Although SQL Server Enterprise licensing is required for the &#8220;high-availability&#8221; option (per usage of a SQL Server 2014 AlwaysOn availability group), I can&#8217;t think why an Enterprise license would be required for the &#8220;basic&#8221; option, and imagine this choice significantly increases cost.<br />
</span></p>
<p><span style="color: black;">By the way, if you find yourself wondering how to reduce costs whilst a development or test environment is not in use, I have found the <a href="http://msdn.microsoft.com/en-us/library/dn495269.aspx"><span style="color: blue; text-decoration: underline;">Stop-AzureVM</span></a> PowerShell cmdlet to be very useful. As noted in that article, shutting down all VMs in a cloud service releases the associated public virtual IP address, which may be a problem if you have public DNS infrastructure that points to that IP. In my case, this hasn&#8217;t been a problem as the Azure SharePoint Server Farm that I created is temporary in nature. Also note that stopping (de-allocating) VMs means that you won&#8217;t incur compute charges, but you will <a href="http://blogs.msdn.com/b/sql_shep/archive/2013/06/10/azure-billing-per-minute-and-no-compute-charge-for-a-stopped-iaas-vm.aspx"><span style="color: blue; text-decoration: underline;">still get charged for other resources such as storage.</span></a><br />
</span></p>
<p><span style="color: black;"><span style="text-decoration: underline;">Stopped (de-allocated VMs), after running Stop-AzureVM</span><br />
</span></p>
<p><img src="http://www.benjaminathawes.com/wp-content/uploads/2014/07/072014_1518_Introductio6.png" alt="" /><span style="color: black;"><br />
</span></p>
<p><span style="color: black;">For what it&#8217;s worth, I incurred a cost of just over £10 for &#8220;spinning up&#8221; a &#8220;high-availability&#8221; Azure SharePoint Server Farm, then <strong>de-allocating it right away</strong> using Stop-AzureVM. You can see in the chart below that the &#8220;OTHERS&#8221; category makes up a small percentage of the overall cost, which presumably includes storage. Remember that costs vary by region and by subscription, so your mileage may vary.<br />
</span></p>
<p><span style="color: black;"><span style="text-decoration: underline;">Cost of &#8220;spinning up&#8221; a &#8220;high-availability Azure SharePoint Server Farm&#8221; with default options selected</span><br />
</span></p>
<p><img src="http://www.benjaminathawes.com/wp-content/uploads/2014/07/072014_1518_Introductio7.png" alt="" /><span style="color: black;"><br />
</span></p>
<p><span style="color: black;"><span style="text-decoration: underline;"><strong>Wrap-up</strong></span><br />
</span></p>
<p><span style="color: black;">That&#8217;s all for now. If you&#8217;d like to know a little more about the configuration of a &#8220;high-availability&#8221; Azure SharePoint Server Farm, feel free to download an <a href="http://www.benjaminathawes.com/wp-content/uploads/2014/07/SPSFarmReport-HAAzureSharePointFarm1.zip">SPSFarmReport </a>that I ran post-creation.<br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.benjaminathawes.com/2014/07/20/introduction-to-basic-and-h-sharepoint-server-farms-in-microsoft-azure-iaas/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ULSViewer.exe download (MSDN archive version)</title>
		<link>http://www.benjaminathawes.com/2014/05/26/ulsviewer-exe-download/</link>
		<comments>http://www.benjaminathawes.com/2014/05/26/ulsviewer-exe-download/#comments</comments>
		<pubDate>Mon, 26 May 2014 20:45:13 +0000</pubDate>
		<dc:creator><![CDATA[ben@bathawes.com]]></dc:creator>
				<category><![CDATA[SharePoint 2007]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SharePoint 2013]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.benjaminathawes.com/?p=430</guid>
		<description><![CDATA[For reasons that are unknown to me, the MSDN Archive Gallery has recently been taken down. That gallery contained ULSViewer.exe, a much-loved tool that no SharePoint guy or gal should be without. Although there are many versions of the tool out there in the wild, I believe this is the version originally created for Microsoft&#8217;s [&#8230;]]]></description>
				<content:encoded><![CDATA[
<table id="tablepress-1" class="tablepress tablepress-id-1">
<tbody class="row-hover">
<tr class="row-1 odd">
	<td class="column-1"><strong>17/09/2014 update</strong>: Microsoft have released a <a href="http://blogs.technet.com/b/wbaer/archive/2014/08/22/uls-viewing-like-a-boss-uls-viewer-is-now-available.aspx">new version of ULSViewer</a>, which you might want to try instead of this one.</td>
</tr>
</tbody>
</table>
<!-- #tablepress-1 from cache -->
<p>For reasons that are unknown to me, the <a href="http://archive.msdn.microsoft.com/">MSDN Archive Gallery </a>has recently been taken down. That gallery contained ULSViewer.exe, a much-loved tool that no SharePoint guy or gal should be without. Although there are many versions of the tool out there in the wild, I believe this is the version originally created for Microsoft&#8217;s internal support teams by Dan Winter. I&#8217;m not sure if this is the &#8220;best&#8221; version as such, but it certainly works for me.</p>
<p>ULSViewer appears to be subject to the MSDN Code Gallery Binary License, meaning that we are free to install, use, copy and distribute the software. To my surprise, I couldn&#8217;t find the tool elsewhere online, so have uploaded it to this blog. Enjoy!</p>
<p><a href="http://www.benjaminathawes.com/wp-content/uploads/2014/05/ULSViewer.zip">Download ULSViewer 2.0.3530.27850</a></p>
<p><span id="more-430"></span></p>
<p><a href="http://www.benjaminathawes.com/wp-content/uploads/2014/05/ULSViewer.png"><img class="alignnone size-full wp-image-442" src="http://www.benjaminathawes.com/wp-content/uploads/2014/05/ULSViewer.png" alt="ULSViewer" width="954" height="536" srcset="//www.benjaminathawes.com/wp-content/uploads/2014/05/ULSViewer-300x168.png 300w, //www.benjaminathawes.com/wp-content/uploads/2014/05/ULSViewer-624x350.png 624w, //www.benjaminathawes.com/wp-content/uploads/2014/05/ULSViewer.png 954w" sizes="(max-width: 954px) 100vw, 954px" /></a></p>
<p>Ben</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.benjaminathawes.com/2014/05/26/ulsviewer-exe-download/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>SPC14 word cloud summary</title>
		<link>http://www.benjaminathawes.com/2014/03/26/sharepoint-conference-2014-word-clouds/</link>
		<comments>http://www.benjaminathawes.com/2014/03/26/sharepoint-conference-2014-word-clouds/#comments</comments>
		<pubDate>Wed, 26 Mar 2014 02:12:20 +0000</pubDate>
		<dc:creator><![CDATA[ben@bathawes.com]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.benjaminathawes.com/?p=400</guid>
		<description><![CDATA[A couple of weeks back, I was lucky enough to be sent along to the Microsoft SharePoint Conference 2014 with a handful of my colleagues at Content and Code. For me, this conference gave me a lot of confidence that we are implementing the right solutions for our clients that use SharePoint in its private (on-premises/managed [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>A couple of weeks back, I was lucky enough to be sent along to the Microsoft SharePoint Conference 2014 with a handful of my colleagues at <a href="http://www.contentandcode.com">Content and Code</a>. For me, this conference gave me a lot of confidence that we are implementing the right solutions for our clients that use SharePoint in its private (on-premises/managed hosting) and public (Office 365/<a href="http://www.theregister.co.uk/2014/03/24/microsoft_azure_name_change/">Microsoft Azure</a>) cloud flavours. This was my first SPC &#8211; so I can&#8217;t really compare it to previous events &#8211; but it was a blast!</p>
<p><span id="more-400"></span></p>
<p>By filtering my Twitter feed on the #spc14 tag, it&#8217;s easy to find a lot of decent technical session write-ups from the SharePoint community. With that in mind, I thought I&#8217;d take a slightly different tack and consider the message that Microsoft tried to get across at the conference. Given that I&#8217;ve only had time to review a handful of the 180+ slide decks, I&#8217;m hardly in a position to provide a broad summary just yet, but I thought some form of automated PowerPoint review might provide an interesting high-level overview of the topics that were discussed.</p>
<p>I started by creating a <a href="http://www.wordle.net/">wordle </a>word cloud using the text contained in <em>all</em> SPC14 PowerPoint presentations (over 3,000 slides!). That process produced a bunch of noise words which I removed, resulting in this broad overview:</p>
<p><span style="text-decoration: underline;">SPC14 word cloud with noise words removed</span></p>
<p><a href="http://www.benjaminathawes.com/wp-content/uploads/2014/03/SPC14TagCloudSharePoint1.png"><img class="alignnone size-full wp-image-406" alt="SPC14TagCloudSharePoint" src="http://www.benjaminathawes.com/wp-content/uploads/2014/03/SPC14TagCloudSharePoint1.png" width="835" height="293" srcset="//www.benjaminathawes.com/wp-content/uploads/2014/03/SPC14TagCloudSharePoint1-300x105.png 300w, //www.benjaminathawes.com/wp-content/uploads/2014/03/SPC14TagCloudSharePoint1-624x218.png 624w, //www.benjaminathawes.com/wp-content/uploads/2014/03/SPC14TagCloudSharePoint1.png 835w" sizes="(max-width: 835px) 100vw, 835px" /></a></p>
<p>As you might expect, the words &#8220;SharePoint&#8221; and &#8220;Microsoft&#8221; dominate this cloud, so my next step was to remove those terms. Now, the emphasis on <strong>Office, Search </strong>and<strong> Yammer</strong> is immediately noticeable, followed closely by <strong>Windows, App(s), </strong><strong>Cloud, Web, Server </strong>and<strong> Content:</strong></p>
<p><span style="text-decoration: underline;">SPC14 word cloud with &#8220;SharePoint&#8221; and &#8220;Microsoft&#8221; removed</span></p>
<p><a href="http://www.benjaminathawes.com/wp-content/uploads/2014/03/SPC14TagCloudSharePointMicrosoftRemoved1.png"><img class="alignnone size-full wp-image-405" alt="SPC14TagCloudSharePointMicrosoftRemoved" src="http://www.benjaminathawes.com/wp-content/uploads/2014/03/SPC14TagCloudSharePointMicrosoftRemoved1.png" width="834" height="528" srcset="//www.benjaminathawes.com/wp-content/uploads/2014/03/SPC14TagCloudSharePointMicrosoftRemoved1-624x395.png 624w, //www.benjaminathawes.com/wp-content/uploads/2014/03/SPC14TagCloudSharePointMicrosoftRemoved1.png 834w" sizes="(max-width: 834px) 100vw, 834px" /></a></p>
<p>Since this is mainly an infrastructure-focussed blog, I also ran through the above process using all PowerPoint decks from the IT PRO track. This time, the words Office and Yammer have slightly less emphasis, but <strong>Windows, Azure </strong>and<strong> SQL</strong> are vying for your attention. We also see other topics such as <strong>Identity</strong>, <strong>Directory</strong> and <strong>Hybrid</strong> start to creep in:</p>
<p><span style="text-decoration: underline;">SPC14 IT PRO track word cloud with &#8220;SharePoint&#8221; and &#8220;Microsoft&#8221; removed</span></p>
<p><a href="http://www.benjaminathawes.com/wp-content/uploads/2014/03/SPC14TagCloudSharePointMicrosoftRemoved_ITPRO1.png"><img class="alignnone size-full wp-image-411" alt="SPC14TagCloudSharePointMicrosoftRemoved_ITPRO" src="http://www.benjaminathawes.com/wp-content/uploads/2014/03/SPC14TagCloudSharePointMicrosoftRemoved_ITPRO1.png" width="824" height="374" srcset="//www.benjaminathawes.com/wp-content/uploads/2014/03/SPC14TagCloudSharePointMicrosoftRemoved_ITPRO1-300x136.png 300w, //www.benjaminathawes.com/wp-content/uploads/2014/03/SPC14TagCloudSharePointMicrosoftRemoved_ITPRO1-624x283.png 624w, //www.benjaminathawes.com/wp-content/uploads/2014/03/SPC14TagCloudSharePointMicrosoftRemoved_ITPRO1.png 824w" sizes="(max-width: 824px) 100vw, 824px" /></a></p>
<p>None of this is really surprising for current SharePoint practitioners, as many of us have spent the last twelve months or so getting to grips with technologies such as Windows/Microsoft Azure and Yammer. It <em>does</em> remind me how rapidly things are changing for us SharePoint people: two years ago, I hadn&#8217;t heard of Yammer. Today, we use Yammer internally, and I favour it over email for many tasks (particularly those where the aim is to &#8220;crowd source&#8221; information rather than action something specific). Similarly, Azure wasn&#8217;t really in the frame for SharePoint hosting back then: today, it is being <a href="http://technet.microsoft.com/en-us/library/dn635313(v=office.15).aspx">pushed as a Disaster Recovery option</a> for on-premises SharePoint 2013 and it acts as the <em>primary</em> hosting environment for some organisations (particularly for dev/test platforms). In the future, I plan to carry out a similar comparison against these word clouds to see how Microsoft&#8217;s messaging &#8211; and the plethora of products that we need to understand to do our jobs &#8211; changes over time.</p>
<p>Just in case anyone fancies doing their own analysis on the text files that I used to produce these word clouds, I&#8217;ve attached them to this post:</p>
<ul>
<li><a href="http://www.benjaminathawes.com/wp-content/uploads/2014/03/SPC14-PowerPoint-text-noise-words-removed-except-SharePointMicrosoft.txt">SPC14 PowerPoint text &#8211; noise words removed except &#8220;SharePoint&#8221; and &#8220;Microsoft</a>&#8220;</li>
<li><a href="http://www.benjaminathawes.com/wp-content/uploads/2014/03/SPC14-PowerPoint-text-noise-words-removed.txt">SPC14 PowerPoint text &#8211; noise words removed</a></li>
<li><a href="http://www.benjaminathawes.com/wp-content/uploads/2014/03/SPC14-PowerPoint-text-noise-words-removed-IT-PRO.txt">SPC14 PowerPoint text &#8211; noise words removed (IT PRO track)</a></li>
</ul>
<p>Ben</p>
]]></content:encoded>
			<wfw:commentRss>http://www.benjaminathawes.com/2014/03/26/sharepoint-conference-2014-word-clouds/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Using host-named site collections in SharePoint 2013 with MySites</title>
		<link>http://www.benjaminathawes.com/2013/12/11/using-host-named-site-collections-in-sharepoint-2013-with-mysites/</link>
		<comments>http://www.benjaminathawes.com/2013/12/11/using-host-named-site-collections-in-sharepoint-2013-with-mysites/#comments</comments>
		<pubDate>Wed, 11 Dec 2013 00:26:32 +0000</pubDate>
		<dc:creator><![CDATA[ben@bathawes.com]]></dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[SharePoint 2013]]></category>

		<guid isPermaLink="false">http://www.benjaminathawes.com/?p=296</guid>
		<description><![CDATA[Although these guys have been around since WSS 3.0, host-named site collections haven&#8217;t received a great deal of attention up until the last year or so. Having previously worked at a small SharePoint hosting company, I&#8217;ve always found this slightly surprising; we preferred to use host-named sites over their path-based counterparts due to the huge [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Although these guys have been around since WSS 3.0, host-named site collections haven&#8217;t received a great deal of attention up until the last year or so. <span id="more-296"></span>Having previously worked at a small SharePoint hosting company, I&#8217;ve always found this slightly surprising; we preferred to use host-named sites over their path-based counterparts due to the huge scalability they offered us when creating &#8220;vanity&#8221; URLs for customers. In WSS 3.0 (the &#8220;Foundation&#8221; version of SharePoint Server 2007, for the 2010 and 2013 folks out there), we could create up to 150,000 site collections per Web application, vs. a documented limit of <a href="http://technet.microsoft.com/en-us/library/cc262787(v=office.12).aspx">99 Web Applications per SSP.</a> In reality, SharePoint 2007 farms would often start to creak at the seams way before that 99 Web Application limit was reached, and this was reflected in subsequent product versions (Microsoft recommend no more than<a href="http://technet.microsoft.com/en-us/library/cc262787(v=office.15).aspx#WebApplication"> 20 Web Applications per farm</a> in SharePoint Server 2013). This underlines the point that site collections are the unit of scale in SharePoint, and host-named site collections mean that vanity URL requirements alone may not provide sufficient justification for multiple Web Applications.</p>
<p>Fast forward to today and host-named sites have hit the big time, and they are a key component of Office 365. Microsoft aren&#8217;t shy about admitting this &#8211; in fact, host-named sites are now the <a href="Host-named site collection architecture and deployment (SharePoint 2013)">preferred deployment method</a> in SharePoint 2013. However, as with most capabilities in the SharePoint world, the decision to use host-named sites isn&#8217;t the no-brainer that TechNet might want you to believe. It&#8217;s a good thing, then, that there are a bunch of great posts out there already for you to digest if you want broader coverage than this post offers (here we are mainly addressing MySites):</p>
<ul>
<li><a href="http://blogs.technet.com/b/speschka/archive/2013/06/26/logical-architecture-guidance-for-sharepoint-2013-part-1.aspx">Logical Architecture Guidance for SharePoint 2013 Part 1</a>, by Steve Peschka</li>
<li><a href="http://blogs.msdn.com/b/kaevans/archive/2012/03/27/what-every-sharepoint-admin-needs-to-know-about-host-named-site-collections.aspx">What Every SharePoint Admin Needs to Know About Host Named Site Collections</a>, by Kirk Evans</li>
<li><a href="http://www.wictorwilen.se/clearing-up-the-confusion-with-host-named-site-collections-and-path-based-site-collections">Clearing up the confusion with Host Named site collections and Path Based site collections</a>, by Wictor Wilén</li>
</ul>
<p>So why have I bothered writing yet ANOTHER article regarding host-named site collections, I hear you quite rightly ask? In truth, all the information contained herein is out there already, but I had a couple of very specific, &#8220;nuts and bolts&#8221; type questions that I have been asked by some of our clients and colleagues who have tried, with varying degrees of success to implement host-named site collections. I figured it would be worth stepping through the answers to these questions by scenario, the first being <strong>usage of MySites within Microsoft&#8217;s <a href="http://technet.microsoft.com/en-us/library/cc424952.aspx#section1a">Recommended architecture for host-named site collections</a>.</strong> In this architecture, one of the most significant departures from traditional SharePoint deployments is that Microsoft recommend a <strong>single Web Application for the entire farm</strong> where possible, excluding SharePoint Central Administration. This post isn&#8217;t intended to answer the wider question as to whether a single Web App is a good idea &#8211; it simply covers a couple of implementation details that may help you out if you plan to pursue this option.</p>
<p><strong>Can MySites be host-named?</strong></p>
<p>I&#8217;ll cut to the chase &#8211; the short answer is <strong>yes</strong>, but possibly not in the way you might expect (we will dig into that below). This is despite the fact that according to Microsoft, the OOB <a href="http://technet.microsoft.com/en-us/library/cc424952.aspx#section1b">SharePoint 2013 Self Service Site Creation feature does not work with host-named site collections</a>. My best guess at an explanation is that one of three MySite instantiation timer jobs actually carries out the work of creating a user&#8217;s MySite, as opposed to the synchronous process that runs when you create a &#8220;regular&#8221; self-service site. As far as I can tell, however, Self Service Site Creation <span style="text-decoration: underline;"><strong>does</strong> </span>need to be enabled for MySite instantiation to work.</p>
<p><a href="http://www.benjaminathawes.com/wp-content/uploads/2013/12/MySite-Instantiation-Request-Queue.png"><img class="alignnone size-medium wp-image-297" alt="MySite Instantiation Request Queue" src="http://www.benjaminathawes.com/wp-content/uploads/2013/12/MySite-Instantiation-Request-Queue-300x34.png" width="300" height="34" /></a></p>
<p><em>MySite instantiation jobs in SharePoint Server 2013</em></p>
<p><strong>Why would I want a host-named MySite anyway?</strong></p>
<p>To answer this question, we need to take a step back for a moment and review Microsoft&#8217;s <a href="http://technet.microsoft.com/en-us/library/cc424952.aspx#section1b">definition </a>of a host-named site. As far as I can tell, there are (unofficially, my own terminology), two types:</p>
<ul>
<li>A &#8220;traditional&#8221; host-named site collection that looks and smells like a Web Application Public URL, or IIS host header binding (but is NOT the same thing). Example: https://bathawes-my.sharepoint.com. I&#8217;m going to call this a &#8220;<strong>root</strong>&#8221; host-named site in this post.</li>
<li>A &#8220;host-named site collection created at a managed path&#8221;. Unfortunately, these look very much like the path-based site collections that we know and love, but there <span style="text-decoration: underline;"><strong>is</strong> </span>a difference: they should be created under a <strong>managed path created specifically for host-named sites.</strong> Example: https://bathawes-my.sharepoint.com/personal/<strong>ben_bathawes_com</strong>.<strong> </strong>I&#8217;m going to call these &#8220;<strong>child</strong>&#8221; host-named sites in this post.</li>
</ul>
<p>While I&#8217;m at it, I&#8217;m also going to start abbreviating &#8220;host-named site collection&#8221; to HNSC every so often for brevity. About time, right? <img src="http://www.benjaminathawes.com/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Back to the question at hand: it probably makes no sense to use a &#8220;root&#8221; HNSC for individual user MySites per DNS requirements, but a &#8220;child&#8221; HNSC does the job nicely, and appears to align with Microsoft&#8217;s recommended architecture for host-named sites. Microsoft provide a simple PowerShell script to help you work this out for yourself &#8211; below is an example from one of my dev VMs. Using the &#8220;unofficial&#8221; terminology I have defined above, note that:</p>
<ol>
<li>https://sharepointhosting.bathawes.com is the only path-based site collection in the farm, created at the root of the Web Application. This site collection is required for search crawls to function correctly.</li>
<li>https://my.bathawes.com is a &#8220;<strong>root</strong>&#8221; HNSC.</li>
<li><strong>/personal</strong> is a <strong>Managed Path created for host-named sites</strong> (we know this because the <strong>-HostHeader</strong> parameter was specified when using New-SPManagedPath).<strong></strong></li>
<li>https://my.bathawes.com/personal/<strong>administrator </strong>and https://my.bathawes.com/personal/<strong>sp2013_install</strong> are &#8220;<strong>child</strong>&#8221; host-named sites.</li>
</ol>
<p><a href="http://www.benjaminathawes.com/wp-content/uploads/2013/12/MySites-are-child-HNSC1.png"><img class="alignnone size-medium wp-image-321" alt="MySites are child HNSC" src="http://www.benjaminathawes.com/wp-content/uploads/2013/12/MySites-are-child-HNSC1-300x116.png" width="300" height="116" /></a></p>
<p><em>Illustration of &#8220;root&#8221; and &#8220;child&#8221; host-named sites.</em></p>
<p>The section below provides the script I used to configure this environment so you can test this yourself.</p>
<p><strong>Create a Web Application for host-named MySites with PowerShell</strong></p>
<p>I used various sources to put together the script below, but the two articles I should call out are Spencer Harbar&#8217;s article on <a href="http://www.harbar.net/articles/sp2013rm1.aspx">Request Management </a>and Steve Peschka&#8217;s article on <a href="http://blogs.technet.com/b/speschka/archive/2013/06/26/logical-architecture-guidance-for-sharepoint-2013-part-1.aspx">Logical Architecture Guidance for SharePoint 2013.</a> I&#8217;ve made a few tweaks here and there to take into account Microsoft&#8217;s strong recommendation to use SSL for SharePoint 2013 Web Applications, and automate creation of the MySite host. There are a few assumptions that you should be aware of before running the script:</p>
<ol>
<li>I assume that a User Profile Service Application has been created, and that the MySite host has been set to the correct URL.</li>
<li>I assume that you want to use SSL per Microsoft guidance, and have a valid certificate.</li>
<li>I&#8217;m not fond of using a server&#8217;s machine name as the URL of a Web Application, primarily because there will be more than one server in almost all SharePoint deployments. I&#8217;m not 100% sure that changing the URL to something more friendly (by passing the -Url parameter to New-SPWebApplication), is supported in this architecture for host-named sites, but I haven&#8217;t had any problems so far in my development environment, so assume for now that it is.</li>
</ol>
<pre class="brush: powershell; gutter: true">&lt;# Sets up a SharePoint 2013 Web Application for hosting host-named site collections per http://technet.microsoft.com/en-us/library/cc424952.aspx
#&gt;

&lt;# App Pool details
#&gt;
$appPoolName = &quot;SharePointHosting&quot;
$appPoolUserName = &quot;bathawes\SPHosting&quot;
$ownerAlias = &quot;bathawes\sp2013_install&quot;
$ownerEmail = &quot;ben@bathawes.com&quot;

&lt;# Web App details
        Note that the Web App URL is HTTPS per SSL guidelines from Microsoft
#&gt;
$hostingMainURL = &quot;https://sharepointhosting.bathawes.com&quot;
$webAppName = &quot;SharePoint Hosting&quot;
$contentDBName = &quot;SharePoint_Content_Hosting&quot;

&lt;# Host-named site collections
        Ensure that the MySite Host URL is configured correctly within the User Profile Service, under the &quot;Setup My Sites&quot; link in SPCA
#&gt;
$mysitehost = &quot;https://my.bathawes.com&quot;

$managedAccount = Get-SPManagedAccount $appPoolUserName

&lt;# Create a new Web App using Windows Claims (Windows (NTLM))
      The -Url parameter specifies the Default Public URL. Otherwise, the machine name must be used when creating the root (path based) site collection
      The -SecureSocketsLayer is only required if using SSL
      Also changed -Port to 443
      When the Web App is created, ensure that an appropriate certificate is bound in IIS
#&gt;
$authenticationProvider = New-SPAuthenticationProvider

write-host &quot;Creating Web Application for host-named site collections at $hostingMainURL...&quot;
$webApp = New-SPWebApplication -ApplicationPool $appPoolName -ApplicationPoolAccount $managedAccount -Name $webAppName -Port 443 -AuthenticationProvider $authenticationProvider -DatabaseName $contentDBName -Url $hostingMainURL -SecureSocketsLayer

&lt;# Sometimes, the New-SPSite cmdlet reports that a path-based site already exists if it is run immediately after creating the Web App, so sleep for a minute
#&gt;
write-host &quot;Web App created&quot; -foreground &quot;green&quot;
write-host &quot;Sleeping for a minute before creating the root path-based site collection...&quot;
Start-Sleep -s 60

&lt;# Create path-based Site Collection at the Web App root. This won&#039;t be accessed by users but is required for support.
#&gt;
New-SPSite -Url $hostingMainURL -owneralias $ownerAlias -ownerEmail $ownerEmail

# Enable self-service site creation for MySites
$webapp = Get-SPWebApplication $hostingMainURL
$webapp.SelfServiceSiteCreationEnabled = $true
$webApp.Update()
write-host &quot;Self-service site creation enabled successfully...&quot; -foreground &quot;green&quot;

&lt;# Removing the existing /sites path-based managed path per http://blogs.technet.com/b/speschka/archive/2013/06/26/logical-architecture-guidance-for-sharepoint-2013-part-1.aspx
#&gt;
$sitesManagedPath = Get-SPManagedPath sites -WebApplication $hostingMainURL
if ($sitesManagedPath -ne $null) {Remove-SPManagedPath sites -WebApplication $hostingMainURL -confirm:$false}
write-host &quot;Removed /Sites path-based managed path...&quot; -foreground &quot;green&quot;

&lt;# Create MySite Managed Path (a managed path for use with HNSC, so ONE per farm)
#&gt;
$personal = Get-SPManagedPath personal -hostheader 
if ($personal -eq $null) {New-SPManagedPath personal -HostHeader}
write-host &quot;Created /Personal managed path for MySites...&quot; -foreground &quot;green&quot;

&lt;# Create the MySite Host
#&gt;
New-SPSite -Url $mysitehost -owneralias $ownerAlias -ownerEmail $ownerEmail -HostHeaderWebApplication $hostingMainURL -Template SPSMSITEHOST#0
write-host &quot;Created MySite host at $mysitehost...&quot; -foreground &quot;green&quot;

$webApp = Get-SPWebapplication $hostingMainURL

&lt;# Confirm that the correct sites have been created
        From http://technet.microsoft.com/en-us/library/cc424952.aspx#section3a
#&gt;
write-host &quot;Confirming the site collections that we created within $hostingMainURL :&quot;
$webApp = Get-SPWebapplication $hostingMainURL

foreach($spSite in $webApp.Sites)
{
if ($spSite.HostHeaderIsSiteName) 
{ Write-Host $spSite.Url &#039;is host-named&#039; -foreground &quot;green&quot;}
else
{ Write-Host $spSite.Url &#039;is path based&#039; -foreground &quot;red&quot;}
}

write-host &quot;Done!&quot; -foreground &quot;green&quot;</pre>
<p><span style="line-height: 1.714285714; font-size: 1rem;">Below are a couple of screenshots of my farm after running the above script. Usage of a non-standard port for SPCA (2013 in this case) is irrelevant to this discussion and </span><a href="http://www.harbar.net/archive/2013/02/13/Using-SSL-for-Central-Administration-with-SharePoint-2013.aspx"><span style="line-height: 1.714285714; font-size: 1rem;">not r</span>equired</a><span style="line-height: 1.714285714; font-size: 1rem;"> &#8211; it&#8217;s just how this dev VM is configured:</span></p>
<p><a style="font-size: 1rem; color: #0f3647;" href="http://www.benjaminathawes.com/wp-content/uploads/2013/12/HNSC-Web-App-in-SPCA.png"><img class="alignnone size-medium wp-image-316" alt="HNSC Web App in SPCA" src="http://www.benjaminathawes.com/wp-content/uploads/2013/12/HNSC-Web-App-in-SPCA-300x46.png" width="300" height="46" srcset="//www.benjaminathawes.com/wp-content/uploads/2013/12/HNSC-Web-App-in-SPCA-300x46.png 300w, //www.benjaminathawes.com/wp-content/uploads/2013/12/HNSC-Web-App-in-SPCA-624x96.png 624w, //www.benjaminathawes.com/wp-content/uploads/2013/12/HNSC-Web-App-in-SPCA.png 696w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p><a style="line-height: 1.714285714; font-size: 1rem;" href="http://www.benjaminathawes.com/wp-content/uploads/2013/12/HNSC-Web-App-in-IIS.png"><img class="alignnone size-medium wp-image-315" alt="HNSC Web App in IIS" src="http://www.benjaminathawes.com/wp-content/uploads/2013/12/HNSC-Web-App-in-IIS-300x62.png" width="300" height="62" srcset="//www.benjaminathawes.com/wp-content/uploads/2013/12/HNSC-Web-App-in-IIS-300x62.png 300w, //www.benjaminathawes.com/wp-content/uploads/2013/12/HNSC-Web-App-in-IIS-624x129.png 624w, //www.benjaminathawes.com/wp-content/uploads/2013/12/HNSC-Web-App-in-IIS.png 729w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>As <strong>SPCA only appears to be aware of path-based Managed Paths</strong>, the /Personal Managed Path for host-named sites doesn&#8217;t appear. Also note that the script above removes the default /Sites path-based Managed Path, as it is not required for HNSC:</p>
<p><span style="line-height: 1.714285714; font-size: 1rem;"> </span><a style="line-height: 1.714285714; font-size: 1rem;" href="http://www.benjaminathawes.com/wp-content/uploads/2013/12/Path-based-sites-in-SPCA-for-HNSC-Web-App.png"><img class="alignnone size-medium wp-image-317" alt="Path-based sites in SPCA for HNSC Web App" src="http://www.benjaminathawes.com/wp-content/uploads/2013/12/Path-based-sites-in-SPCA-for-HNSC-Web-App-300x222.png" width="300" height="222" srcset="//www.benjaminathawes.com/wp-content/uploads/2013/12/Path-based-sites-in-SPCA-for-HNSC-Web-App-300x222.png 300w, //www.benjaminathawes.com/wp-content/uploads/2013/12/Path-based-sites-in-SPCA-for-HNSC-Web-App.png 608w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p><span style="color: #ff0000;"><strong>07/01/2014 update:</strong></span> if no path-based Managed Paths are defined for a Web Application, you will see the error below when attempting to create a site collection from within SPCA. This is due to the fact that SPCA can only create path-based sites.</p>
<p><a href="http://www.benjaminathawes.com/wp-content/uploads/2014/01/NoInclusionsDefinedForPathSiteCreation.png"><img class="alignnone size-medium wp-image-392" alt="NoInclusionsDefinedForPathSiteCreation" src="http://www.benjaminathawes.com/wp-content/uploads/2014/01/NoInclusionsDefinedForPathSiteCreation-300x156.png" width="300" height="156" srcset="//www.benjaminathawes.com/wp-content/uploads/2014/01/NoInclusionsDefinedForPathSiteCreation-300x156.png 300w, //www.benjaminathawes.com/wp-content/uploads/2014/01/NoInclusionsDefinedForPathSiteCreation.png 461w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Below, I have enumerated the host-named and path-based Managed Paths in the same farm and Web Application using PowerShell. This time, /Sites and /Personal <span style="text-decoration: underline;"><strong>do</strong> </span>appear, as they are Managed Paths created using the -HostHeader parameter:</p>
<p><a href="http://www.benjaminathawes.com/wp-content/uploads/2013/12/Host-named-vs.-Path-based-Managed-Paths.png"><img class="alignnone size-medium wp-image-324" alt="Host-named vs. Path-based Managed Paths" src="http://www.benjaminathawes.com/wp-content/uploads/2013/12/Host-named-vs.-Path-based-Managed-Paths-300x109.png" width="300" height="109" srcset="//www.benjaminathawes.com/wp-content/uploads/2013/12/Host-named-vs.-Path-based-Managed-Paths-300x109.png 300w, //www.benjaminathawes.com/wp-content/uploads/2013/12/Host-named-vs.-Path-based-Managed-Paths.png 594w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p><strong>This sounds awesome! Why would I use any other approach?</strong></p>
<p>Although consolidating to a single Web Application has potential performance, administration and future support benefits, there are a few significant trade-offs. For a start, we will probably need to turn to <a href="http://www.wictorwilen.se/sharepoint-specifying-content-database-for-new-site-collections-when-using-host-named-site-collections">custom code</a> or PowerShell to ensure that site collections get created in the &#8220;correct&#8221; SharePoint Content Database. We also need to be comfortable with the idea that <strong>all Web Application scoped options apply to all site collections in the entire farm</strong>. This includes security policies, web.config changes (such as those required to configure BLOB Caching), and Service Application connections amongst others. We also lose a couple of options when moving to a host-named site model, the most well-known being <a href="http://technet.microsoft.com/en-us/library/cc424952.aspx#section3a">support for out of the box self-service site creation</a> (except, apparently for MySites!). As I say, this post isn&#8217;t really about prescribing a model, but I wanted to flag those considerations so they are out in the open.</p>
<p>Ben</p>
]]></content:encoded>
			<wfw:commentRss>http://www.benjaminathawes.com/2013/12/11/using-host-named-site-collections-in-sharepoint-2013-with-mysites/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How to renew your ADFS 2.0 token signing certificate in SharePoint</title>
		<link>http://www.benjaminathawes.com/2013/07/31/how-to-renew-your-adfs-2-0-token-signing-certificate-in-sharepoint/</link>
		<comments>http://www.benjaminathawes.com/2013/07/31/how-to-renew-your-adfs-2-0-token-signing-certificate-in-sharepoint/#comments</comments>
		<pubDate>Wed, 31 Jul 2013 18:49:18 +0000</pubDate>
		<dc:creator><![CDATA[ben@bathawes.com]]></dc:creator>
				<category><![CDATA[ADFS]]></category>
		<category><![CDATA[SharePoint 2010]]></category>

		<guid isPermaLink="false">http://bathawes.com/?p=88</guid>
		<description><![CDATA[Over the past year or so, Content and Code have found that Active Directory Federation Services (ADFS) has become a more common requirement for both cloud and on-premises SharePoint deployments. Although we find that it is often implemented to facilitate single sign on across otherwise disconnected infrastructure, we have also deployed it to support claims augmentation for [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Over the past year or so, <a href="http://www.contentandcode.com/">Content and Code</a> have found that Active Directory Federation Services (ADFS) has become a more common requirement for both cloud and on-premises SharePoint deployments. Although we find that it is often implemented to facilitate single sign on across otherwise disconnected infrastructure, we have also deployed it to support claims augmentation for SharePoint environments that utilise SAML claims. As such, we have built up a fair chunk of experience deploying and operating ADFS in both production and our own internal development environments.<span id="more-88"></span></p>
<p>ADFS uses various certificates to secure communications and facilitate authentication, and this post is focussed on the <strong>token-signing</strong> certificate.</p>
<div>
<div>
<table border="0">
<colgroup>
<col /></colgroup>
<tbody valign="top">
<tr>
<td><strong>Note</strong> that this post is <strong>NOT</strong> intended to provide <a href="http://blogs.technet.com/b/speschka/archive/2010/07/30/configuring-sharepoint-2010-and-adfs-v2-end-to-end.aspx"><span style="color: #0072bc;">steps to configure SharePoint to use ADFS</span></a>, or <a href="http://technet.microsoft.com/en-us/library/adfs2(v=ws.10).aspx"><span style="color: #0072bc;">explain what ADFS is</span></a>. The aim is to explain why certificate renewal is necessary, and describe how to do it with ADFS 2.0 and SharePoint Server 2010. Having said that, I imagine the steps would be identical in SharePoint Server 2013, and perhaps ADFS v2.1 too.</td>
</tr>
</tbody>
</table>
</div>
<p><strong> Is this relevant to me?</strong></p>
<p>If you look after a SharePoint environment that relies on ADFS 2.0 for authentication, then this post is relevant to you. By default, the ADFS token signing certificate is configured to expire 1 year after ADFS is first installed. When that happens, the new certificate needs to be re-imported in to SharePoint&#8217;s trusted identity provider, <strong>and </strong>be trusted by SharePoint. <strong>If these steps are not followed, all Web application zones that rely on ADFS for authentication will be unavailable. </strong>If your ADFS token signing certificate has already expired, then SharePoint is most likely unavailable and you will most likely find the following error in the event log on your SharePoint server(s):</p>
<div>
<table border="0">
<colgroup>
<col /></colgroup>
<tbody valign="top">
<tr>
<td>An operation failed because the following certificate has validation errors:nnSubject Name: CN=ADFS Signing &#8211; adfs.domain.comnIssuer Name: CN=ADFS Signing &#8211; adfs. domain.comnThumbprint: F8CDCC978D4A816713754663A56C102B72580CFEnnErrors:nn The root of the certificate chain is not a trusted root authority..</td>
</tr>
</tbody>
</table>
</div>
<p><img alt="" src="/wp-content/uploads/2013/11/073113_1748_Howtorenewy1.png" /></p>
<p>If you aren&#8217;t sure whether a SharePoint Web application is using ADFS, here is an example of the &#8220;Authentication Providers&#8221; screen within SharePoint Central Administration, for a SP2010 Web App relying on ADFS. The fact that the &#8220;<strong>Trusted Identity Provider</strong>&#8221; box is checked is a pretty strong indication that ADFS is in use. Note that your provider is unlikely to be called &#8220;ADFSv2&#8221;, as the name is configured at the point of creation:<strong></strong></p>
<p><img alt="" src="/wp-content/uploads/2013/11/073113_1748_Howtorenewy2.png" /></p>
<p>If you have access to the ADFS server, you can view certificate expiry dates under <strong>ADFS 2.0 &gt; Service &gt; Certificates:</strong></p>
<p><img alt="" src="/wp-content/uploads/2013/11/073113_1748_Howtorenewy3.png" /></p>
<h2>What is an ADFS token signing certificate, and why would it expire?</h2>
<p>Technet concisely <a href="http://technet.microsoft.com/en-us/library/hh341466(v=ws.10).aspx">justifies the existence</a> of the ADFS token signing certificate:</p>
<p><em>&#8220;Federation servers require token-signing certificates to prevent attackers from altering or counterfeiting security tokens in an attempt to gain unauthorized access to federated resources&#8230;The Web server in the resource partner uses the public key of the token-signing certificate to verify that the security token is signed by the resource federation server.&#8221;</em></p>
<p>My interpretation of this is that by importing the ADFS token signing certificate, SharePoint (the Web server) is able to verity that the certificates are signed by ADFS (the resource federation server).</p>
<p>As for &#8220;why would it expire&#8221;, common security guidelines for certificate management state that the shorter the lifetime of a certificate, the more frequently the identity of the signer is verified. To me, a year of validity seems to be a fairly sensible duration for a production deployment, but this duration may not be appropriate for less critical systems such as development and test environments.</p>
<p><strong>Note</strong> <strong>that in a default configuration, expired certificates are automatically replaced by ADFS, </strong>due to usage of a feature known as auto-certificate rollover. The problem here is that relying parties (such as SharePoint) need to be made aware of the new token-signing certificate.<em></em></p>
<h2>How do I renew the token-signing certificate in SharePoint?</h2>
<p>There are <strong>two </strong>steps required to renew the certificate (at least as far as SharePoint is concerned – this assumes that the new ADFS token signing cert has already been generated):</p>
<ol>
<li>Import certificate into SharePoint&#8217;s trusted certificate store (SharePoint Central Admin or PowerShell)</li>
<li>Import certificate into SharePoint&#8217;s trusted identity provider (PowerShell)</li>
</ol>
<p>The PowerShell required to perform the above steps forms part of the overall process followed to <a href="http://blogs.technet.com/b/speschka/archive/2010/07/30/configuring-sharepoint-2010-and-adfs-v2-end-to-end.aspx">configure ADFSv2 and SharePoint 2010 end-end</a>, so if you have configured SharePoint for ADFS before this is nothing new. <strong>This script needs to be run on a SharePoint server:</strong></p>
<div>
<table border="0">
<colgroup>
<col /></colgroup>
<tbody valign="top">
<tr>
<td># Find the ADFS token signing cert$cert= New-Object System.Security.Cryptography.X509Certificates.X509Certificate2(&#8220;<strong>C:ADFSTokenSigning.cer</strong>&#8220;)# import cert to trusted root authority store in SharePointNew-SPTrustedRootAuthority -Name &#8220;ADFS Token Signing&#8221; -Certificate $cert# import cert to SP-TrustedIdentityTokenIssuer</p>
<p>get-SPTrustedIdentityTokenIssuer | Set-SPTrustedIdentityTokenIssuer -importtrustcertificate $cert</td>
</tr>
</tbody>
</table>
</div>
<p><strong>Note</strong> that it doesn&#8217;t appear to be necessary to remove the previously used certificate (SPTrustedRootAuthority), and Set-SPTrustedIdentityTokenIssuer overwrites the previous token signing certificate. Additionally, an IISReset was <strong>not</strong> necessary when testing in my environment.</p>
<h2>I don&#8217;t want to do this every year. How do I stop the certificate from expiring?</h2>
<p>At Content and Code, we have a lot of development VMs that rely on ADFS. In this scenario, it&#8217;s quite possible that ADFS token signing certificates should <em>never</em> expire, as the security risk is minimal or non-existent. ADFS has the capability to generate its own certificates (in which case you should follow the steps below), or you could import a certificate generated externally (for example, you might decide to issue a new certificate using a certificate authority within the domain). If you decide to generate a certificate outside of ADFS, you may want to review the <a href="http://technet.microsoft.com/en-us/library/dd807040(v=ws.10).aspx">requirements for an ADFS token signing certificate.</a></p>
<p>Assuming that you are using ADFS to generate the new token signing certificate, you can use the Set-ADFSProperties cmdlet to modify the CertificateDuration property, then create a new token signing certificate. In the example below, new certificates won&#8217;t expire for 36500 days (100 years):</p>
<div>
<table border="0">
<colgroup>
<col /></colgroup>
<tbody valign="top">
<tr>
<td>Set-ADFSProperties -CertificateDuration 36500</td>
</tr>
</tbody>
</table>
</div>
<p>Note that this needs to be run on <strong>the ADFS server</strong>. If you aren&#8217;t familiar with using the ADFS PowerShell cmdlets, I suggest running &#8220;Windows PowerShell Modules&#8221; as administrator to get started:</p>
<p><img alt="" src="/wp-content/uploads/2013/11/073113_1748_Howtorenewy4.png" /></p>
<p>If you are the cautious type, you can run Get-ADFSProperties to check the current certificate duration before changing it. You will probably find that you ADFS server is set to the default value of 365 days, but in this case I have already changed the value to 36500 using the script above:</p>
<p><img alt="" src="/wp-content/uploads/2013/11/073113_1748_Howtorenewy5.png" /></p>
<p>We can now create a new Token Signing certificate that will be valid for the new duration:</p>
<div>
<table border="0">
<colgroup>
<col /></colgroup>
<tbody valign="top">
<tr>
<td>Update-ADFSCertificate -CertificateType Token-Signing -Urgent</td>
</tr>
</tbody>
</table>
</div>
<p>By including the –<strong>Urgent</strong> parameter, we are triggering <strong>immediate</strong> certificate rollover, meaning that any reliant parties will need to be updated with the new certificate before authentication via ADFS can occur. In other words, <strong>the cmdlet above will break authentication for all SharePoint Web Application zones using ADFS until we have imported the new certificate</strong>. Remember, this needs to be <strong>run on the ADFS server.</strong><strong></strong></p>
<p>Having completed this step, you should now find that the token signing certificate within ADFS is valid for 100 years:</p>
<p><img alt="" src="/wp-content/uploads/2013/11/073113_1748_Howtorenewy6.png" /></p>
<p><strong>Optionally</strong>, you may wish to disable auto-certificate rollover completely in your development environments. This PowerShell script will do just that:</p>
<div>
<table border="0">
<colgroup>
<col /></colgroup>
<tbody valign="top">
<tr>
<td>Set-ADFSProperties -AutoCertificateRollover $false</td>
</tr>
</tbody>
</table>
</div>
<p>Obviously having done this, you will have to renew your ADFS certificate manually.</p>
<h2>What about the other ADFS certificates?</h2>
<p>You might have noticed that there are three types of ADFS certificate presented in the ADFS 2.0 UI:</p>
<p><img alt="" src="/wp-content/uploads/2013/11/073113_1748_Howtorenewy7.png" /></p>
<p>I haven&#8217;t had a chance to investigate how the Service communications and Token-decrypting certificate are used in the context of SharePoint. For what it&#8217;s worth, I did <a href="http://support.microsoft.com/kb/2504439">renew the Service communications certificate</a> in my environment and did not notice any obvious availability problems within SharePoint. I do however advise treading very carefully, especially given the heavy reliance that SharePoint places on the token-signing certificate.</p>
<p>Perhaps the other ADFS certificates will be the topic of another blog post. Thanks for reading!</p>
<p>Ben</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.benjaminathawes.com/2013/07/31/how-to-renew-your-adfs-2-0-token-signing-certificate-in-sharepoint/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Resolving partial encryption problems with BitLocker</title>
		<link>http://www.benjaminathawes.com/2013/03/17/resolving-partial-encryption-problems-with-bitlocker/</link>
		<comments>http://www.benjaminathawes.com/2013/03/17/resolving-partial-encryption-problems-with-bitlocker/#comments</comments>
		<pubDate>Sun, 17 Mar 2013 21:37:49 +0000</pubDate>
		<dc:creator><![CDATA[ben@bathawes.com]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://bathawes.com/?p=86</guid>
		<description><![CDATA[As illustrated in this blog post, encryption can result in irrecoverable loss of data. It is strongly recommended that you take a backup before using BitLocker to encrypt existing data. The approach outlined here worked for me but you may not be as lucky. Use at your own risk! As an IT consultant, I have a firm requirement [&#8230;]]]></description>
				<content:encoded><![CDATA[<div>
<div>
<table width="100%" cellspacing="0">
<tbody>
<tr>
<th rowspan="1" colspan="1"><strong>As illustrated in this blog post, </strong>encryption can result in irrecoverable loss of data. It is strongly recommended that you take a backup before using BitLocker to encrypt existing data. The approach outlined here worked for me but you may not be as lucky. Use at your own risk!</th>
</tr>
</tbody>
</table>
</div>
<div><span id="more-86"></span></div>
<div>As an IT consultant, I have a firm requirement to carry a bunch of software and virtual machines around with me on a regular basis. Although a lot of this information is stored on my laptop, I also have numerous high-capacity USB drives that I use to store backups of key information. Whilst this data isn&#8217;t especially sensitive, I&#8217;d probably lose a little sleep if I were to misplace one of those drives. I recently started to view Bitlocker in my recently-purchased copy of Windows 8 Pro as a solution to this problem.</div>
</div>
<p>Rather than spend lots of time researching the technology, I uncharacteristically jumped head first into the world of Bitlocker and clicked &#8220;Turn BitLocker on&#8221; for the drive mentioned below:</p>
<p><img alt="" src="/wp-content/uploads/2013/11/031713_2137_Resolvingpa1.png" /></p>
<p>As you will read shortly, this <strong>didn&#8217;t go too well</strong> but before we get into the problem/solution, I&#8217;d like to describe the context first. I would suggest you read this even if you are already in a bad situation and are looking for a quick solution (e.g. your data is partially encrypted with BitLocker and you can&#8217;t access it), as there are some useful articles mentioned here that might help you understand the issue.</p>
<p>The example hard drive (victim) used in this blog is&#8230;</p>
<div>
<ul>
<li>A <a href="http://www.amazon.co.uk/gp/product/B004KSRM18/ref=wms_ohs_product?ie=UTF8&amp;psc=1"><em>Buffalo Ministation 1TB USB 2.0 Slimline Portable External</em>&#8220;.</a><em> </em>Note that this is a USB 2.0 drive and is notan SSD which might explain the slow encryption/decryption times.</li>
<li>A <strong>removable</strong> <strong>data drive</strong>, meaning that it does not contain any OS or system data. This is relevant in that encrypting an OS drives requires usage of a TPM and/or startup key stored on a USB flash drive</li>
<li>Secured using the <a href="http://technet.microsoft.com/en-us/library/ee706531(v=ws.10).aspx"><strong>Password</strong></a> unlock method &#8211; I would consider a more secure option if the data were more sensitive (see below).</li>
</ul>
</div>
<p>The drive has a single volume stored as an NTFS file system:</p>
<p><img alt="" src="/wp-content/uploads/2013/11/031713_2137_Resolvingpa2.png" /></p>
<p><strong>Scope of this blog</strong></p>
<p>It&#8217;s important to note the narrow scope of this post &#8211; we are only discussing usage of Bitlocker to encrypt a<strong>removable drive </strong>using a<strong> password </strong>with <strong>Windows 8 Pro</strong>. This is perhaps one of the &#8220;simplest&#8221; options and probably one of the most likely that consumers will choose as specialist hardware isn&#8217;t required and everyone understands and uses passwords (despite the growing fear that <a href="http://www.smartcompany.com.au/information-technology/053037-best-of-the-web-why-passwords-should-die.html">passwords should die</a>). There are a<a href="http://technet.microsoft.com/en-us/library/ee706531(v=ws.10).aspx">numerous other deployment scenarios</a> that would need to be considered if rolling out to an Enterprise that might have specialist hardware available and more stringent security requirements, but the options I have selected are probably &#8220;good enough&#8221; for the data contained on my personal external USB drive:</p>
<div>
<ul>
<li>
<div>Encryption/cipher strength:</div>
<ul>
<li><strong>128-bit AES with Diffuser algorithm (default option in Windows 8 Pro, which is what I&#8217;ve stuck with for no reason other than simplicity)</strong></li>
<li>128-bit AES without Diffuser algorithm</li>
<li>256-bit AES with or without Diffuser<strong> </strong>algorithm<strong></strong></li>
</ul>
</li>
<li>
<div>Drive type:</div>
<ul>
<li>Operating system/system</li>
<li><strong>Removable data drives &#8211; the subject of this blog</strong></li>
<li>Fixed data drives</li>
</ul>
</li>
<li>Unlock method &#8211; options differ drastically if encrypting an OS volume:
<ul>
<li>
<div>OS drives:</div>
<ul>
<li>TPM only</li>
<li>TPM + PIN</li>
<li>TPM + startup key</li>
<li>TPM + PIN + startup key</li>
<li>Startup key only</li>
</ul>
</li>
<li>Removable or fixed data drives:
<ul>
<li><strong>Password &#8211; this is the method I&#8217;ve used for this blog. I don&#8217;t have/need a Smart card infrastructure.</strong></li>
<li>Smart card</li>
<li>Automatic unlocking</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<p>There are also a bunch of other more granular options that could be implemented depending on what level of security is required. For example, it is possible to <a href="http://technet.microsoft.com/en-us/library/ee706518(v=ws.10).aspx">deny write access to removable drives that are not encrypted with Bitlocker.</a></p>
<p><strong>The scenario/problem:</strong></p>
<ul>
<li>I attempted to encrypt the drive using the <strong>Password</strong> unlock method from the Windows 8 Pro UI.</li>
<li>After around 8 hours, the <strong>encryption process appeared to be stuck at 94%</strong>. The physical drive was also producing a slightly alarming clicking sounds that I have not got to the bottom of yet (presumably indicating a hardware fault).</li>
<li>I clicked &#8220;Pause&#8221;. The encryption dialogue locked up and after an hour or so I attempted a reboot.</li>
<li>Subsequent attempts to access the drive failed- upon entering the (correct) Bitlocker password the UI would freeze. In short, <strong>the drive and data were no longer accessible.</strong></li>
</ul>
<p>It&#8217;s probably worth re-stating the obvious here: <strong>if you don&#8217;t have either the password, recovery password, or recovery key, no solution will restore access to your data</strong>. It&#8217;s <a href="http://technet.microsoft.com/en-us/library/cc732774.aspx">nearly currently impossible to access BitLocker-encrypted data after removing all BitLocker keys</a> because this would require cracking 128-bit or 256-bit AES encryption.</p>
<p>Even if you do have one of the aforementioned recovery items, we are still in a pretty bad situation. Encryption is only partial and we can&#8217;t interact with the drive via the UI. <strong>There is no guarantee that the BitLocker Repair Tool will get your data back in the same way it did for me.</strong></p>
<p>Caveats out of the way, let&#8217;s move on…</p>
<p><strong>Solution requirements</strong></p>
<ul>
<li>The <strong>password</strong>, recovery password or the recovery key for the encrypted volume. Note that various article and forum posts suggest that the password alone is not sufficient (stating that some combination of the recovery password or key are required in order to repair a Bitlocker volume) &#8211; the<strong>password alone was sufficient to repair my drive in this case</strong> (I assume this changes if using another drive type and/or unlock method)</li>
<li><strong>A volume with at least as much space free as the partially encrypted volume</strong>. This can be a partition on an external or internal drive, although be prepared to remove any existing data before following this process (if the decryption process is successful, data on this volume is removed). Contrary to what various knowledgebase articles indicate, a secondary USB drive is NOT required for the scenario described here. As far as I can tell you just need a spare, empty partition that is at least as large as the Bitlocker encrypted drive.</li>
</ul>
<p><strong>Solution steps</strong></p>
<p>The steps described below involve usage of the <a href="http://support.microsoft.com/kb/928201">BitLocker Repair Tool </a>to decrypt data held within the inaccessible volume. This is included with Windows 8 Pro but may need to be downloaded if using an earlier OS. Note that the process is simplified because a.) I chose the <strong>password </strong>unlock method and b.) we are repairing a non-OS volume (negating the need to copy the repair tools to a location that is accessbile during start up).</p>
<p><a href="http://support.microsoft.com/kb/928201"><img style="border: 0px;" alt="" src="/wp-content/uploads/2013/11/031713_2137_Resolvingpa3.png" border="0" /></a></p>
<ol>
<li>Create a 1TB partition dedicated to storing decrypted information during repair (I.e. the drive should be formatted  before following the process below)</li>
<li>Use the <a href="http://support.microsoft.com/kb/928201">BitLocker Repair Tool,</a> targeting the spare, empty partition. I ran &#8220;repair-bde encrypteddriveletter: emptydriveletter: -password&#8221; (you will be prompted to enter the password used to lock/unlock the volume)</li>
<li>Decryption will probably get stuck at the same point as encryption (in my case 94%), at which point hit cntrl+c at the command prompt to interrupt the decryption process</li>
</ol>
<p>In my case, my decryption log file looked like this:</p>
<div>
<table border="0">
<colgroup>
<col /></colgroup>
<tbody valign="top">
<tr>
<td>LOG INFO: 0x0000002aValid metadata at offset 8832512000 found at scan level 1.LOG INFO: 0x0000002b</p>
<p>Successfully created repair context.</p>
<p>LOG ERROR: 0xc0000037</p>
<p>Failed to read sector at offset 9211592704. (0x00000017)</p>
<p>LOG ERROR: 0xc0000037</p>
<p>Failed to read sector at offset 9211593216. (0x00000017)</p>
<p>&#8230;followed by around 20 similar entries that differed only by the offset value</td>
</tr>
</tbody>
</table>
</div>
<p>Your data should now be decrypted on the original problematic volume, and the new drive will contain the partially decrypted files (unless the process completes to 100%, in which case these files will be removed).With any luck, you should now be able to view your unencrypted/insecure files on the problematic drive. Hoorah! J</p>
<p><strong>What went wrong?</strong></p>
<p>I can&#8217;t be 100% sure but my best guess is that my external USB drive is suffering from a hardware fault, meaning that sectors located somewhere near the end of my drive are inaccessible. This is based on the decryption log (showing failure to read sectors at a late offset) and the scary clicking sound that I mentioned earlier.</p>
<p><strong>Lessons learned</strong></p>
<ul>
<li>The most important lesson of all here is to <strong>back up the data that you wish to encrypt before starting the encryption process</strong>. As shown here, if something goes wrong it might be difficult or impossible to recover your data (I was lucky).</li>
<li>You do not always need a recovery password or package to decrypt/repair a drive &#8211; just the original encryption password worked in my case (this depends on the unlock method chosen in the first place). As an aside, note that you can <strong>backup your recovery key to a Microsoft account</strong> (i.e. store it in the &#8220;cloud&#8221;)</li>
<li>Encryption can takes ages! This drive took around 8 hours.</li>
<li>The decryption process doesn&#8217;t necessarily need to hit 100% in order to get data back, especially if encryption didn&#8217;t finish in the first place (Bitlocker encrypts/decrypts on a per file basis as opposed to encrypting or decrypting an entire drive in one operation). Note that if decrypting to an image file (using &#8220;pathimagefile.img&#8221; as the OutputVolumeOrImage parameter), &#8220;partial&#8221; decryption may not succeed (I originally tried this option without success &#8211; I hit 94%, stopped decryption using cntrl+c and the image file appeared to be unusable/corrupt).</li>
<li>Multiple partitions are not required if encrypting a removal data drive. I would guess this is also the case for an internal data drive but haven&#8217;t tested this.</li>
<li>It&#8217;s <strong>much</strong> quicker to &#8220;encrypt&#8221; used space only as opposed to encrypting a full drive, especially if said drive already contains data. See the screenshot and notes below.</li>
</ul>
<p><strong>My revised (more precautious) approach to implementing BitLocker on new removable drives</strong></p>
<p>For what it&#8217;s worth, the approach I&#8217;ve selected for my personal data (which isn&#8217;t particularly sensitive) is:</p>
<ul>
<li>Backup (copy) data somewhere else and test the backup works (i.e. Try to open some files)</li>
<li>Format drive that will be encrypted using BitLocker</li>
<li>Run <a href="http://en.wikipedia.org/wiki/CHKDSK">chkdsk</a> to ensure there are no bad sectors</li>
<li>Turn on BitLocker on formatted drive, opting to encrypt &#8220;used disk space only&#8221; (see screenshot below, this is only really appropriate if encrypting a new drive)</li>
<li>Copy files back to the BitLocker-enabled drive</li>
<li>(optional) optimise drive using your favourite disk tool, e.g. PerfectDisk</li>
<li>Reboot machine and ensure you can still access files</li>
<li>Lock/unlock drive and ensure you can still access files</li>
<li>When happy remove backup files</li>
</ul>
<p><img alt="" src="/wp-content/uploads/2013/11/031713_2137_Resolvingpa4.png" /></p>
<p>This approach has worked well for me for the last week or so with no issues thus far. Having said that, I&#8217;m new to the BitLocker world so would welcome any further thoughts in the comments.</p>
<p><strong>Suggested further reading</strong></p>
<p><a href="http://technet.microsoft.com/en-us/library/ee706531(v=ws.10).aspx">How Strong Do You Want the BitLocker Protection?</a></p>
<p><a href="http://support.microsoft.com/kb/928201">How to use the BitLocker Repair Tool to help recover data from an encrypted volume in Windows Vista or in Windows Server 2008</a></p>
<p>Ben</p>
]]></content:encoded>
			<wfw:commentRss>http://www.benjaminathawes.com/2013/03/17/resolving-partial-encryption-problems-with-bitlocker/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Configuring Active Directory Import for a SharePoint 2013 User Profile Service Application using PowerShell</title>
		<link>http://www.benjaminathawes.com/2013/01/15/configuring-active-directory-import-for-a-sharepoint-2013-user-profile-service-application-using-powershell/</link>
		<pubDate>Tue, 15 Jan 2013 21:30:31 +0000</pubDate>
		<dc:creator><![CDATA[ben@bathawes.com]]></dc:creator>
				<category><![CDATA[SharePoint 2013]]></category>

		<guid isPermaLink="false">http://bathawes.com/?p=83</guid>
		<description><![CDATA[Writing an IT PRO focussed blog post on any aspect of the User Profile Service in SharePoint is tough as there is a good chance that someone like Spence Harbar will come along and write a better/more informed one. However, whilst configuring a new SharePoint 2013 environment today I found myself wondering how one automates configuration of [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Writing an IT PRO focussed blog post on any aspect of the User Profile Service in SharePoint is tough as there is a good chance that someone like <a href="http://www.harbar.net/archive/2012/07/23/sp13adi.aspx">Spence Harbar</a> will come along and write a better/more informed one. However, whilst configuring a new SharePoint 2013 environment today I found myself wondering how one automates configuration of the &#8220;new&#8221; Active Directory Import mode – there doesn&#8217;t appear to be much out there on Technet. I figured a quick post would be useful in the absence of more detailed information.<span id="more-83"></span></p>
<p>Active Directory Import is similar to the Profile import mechanism we had back in SharePoint Server 2007. It&#8217;s an awful lot easier and quicker to configure than &#8220;SharePoint Profile Synchronisation&#8221;, AKA &#8220;User Profile Synchronisation Service&#8221; (in services on server) AKA ForeFront Identity Manager (FIM) for SharePoint Server 2010. The profile import itself is also very fast in comparison <strong>but </strong>there is not feature fidelity between the two options – one significant drawback, for example is that it isn&#8217;t possible to export properties from SharePoint to AD. Anyway, I suggest you read through the other <a href="http://www.harbar.net/archive/2012/07/23/sp13adi.aspx">decent posts</a> out there on AD Import as this post isn&#8217;t meant to be an introduction to the capability.</p>
<div>
<table border="0">
<colgroup>
<col /></colgroup>
<tbody valign="top">
<tr>
<td><strong>Note</strong> that I have heard that changing from/to AD Import mode after user profiles have been imported is not a good idea. I haven&#8217;t explored the detail of this yet so for now my suggestion is &#8220;assume it&#8217;s a pain to change later&#8221;.<strong>18/04/2013 Update:</strong> although you can switch between the two different import modes via Central Admin, it will <em>appear </em>that any existing Sync connections are lost. This is because Sync connections are stored in either the UPA Sync database (if using &#8220;FIM&#8221; import mode), or in the UPA Profile DB (if using Active Directory Import). AFAIK there is no supported means of migrating Sync connections between the two databases, meaning that the upshot of all this is that <strong>you will need to re-create any existing Sync connections when switching import modes</strong>. This could be a pain if you have a &#8220;complex&#8221; Sync connection config &#8211; perhaps you have very granular AD OU selections for a large domain &#8211; especially given that <a href="http://www.harbar.net/archive/2011/07/12/332.aspx">managing Sync Connections with PowerShell has always been limited/unsupported</a> (and still is AFAIK).</p>
<table width="100%" cellspacing="0">
<tbody>
<tr>
<th rowspan="1" colspan="1">​Import mode</th>
<th rowspan="1" colspan="1">DB that stores Sync Connections​</th>
</tr>
<tr>
<th rowspan="1" colspan="1">SharePoint Profile Synchronisation (FIM)​</th>
<td>​UPA Sync</td>
</tr>
<tr>
<th rowspan="1" colspan="1">AD Import​​</th>
<td>UPA Profile​</td>
</tr>
</tbody>
</table>
<p>To illustrate this, here is the Synchronisation Connections screen after switching import modes. As this is the first time I have used SharePoint Profile Synchronisation in this case, I don&#8217;t have any connections:</p>
<p><img alt="EmptySyncConnections.PNG" src="/wp-content/uploads/2013/11/EmptySyncConnections.png" /></p>
<p>&#8230;if I switch back to AD Import, I get my Sync connection back (the connection was not deleted &#8211; it&#8217;s just that Sync connections created in AD Import mode are stored in the Profile DB, and connections created in &#8220;FIM&#8221; mode are stored in the Sync database):</p>
<p><img alt="PopulatedSyncConnections.PNG" src="/wp-content/uploads/2013/11/PopulatedSyncConnections.png" /></p>
<p>Here is the Sync connection in the <strong>ADImportDCMapping </strong>table of the UPA Profile DB (used if you are in AD Import mode):</p>
<p><img alt="ProfileDBSyncConnection.PNG" src="/wp-content/uploads/2013/11/ProfileDBSyncConnection.png" /></p>
<p>&#8230;and in case you are wondering, here is a Sync connection in the <strong>mms_management_agent </strong>table of the UPA Sync DB (used if you are in FIM mode):</p>
<p><img alt="SyncDBSyncConnection.PNG" src="/wp-content/uploads/2013/11/SyncDBSyncConnection.png" /></p>
<p>One other little nugget I can offer is that your <strong>Synchronisation Connections will not appear if the User Profile Synchronisation Service is stopped</strong> <strong>whilst in </strong><strong>SharePoint Profile Synchronisation​ / FIM mode</strong>. This is because stopping the UPS deprovisions the synchronisation service, but does not delete any data in your UPA databases. To get your connections back, you will need to re-provision (start) the User Profile Synchronisation Service if in FIM mode.</p>
<p><strong>24/04/2013 update</strong>: having reviewed a SPC 2012 session entitled &#8220;Working with User Profiles in SharePoint Server 2013&#8221; presented by Sheyi Adenouga and KC Cross Rowley​, it appears that you may also need to run the Set-SPProfileServiceApplication cmdlet with the <a href="http://technet.microsoft.com/en-us/library/ff608004.aspx">PurgeNonImportedObjects ​</a>parameter to clear up any discrepencies that may exist after switching import modes (using PowerShell):</p>
<table width="100%" cellspacing="0">
<tbody>
<tr>
<th rowspan="1" colspan="1">​​​Set-SPProfileServiceApplication $upa -GetNonImportedObjects $true<br />
Set-SPProfileServiceApplication $upa -PurgeNonImportedObjects $true​</th>
</tr>
</tbody>
</table>
<p><strong>Note </strong>that I haven&#8217;t tested this extensively, and the original point still stands &#8211; switching import modes is a bit of a pain and you should therefore plan accordingly by ensuring the selected import mode meets your requirements.</td>
</tr>
</tbody>
</table>
</div>
<p>Enabling AD Import mode can be achieved via SPCA following UPA creation within &#8220;Configure Synchronization Settings&#8221;. You can happily change the setting in the UI (although I have had occasional issues with the relevant JavaScript not firing):​</p>
<p><img alt="" src="/wp-content/uploads/2013/11/011513_2128_Configuring1.png" align="left" /></p>
<p>&nbsp;</p>
<p>However, setting the option via PowerShell does not appear to be well documented. I scanned the properties of my UPA and stumbled upon &#8220;NoILMUsed&#8221;. The top search result for that (<a href="http://support.microsoft.com/kb/2624198">Support policy regarding use of NoILMUsed property</a>) stated in essence that the property is for Microsoft internal use only (in the context of SP2010). Not a good start.</p>
<p>However, looking a little further I found this article:</p>
<p><a href="http://support.microsoft.com/kb/2758430">Only the OU setting is removed when you run the Remove-SPProfileSyncConnection cmdlet in SharePoint Server 2013</a></p>
<p>Although the context of this support article in itself is quite interesting – it looks as though removing sync connections whilst in Active Directory Import mode is problematic – there is a gem sat within the &#8220;More information&#8221; section. According to that article, the following script snippet can be used to enable AD Import mode in SharePoint Server 2013:</p>
<div>
<table border="0">
<colgroup>
<col /></colgroup>
<tbody valign="top">
<tr>
<td>$upa=Get-SPServiceApplication -Name &#8220;UserProfileServiceAppName&#8221;$upa.NoILMUsed=$true$upa.Update()</td>
</tr>
</tbody>
</table>
</div>
<p>I added this in to my UPA creation script (which is a modified version of that provided in <a href="http://books.google.co.uk/books/about/Automating_SharePoint_2010_with_Windows.html?id=rTBgroiWAesC&amp;redir_esc=y">Automating SharePoint 2010 with Windows PowerShell 2.0</a> ) and have since successfully tested the cmdlet a handful of times in SP2013 RTM.</p>
<p>Oh, and in case you are wondering, the &#8220;User Profile Synchronization Service&#8221; does <strong>not </strong>need to be started when using AD Import (hoorah!):</p>
<p><img alt="" src="/wp-content/uploads/2013/11/011513_2128_Configuring2.png" align="left" /></p>
<p>&nbsp;</p>
<p>Ben</p>
]]></content:encoded>
			</item>
		<item>
		<title>Using SPWebService.FileWriteChunkSize to turn off Shredded Storage in SharePoint 2013 RTM</title>
		<link>http://www.benjaminathawes.com/2013/01/07/using-spwebservice-filewritechunksize-to-turn-off-shredded-storage-in-sharepoint-2013-rtm/</link>
		<comments>http://www.benjaminathawes.com/2013/01/07/using-spwebservice-filewritechunksize-to-turn-off-shredded-storage-in-sharepoint-2013-rtm/#comments</comments>
		<pubDate>Mon, 07 Jan 2013 23:00:42 +0000</pubDate>
		<dc:creator><![CDATA[ben@bathawes.com]]></dc:creator>
				<category><![CDATA[SharePoint 2013]]></category>

		<guid isPermaLink="false">http://bathawes.com/?p=81</guid>
		<description><![CDATA[14/11/2013 update:​ Chris Mullendore, a Microsoft PFE has written a ​great blog that discusses both Shredded Storage and RBS. He whole-heartedly recommends using the default FileWriteChunkSize settings. I&#8217;ll leave this blog up just to illustrate that it is possible to modify this value, but it appears to be one of those &#8220;just because you can, doesn&#8217;t mean you should&#8221; settings. Over the last few weeks​ I&#8217;ve [&#8230;]]]></description>
				<content:encoded><![CDATA[<div>
<table border="0">
<tbody valign="top">
<tr>
<td><strong>14/11/2013 update:​ </strong>Chris Mullendore, a Microsoft PFE<strong> </strong>has written a ​<a href="http://blogs.msdn.com/b/mossbiz/archive/2013/09/13/shredded-storage-vs-rbs.aspx">great blog</a> that discusses both Shredded Storage and RBS. He whole-heartedly <strong>recommends using the default </strong><strong>FileWrit</strong><strong>eChunkSize settings</strong>. I&#8217;ll leave this blog up just to illustrate that it is possible to modify this value, but it appears to be one of those &#8220;just because you can, doesn&#8217;t mean you should&#8221; settings.</td>
</tr>
</tbody>
</table>
</div>
<p><span style="line-height: 1.5;">Over the last few weeks​ I&#8217;ve been looking at some of the new capabilities in SharePoint 2013 from an infrastructure perspective, focusing mainly on search and the topic of this blog post: Shredded Storage.<span id="more-81"></span></span></p>
<p>There are already a number of posts on this feature that provide a good introduction. I won&#8217;t rehash those and will instead link you to a couple of decent ones:</p>
<p><a href="http://www.sharepointpromag.com/blog/dan-holmes-viewpoint-on-sharepoint-blog-24/sharepoint-2013/sharepoint-2013-shredded-storage-144987">SharePoint 2013 Shredded Storage and The End of the World</a></p>
<p><a href="http://blogs.technet.com/b/wbaer/archive/2012/11/20/3532049.aspx">Introduction to Shredded Storage in SharePoint 2013</a></p>
<p>I&#8217;ll reserve my own opinion on Shredded Storage for now as I haven&#8217;t had sufficient time to test it. The purpose of this post is simply to demonstrate how to turn it off. That does <strong>not </strong>mean I recommend turning it off &#8211; you will need to review the benefits and drawbacks (most likely starting with the posts above) and decide whether it is appropriate for your usage scenario. For what it&#8217;s worth, I think the vast majority of collaboration sites will keep Shredded Storage <strong>on </strong>due to reduced storage cost and the IO benefits it provides whilst using versioning.</p>
<p>Turning it off is straightforward using PowerShell, but it took me a few (failed) attempts to realise that the SPWebService object needs to be updated once the FileWriteChunkSize property has been modified:</p>
<table width="100%" cellspacing="0">
<tbody>
<tr>
<th rowspan="1" colspan="1">
<div><strong> </strong></div>
<div><strong>$wa = Get-SPWebApplication </strong><a href="http://webappurl/"><span style="color: #0072bc;">http://webappurl</span></a></div>
<div><strong>$wa.WebService.FileWriteChunkSize = 1073741824</strong></div>
<div><strong>$wa.webservice.update()</strong></div>
<div><strong>​</strong></div>
</th>
</tr>
</tbody>
</table>
<p>In the example above I have set the FileWriteChunkSize to 1 GB (specified in bytes), effectively disabling Shredded Storage for the vast majority of content.</p>
<p>Just to prove this works, here are a couple of screenshots:</p>
<p><img alt="Setting FileWriteChunkSize to 1GB.png" src="/wp-content/uploads/2013/11/Setting-FileWriteChunkSize-to-1GB.png" /></p>
<p>&nbsp;</p>
<p><em>Setting FileWriteChunkSize to 1GB to prevent BLOBs from being shredded</em></p>
<p><img alt="File properties.png" src="/wp-content/uploads/2013/11/Large-BLOB-example.png" /><br />
<em>An example BLOB &#8211; in case you are wondering it&#8217;s a video I took whilst watching sumo wrestling in Japan <img src="http://www.benjaminathawes.com/wp-includes/images/smilies/simple-smile.png" alt=":-)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></em><br />
<img alt="Non-shredded BLOB.png" src="/wp-content/uploads/2013/11/Non-shredded-BLOB-in-SQL.png" /></p>
<p><em> Querying SQL to show that the BLOB has not been shredded</em></p>
<p>For clarity, I used SharePoint Server 2013, version 15.0.4420.1017 for this test.</p>
<p>I find it slightly troubling that the original <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spfileoperationsetting.aspx">SPFileOperationSetting </a>enumeration was seemingly disabled for the RTM release given that it supposedly worked in the Release Preview (I have not verified this). It leaves me wondering whether Microsoft will allow us to toggle Shredded Storage on/off in future releases.</p>
<p><strong>For now, we have a choice as to whether content is shredded which is a good thing.</strong> Obviously that means that there is more to think about in terms of storage when compared to SharePoint 2010, especially if considering BLOB externalisation (i.e. RBS). This may well be the subject of a future post.</p>
<p>Ben</p>
]]></content:encoded>
			<wfw:commentRss>http://www.benjaminathawes.com/2013/01/07/using-spwebservice-filewritechunksize-to-turn-off-shredded-storage-in-sharepoint-2013-rtm/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
