<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>SharePoint Config</title>
	
	<link>http://www.sharepointconfig.com</link>
	<description>Ari Bakker's thoughts on customising and configuring SharePoint</description>
	<lastBuildDate>Fri, 17 May 2013 11:26:50 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/AriBakker" /><feedburner:info uri="aribakker" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>How to: Create a Simple SharePoint 2013 People Directory</title>
		<link>http://feedproxy.google.com/~r/AriBakker/~3/CHRO-wacquE/</link>
		<comments>http://www.sharepointconfig.com/2013/05/how-to-create-a-simple-sharepoint-2013-people-directory/#comments</comments>
		<pubDate>Fri, 17 May 2013 10:00:36 +0000</pubDate>
		<dc:creator>Ari Bakker</dc:creator>
				<category><![CDATA[2013]]></category>
		<category><![CDATA[Configuration]]></category>

		<guid isPermaLink="false">http://www.sharepointconfig.com/?p=1162</guid>
		<description><![CDATA[A people directory can be useful if you want to list all the people in an organisation without users having to enter a search query. Users can then narrow down the list using filters such as Department or Job Title to narrow the results. This is really easy to set up using the default SharePoint 2013 search web parts and doesn’t require writing a single line of code. An example of what this can look like is shown below: 
 
<a href="http://www.sharepointconfig.com/2013/05/how-to-create-a-simple-sharepoint-2013-people-directory/"><img class="excerpt" title="sharepoint-2013-people-directory" src="http://www.sharepointconfig.com/wp-content/uploads/2013/05/sharepoint-people-directory_thumb.png" border="0" alt="sharepoint-2013-people-directory" width="644" height="484" /></a><p><a href="http://www.sharepointconfig.com/2013/05/how-to-create-a-simple-sharepoint-2013-people-directory/">How to: Create a Simple SharePoint 2013 People Directory</a> is a post from: <a href="http://www.sharepointconfig.com">SharePoint Config</a></p>
]]></description>
				<content:encoded><![CDATA[<p>I previously posted on <a href="http://www.sharepointconfig.com/2011/05/how-to-create-a-simple-sharepoint-2010-people-directory/">how to create a simple people directory for SharePoint 2010</a>. The process is slightly different in SharePoint 2013 due to the substantial changes in the search functionality so the updated steps are shown in this post.</p>
<p>A people directory can be useful if you want to list all the people in an organisation without users having to enter a search query. Users can then narrow down the list using filters such as Department or Job Title to narrow the results. This is really easy to set up using the default SharePoint 2013 search web parts and doesn’t require writing a single line of code. An example of what this can look like is shown below:</p>
<p><a href="http://www.sharepointconfig.com/wp-content/uploads/2013/05/sharepoint-people-directory.png"><img style="float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;margin-right: auto;border: 0px" title="sharepoint people directory" alt="sharepoint people directory" src="http://www.sharepointconfig.com/wp-content/uploads/2013/05/sharepoint-people-directory_thumb.png" width="644" height="484" border="0" /></a></p>
<p>Especially when the organisation only contains a few hundred people this can help users discover people in the organisation without necessarily knowing their names. The steps to create this are as follow (assuming the user profile and search services are running successfully):</p>
<ol>
<li>Assuming you have an enterprise search center set up the first step to create the people directory is to enable the people search page layout so we can create a people search results page. This can be done by navigating to the Site Settings &gt; Look and Feel | Page layouts and site templates page and selecting ‘(Welcome Page) Search People’ in the Page Layouts section.<br />
<img style="float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;margin-right: auto;border: 0px" title="sharepoint available page layouts search" alt="sharepoint available page layouts search" src="http://www.sharepointconfig.com/wp-content/uploads/2013/05/sharepoint-available-page-layouts-search.png" width="644" height="218" border="0" /></li>
<li>The next step is to navigate to the pages library and select New Document &gt; Page from the ribbon.<br />
<a href="http://www.sharepointconfig.com/wp-content/uploads/2013/05/sharepoint-new-page.png"><img style="float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;margin-right: auto;border: 0px" title="sharepoint new page" alt="sharepoint new page" src="http://www.sharepointconfig.com/wp-content/uploads/2013/05/sharepoint-new-page_thumb.png" width="386" height="364" border="0" /></a></li>
<li>On the create page screen select the Search People page layout to create a page that contains the people search results web parts.<br />
<a href="http://www.sharepointconfig.com/wp-content/uploads/2013/05/sharepoint-create-people-results-page.png"><img style="float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;margin-right: auto;border: 0px" title="sharepoint create people results page" alt="sharepoint create people results page" src="http://www.sharepointconfig.com/wp-content/uploads/2013/05/sharepoint-create-people-results-page_thumb.png" width="644" height="484" border="0" /></a></li>
<li>The standard search result web part does not show any results unless a query is specified. To get all people to show up by default we need to modify the query used by the People Search Core Results web part. This can be done by clicking the ‘Change Query’ button in the web part properties and adding a property filter that returns all people. To do this we can select the property ‘contentclass’ and enter the manual value ‘spspeople’.<br />
<a href="http://www.sharepointconfig.com/wp-content/uploads/2013/05/sharepoint-search-build-query.png"><img style="float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;margin-right: auto;border: 0px" title="sharepoint search build query" alt="sharepoint search build query" src="http://www.sharepointconfig.com/wp-content/uploads/2013/05/sharepoint-search-build-query_thumb.png" width="644" height="484" border="0" /></a></li>
<li>We now have a list of people that will be displayed as soon as the user navigates to our custom people results page. By default we also have some refinements that appear if matching metadata is found within the result set. These are the Department, Job Title, Keywords and Office Location columns. We can change these to show other metadata properties that are defined in our search centre by selecting the ‘Choose refiners’ option on the refinement web part. Note that the managed property must have the ‘Refinable’ option selected in the search schema for it to be available in this list.<br />
<a href="http://www.sharepointconfig.com/wp-content/uploads/2013/05/sharepoint-search-refinements.png"><img style="float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;margin-right: auto;border: 0px" title="sharepoint search refinements" alt="sharepoint search refinements" src="http://www.sharepointconfig.com/wp-content/uploads/2013/05/sharepoint-search-refinements_thumb.png" width="636" height="228" border="0" /></a></li>
</ol>
<p>&nbsp;</p>
<h3>Adding Sorting by Last Name</h3>
<p>Adding additional sort options is much easier than in SharePoint 2010. To add a custom sort option such as Last Name follow the steps below:</p>
<ol>
<li>Ensure that the managed property you want to sort by has the Sortable option enabled in the search schema. To do this navigate to the Search Service Application &gt; Search Schema, click the LastName managed property and select the Sortable: &#8216;Yes – active’ option. Note you will need a full crawl for this to take effect.<br />
<a href="http://www.sharepointconfig.com/wp-content/uploads/2013/05/sharepoint-2013-managed-property-sortable.png"><img style="float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;margin-right: auto;border: 0px" title="sharepoint 2013 managed property sortable" alt="sharepoint 2013 managed property sortable" src="http://www.sharepointconfig.com/wp-content/uploads/2013/05/sharepoint-2013-managed-property-sortable_thumb.png" width="644" height="126" border="0" /></a></li>
<li>On the search results page edit the People Search Core Results web part, check the ‘Show sort dropdown’ option and enter the following text:<br />
<code>[{"name":"First name (A-Z)","sorts":[{"p":"FirstName","d":0}]},{"name":"First name (Z-A)","sorts":[{"p":"FirstName","d":1}]},{"name":"Last name (A-Z)","sorts":[{"p":"LastName","d":0}]},{"name":"Last name (Z-A)","sorts":[{"p":"LastName","d":1}]},{"name":"Social distance","sorts":[]}]</code><a href="http://www.sharepointconfig.com/wp-content/uploads/2013/05/sharepoint-search-sorting.png"><img style="float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;margin-right: auto;border: 0px" title="sharepoint search sorting" alt="sharepoint search sorting" src="http://www.sharepointconfig.com/wp-content/uploads/2013/05/sharepoint-search-sorting_thumb.png" width="242" height="382" border="0" /></a></li>
<li>You should now be able to sort by first or last name in alphabetical order either A-Z or Z-A.<br />
<img style="float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;margin-right: auto;border: 0px" title="sharepoint search people sorting" alt="sharepoint search people sorting" src="http://www.sharepointconfig.com/wp-content/uploads/2013/05/sharepoint-search-people-sorting.png" width="530" height="295" border="0" /></li>
</ol>
<p>&nbsp;</p>
<h3>Using a Table Based Layout</h3>
<p>Another option for the people directory is to use a table based layout with column headers for properties. In SharePoint 2013 this can be done using Display Templates. In this case we need to use two display templates – a control template for the table header, and a item template for each search result item. The steps to implement this are shown below.</p>
<ol>
<li>The first step is to add the display templates to the masterpage gallery by selecting Site Settings &gt; Master Pages and Page Layouts &gt; Display Templates &gt; Search and upload the two html files from the following .zip archive.<br />
<a href="http://www.sharepointconfig.com/downloadPeopleDirectoryDisplayTemplates.zip">PeopleDirectoryDisplayTemplates.zip</a></li>
<li>The next step is to edit the search core results web part and in the Display Template section set the Results Control Display Template to ‘Table Result’ and the Item Display Template to ‘People Table Item’.<br />
<a href="http://www.sharepointconfig.com/wp-content/uploads/2013/05/sharepoint-search-display-template-selection.png"><img style="float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;margin-right: auto;border: 0px" title="sharepoint search display template selection" alt="sharepoint search display template selection" src="http://www.sharepointconfig.com/wp-content/uploads/2013/05/sharepoint-search-display-template-selection_thumb.png" width="242" height="442" border="0" /></a></li>
<li>You should now see the results displayed as a table based layout as shown below:</li>
</ol>
<p><a href="http://www.sharepointconfig.com/wp-content/uploads/2013/05/sharepoint-people-directory-table.png"><img style="float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;padding-right: 0px;margin-right: auto;border: 0px" title="sharepoint people directory table" alt="sharepoint people directory table" src="http://www.sharepointconfig.com/wp-content/uploads/2013/05/sharepoint-people-directory-table_thumb.png" width="644" height="484" border="0" /></a></p>
<p>If you have worked with previous versions of SharePoint you can see that in SharePoint 2013 the search features are much richer and easier to work with. There are also a number of new features such as query rules and extensibility options such as customising the hover panel that enhance the end user search experience.</p>
<p><a href="http://www.sharepointconfig.com/2013/05/how-to-create-a-simple-sharepoint-2013-people-directory/">How to: Create a Simple SharePoint 2013 People Directory</a> is a post from: <a href="http://www.sharepointconfig.com">SharePoint Config</a></p>
     <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AriBakker?a=CHRO-wacquE:ItM1wBkZCzk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=CHRO-wacquE:ItM1wBkZCzk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AriBakker?i=CHRO-wacquE:ItM1wBkZCzk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=CHRO-wacquE:ItM1wBkZCzk:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=CHRO-wacquE:ItM1wBkZCzk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AriBakker?i=CHRO-wacquE:ItM1wBkZCzk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=CHRO-wacquE:ItM1wBkZCzk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AriBakker/~4/CHRO-wacquE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sharepointconfig.com/2013/05/how-to-create-a-simple-sharepoint-2013-people-directory/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<feedburner:origLink>http://www.sharepointconfig.com/2013/05/how-to-create-a-simple-sharepoint-2013-people-directory/</feedburner:origLink></item>
		<item>
		<title>I’m speaking at the SharePoint 2013 Evolution Conference</title>
		<link>http://feedproxy.google.com/~r/AriBakker/~3/D2RKPnfZOD0/</link>
		<comments>http://www.sharepointconfig.com/2013/04/im-speaking-at-the-sharepoint-2013-evolution-conference/#comments</comments>
		<pubDate>Sat, 13 Apr 2013 10:44:29 +0000</pubDate>
		<dc:creator>Ari Bakker</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.sharepointconfig.com/?p=1134</guid>
		<description><![CDATA[Next week I’m speaking at the <a href="http://www.sharepointevolutionconference.com/index.html">SharePoint 2013 evolution conference</a> in London. I’m co-presenting two sessions on upgrading to SharePoint 2013 with my friend Chandima and individually presenting another session on a SharePoint 2010 extranet project I worked on. 

<a href="http://www.sharepointconfig.com/2013/04/im-speaking-at-the-sharepoint-2013-evolution-conference/"><img width="583" height="484" border="0" alt="infocentre-homepage" src="http://www.sharepointconfig.com/wp-content/uploads/2013/04/GSMA_design_MASTERhome.jpg" title="infocentre homepage" style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;"/></a><p><a href="http://www.sharepointconfig.com/2013/04/im-speaking-at-the-sharepoint-2013-evolution-conference/">I&#8217;m speaking at the SharePoint 2013 Evolution Conference</a> is a post from: <a href="http://www.sharepointconfig.com">SharePoint Config</a></p>
]]></description>
				<content:encoded><![CDATA[<p>Next week I’m speaking at the <a href="http://www.sharepointevolutionconference.com/index.html">SharePoint 2013 evolution conference</a> in London. I’m co-presenting two sessions on upgrading to SharePoint 2013 with my friend Chandima and individually presenting another session on a SharePoint 2010 extranet project I worked on. Details of the sessions are shown below.</p>
<h3>IT112/IT113 Upgrading SharePoint</h3>
<p>In these sessions on upgrading to SharePoint 2013 we will walk through the various upgrade options and how to carry out the server preparation and installations for your upgrade testing deployments. We will use a real world dataset to verify upgrade compatibility and troubleshoot some common upgrade issues you may encounter and how to progress forward. This session is for IT Professionals, System Administrators who want to know how to approach and carry out an upgrade/migration to 2013. I’ll also talk about how to upgrade custom developed SharePoint solutions built for earlier versions of SharePoint.</p>
<h3>COM711 Case study: Industry wide collaboration</h3>
<p>Discover how we used SharePoint as a platform to facilitate collaboration between hundreds of different telecom organisations worldwide. The project involved building a LinkedIn like website that contains company and user details for the mobile industry. In a similar way to LinkedIn, users can also request to join groups and communicate and collaborate on certain topics such as Roaming to Fraud. The project also involved many other features specific to the mobile industry such as the ability to to store mobile network information and document management features that allow groups to work on official standards documents for the mobile industry.</p>
<p>This session will include a run through of the functional areas of the system and an explanation of how each area was built from a technical perspective. We will also cover some of the challenges we faced when building a system that is used by over 800 different organisations in over 200 countries around the globe.</p>
<p>A couple of pages from the site are shown below. The image below shows the homepage of the extranet including document and people feeds, personalised lists of contacts, meetings and task information.</p>
<p><img style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" title="GSMA_design_MASTER-home" alt="GSMA_design_MASTER-home" src="http://www.sharepointconfig.com/wp-content/uploads/2013/04/GSMA_design_MASTERhome.jpg" width="583" height="484" border="0" /></p>
<p>We also made many enhancements to the document management features. The image below shows the landing page for an official document. As well as metadata about the document and files to download the page contains a list of related official documents and the status of change requests that relate to changes to the document.</p>
<p><a href="http://www.sharepointconfig.com/wp-content/uploads/2013/04/GSMA_design_MASTEROD.jpg"><img style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" title="GSMA_design_MASTER-OD" alt="GSMA_design_MASTER-OD" src="http://www.sharepointconfig.com/wp-content/uploads/2013/04/GSMA_design_MASTEROD_thumb.jpg" width="583" height="484" border="0" /></a></p>
<p>I’m really looking forward to the conference and hope to see some of you there!</p>
<p><a href="http://www.sharepointconfig.com/2013/04/im-speaking-at-the-sharepoint-2013-evolution-conference/">I&#8217;m speaking at the SharePoint 2013 Evolution Conference</a> is a post from: <a href="http://www.sharepointconfig.com">SharePoint Config</a></p>
     <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AriBakker?a=D2RKPnfZOD0:8QEql-E1UUM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=D2RKPnfZOD0:8QEql-E1UUM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AriBakker?i=D2RKPnfZOD0:8QEql-E1UUM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=D2RKPnfZOD0:8QEql-E1UUM:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=D2RKPnfZOD0:8QEql-E1UUM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AriBakker?i=D2RKPnfZOD0:8QEql-E1UUM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=D2RKPnfZOD0:8QEql-E1UUM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AriBakker/~4/D2RKPnfZOD0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sharepointconfig.com/2013/04/im-speaking-at-the-sharepoint-2013-evolution-conference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.sharepointconfig.com/2013/04/im-speaking-at-the-sharepoint-2013-evolution-conference/</feedburner:origLink></item>
		<item>
		<title>SharePoint 2010 People Directory Part 3 – Sorting</title>
		<link>http://feedproxy.google.com/~r/AriBakker/~3/x4zBi_6U1lw/</link>
		<comments>http://www.sharepointconfig.com/2013/02/sharepoint-2010-people-directory-part-3-sorting/#comments</comments>
		<pubDate>Tue, 05 Feb 2013 13:11:17 +0000</pubDate>
		<dc:creator>Ari Bakker</dc:creator>
				<category><![CDATA[2010]]></category>
		<category><![CDATA[Search]]></category>

		<guid isPermaLink="false">http://www.sharepointconfig.com/?p=1111</guid>
		<description><![CDATA[I’ve had several requests to show how to implement sorting following my previous posts on creating a simple SharePoint 2010 people directory and using a table based layout for a SharePoint 2010 people directory. This post shows how to implement custom sorting for the people directory so you can sort by first name, last name [...]<p><a href="http://www.sharepointconfig.com/2013/02/sharepoint-2010-people-directory-part-3-sorting/">SharePoint 2010 People Directory Part 3 &#8211; Sorting</a> is a post from: <a href="http://www.sharepointconfig.com">SharePoint Config</a></p>
]]></description>
				<content:encoded><![CDATA[<p>I’ve had several requests to show how to implement sorting following my previous posts on <a href="http://www.sharepointconfig.com/2011/05/how-to-create-a-simple-sharepoint-2010-people-directory/">creating a simple SharePoint 2010 people directory</a> and <a href="http://www.sharepointconfig.com/2011/06/create-a-sharepoint-2010-people-directory-with-a-table-layout/">using a table based layout for a SharePoint 2010 people directory</a>. This post shows how to implement custom sorting for the people directory so you can sort by first name, last name or any other managed property.</p>
<p><img style="float: none; margin-left: auto; margin-right: auto; border: 0px;" title="sharepoint-people-directory-sort" alt="sharepoint-people-directory-sort" src="http://www.sharepointconfig.com/wp-content/uploads/2013/02/sharepointpeopledirectorysort.png" width="644" height="484" border="0" /></p>
<h3>Step 1: Extend the search core results web part to support sorting</h3>
<p>There are two search core results web parts that are capable of displaying list of people:</p>
<ul>
<li>Search Core Results – provides a generic way of displaying search results and supports sorting by relevance and modified date</li>
<li>People Search Core Results – provides additional people based information in search results and supports sorting by relevance, social distance and name (a-z only)</li>
</ul>
<p>As both the web parts only allow a fixed set of sorting options we need to create a new web part if we want to provide sorting options such as by last name or by first name (z-a). The easiest way to do this is to inherit from an existing web part and as the people search core results is sealed we can only do this by inheriting from the search core results web part.</p>
<p>One benefit of using the search core results web part is that we are not limited to displaying lists of people. We can use this web part to display sortable lists of documents, list items, sites or any other information in the search index. This is a very useful technique for aggregating content from across several site collections or across a large number of sites where web parts such as the content query web part run into performance problems (in fact SharePoint 2013 introduces the content by search web part which is based on the same principals we use here).</p>
<p>In the class that extends the search core results web part we can add code that changes the order by clause of the search query. <a href="http://www.insidesharepoint.net/">Bart-Jan Hoeijmakers</a> has an excellent post on <a href="http://www.insidesharepoint.net/post/2011/02/16/Creating-a-sortable-CoreResultsWebPart-in-SharePoint-2010.aspx">Creating a sortable CoreResultsWebPart in SharePoint 2010</a> that shows how to do this. I’ve extended his web part in the example below to changes the sort order based on query string parameters, or properties of the web part if there are no parameters passed in.</p>
<pre class="csharpcode">using System;
using System.ComponentModel;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.Office.Server.Search.WebControls;
using Query = Microsoft.Office.Server.Search.Query;

namespace Ari.SharePointSearch.WebParts
{
    [ToolboxItemAttribute(false)]
    public class SortableCoreResults : CoreResultsWebPart
    {
        [Personalizable(PersonalizationScope.Shared)]
        [WebBrowsable(true)]
        [WebDisplayName("Default managed property")]
        [WebDescription("Sort by this managed property by default")]
        [Category("Sorting Properties")]
        public string OrderByProperty { get; set; }

        [Personalizable(PersonalizationScope.Shared)]
        [WebBrowsable(true)]
        [WebDisplayName("Default direction")]
        [WebDescription("Default sorting direction")]
        [Category("Sorting Properties")]
        public Microsoft.Office.Server.Search.Query.SortDirection SortDirection { get; set; }

        /// &lt;summary&gt;
        /// Runs the base configuration then adds a custom sort property
        /// &lt;/summary&gt;
        protected override void ConfigureDataSourceProperties()
        {
            // only run when we are showing search results (e.g. not the search action links)
            if (this.ShowSearchResults)
            {
                try
                {
                    // run the base code
                    base.ConfigureDataSourceProperties();

                    // get the sorting parameters off the query string
                    string orderByProperty = this.Context.Request.QueryString["v1"];
                    string sortDir = this.Context.Request.QueryString["SortDir"];

                    // if none set use the defaults
                    if (string.IsNullOrEmpty(orderByProperty))
                        orderByProperty = OrderByProperty;

                    Query.SortDirection sortDirection = SortDirection;

                    if (!string.IsNullOrEmpty(sortDir) &amp;&amp; sortDir.ToLower() == "desc")
                        sortDirection = Query.SortDirection.Descending;
                    else if (!string.IsNullOrEmpty(sortDir) &amp;&amp; sortDir.ToLower() == "asc")
                        sortDirection = Query.SortDirection.Ascending;

                    CoreResultsDatasource dataSource = this.DataSource as CoreResultsDatasource;

                    // if we have an orderByProperty then modify the search query sort order
                    if (!string.IsNullOrEmpty(orderByProperty))
                    {
                        dataSource.SortOrder.Clear();
                        dataSource.SortOrder.Add(orderByProperty, sortDirection);
                    }
                }
                catch (Exception ex)
                {
                    // implement exception handling here</pre>
<pre class="csharpcode">                }
            }
        }

        protected override void ModifyXsltArgumentList(Microsoft.SharePoint.WebPartPages.ArgumentClassWrapper argList)
        {
            base.ModifyXsltArgumentList(argList);

            // add a parameter with the current URL
            argList.AddParameter("CurrentUrl", string.Empty, HttpContext.Current.Request.Url.PathAndQuery);
        }
    }
}</pre>
<p><!--<br />
.csharpcode, .csharpcode pre<br />
{<br />
font-size: small;<br />
color: black;<br />
font-family: consolas, "Courier New", courier, monospace;<br />
background-color: #ffffff;<br />
/*white-space: pre;*/<br />
}<br />
.csharpcode pre { margin: 0em; }<br />
.csharpcode .rem { color: #008000; }<br />
.csharpcode .kwrd { color: #0000ff; }<br />
.csharpcode .str { color: #006080; }<br />
.csharpcode .op { color: #0000c0; }<br />
.csharpcode .preproc { color: #cc6633; }<br />
.csharpcode .asp { background-color: #ffff00; }<br />
.csharpcode .html { color: #800000; }<br />
.csharpcode .attr { color: #ff0000; }<br />
.csharpcode .alt<br />
{<br />
background-color: #f4f4f4;<br />
width: 100%;<br />
margin: 0em;<br />
}<br />
.csharpcode .lnum { color: #606060; }<br />
-->This web part now lets us set a default sort option by passing in parameters on the query string. For example if we load the page the web part is on with parameters such as peopledirectory.aspx?v1=LastName&amp;SortDir=asc the web part will sort the results by last name A-Z.</p>
<p>We can also set the default sorting option by using the sorting properties that are shown when editing the web part. This will be used to sort the results when the query string parameters are not present.</p>
<p><img style="float: none; margin-left: auto; margin-right: auto; border: 0px;" title="sharepoint-search-results-sorting-properties" alt="sharepoint-search-results-sorting-properties" src="http://www.sharepointconfig.com/wp-content/uploads/2013/02/sharepointsearchresultssortingproperties.png" width="231" height="219" border="0" /></p>
<h3>Step 2: Extend the search results XSLT to render additional sorting options</h3>
<p><img style="margin-left: 0px; margin-right: 0px; border: 0px;" title="sharepoint-people-directory-sort-dropdown" alt="sharepoint-people-directory-sort-dropdown" src="http://www.sharepointconfig.com/wp-content/uploads/2013/02/sharepointpeopledirectorysortdropdown.png" width="304" height="109" align="right" border="0" /> The second step is to change the XSLT that renders the sort by drop down to include additional sorting options. When a different sort option is selected the property and the direction (i.e. ascending or descending) will be passed on the query string to the core results web part we created in step 1.</p>
<p>I’ve included an example of how to add first name and last name sorts both ascending (a-z) and descending (z-a) below:</p>
<pre class="csharpcode">        &lt;xsl:if test="$ShowDropDown = 'true'"&gt;
          &lt;xsl:value-of select="$SortBy" /&gt;
          &lt;select id="dropdown" title="{$SortOptions}" onchange="PostToUrl(this.value)" class="srch-dropdown"&gt;
            &lt;xsl:call-template name="AddSortOption"&gt;
              &lt;xsl:with-param name="DisplayName"&gt;First name (A-Z)&lt;/xsl:with-param&gt;
              &lt;xsl:with-param name="ManagedProperty"&gt;FirstName&lt;/xsl:with-param&gt;
              &lt;xsl:with-param name="Direction"&gt;Asc&lt;/xsl:with-param&gt;
            &lt;/xsl:call-template&gt;
            &lt;xsl:call-template name="AddSortOption"&gt;
              &lt;xsl:with-param name="DisplayName"&gt;First name (Z-A)&lt;/xsl:with-param&gt;
              &lt;xsl:with-param name="ManagedProperty"&gt;FirstName&lt;/xsl:with-param&gt;
              &lt;xsl:with-param name="Direction"&gt;Desc&lt;/xsl:with-param&gt;
            &lt;/xsl:call-template&gt;
            &lt;xsl:call-template name="AddSortOption"&gt;
              &lt;xsl:with-param name="DisplayName"&gt;Last name (A-Z)&lt;/xsl:with-param&gt;
              &lt;xsl:with-param name="ManagedProperty"&gt;LastName&lt;/xsl:with-param&gt;
              &lt;xsl:with-param name="Direction"&gt;Asc&lt;/xsl:with-param&gt;
            &lt;/xsl:call-template&gt;
            &lt;xsl:call-template name="AddSortOption"&gt;
              &lt;xsl:with-param name="DisplayName"&gt;Last name (Z-A)&lt;/xsl:with-param&gt;
              &lt;xsl:with-param name="ManagedProperty"&gt;LastName&lt;/xsl:with-param&gt;
              &lt;xsl:with-param name="Direction"&gt;Desc&lt;/xsl:with-param&gt;
            &lt;/xsl:call-template&gt;
          &lt;/select&gt;
        &lt;/xsl:if&gt;</pre>
<p><!--<br />
.csharpcode, .csharpcode pre<br />
{<br />
font-size: small;<br />
color: black;<br />
font-family: consolas, "Courier New", courier, monospace;<br />
background-color: #ffffff;<br />
/*white-space: pre;*/<br />
}<br />
.csharpcode pre { margin: 0em; }<br />
.csharpcode .rem { color: #008000; }<br />
.csharpcode .kwrd { color: #0000ff; }<br />
.csharpcode .str { color: #006080; }<br />
.csharpcode .op { color: #0000c0; }<br />
.csharpcode .preproc { color: #cc6633; }<br />
.csharpcode .asp { background-color: #ffff00; }<br />
.csharpcode .html { color: #800000; }<br />
.csharpcode .attr { color: #ff0000; }<br />
.csharpcode .alt<br />
{<br />
background-color: #f4f4f4;<br />
width: 100%;<br />
margin: 0em;<br />
}<br />
.csharpcode .lnum { color: #606060; }<br />
-->This relies on a couple of helper templates to create the hyperlink containing the relevant query string parameters. These templates are shown below:</p>
<pre class="csharpcode">  &lt;xsl:template name="AddSortOption"&gt;
    &lt;xsl:param name="DisplayName"/&gt;
    &lt;xsl:param name="ManagedProperty"/&gt;
    &lt;xsl:param name="Direction"/&gt;

    &lt;xsl:variable name="UrlWithSortProperty"&gt;
      &lt;xsl:call-template name="ReplaceQsParameter"&gt;
        &lt;xsl:with-param name="URL" select="$CurrentUrl"/&gt;
        &lt;xsl:with-param name="ParamName"&gt;v1=&lt;/xsl:with-param&gt;
        &lt;xsl:with-param name="ParamValue" select="$ManagedProperty"/&gt;
      &lt;/xsl:call-template&gt;
    &lt;/xsl:variable&gt;

    &lt;xsl:variable name="UrlWithSortAndOrderProperties"&gt;
      &lt;xsl:call-template name="ReplaceQsParameter"&gt;
        &lt;xsl:with-param name="URL" select="$UrlWithSortProperty"/&gt;
        &lt;xsl:with-param name="ParamName"&gt;SortDir=&lt;/xsl:with-param&gt;
        &lt;xsl:with-param name="ParamValue" select="$Direction"/&gt;
      &lt;/xsl:call-template&gt;
    &lt;/xsl:variable&gt;

    &lt;option value="{$UrlWithSortAndOrderProperties}"&gt;
      &lt;xsl:if test="$UrlWithSortAndOrderProperties = $CurrentUrl"&gt;
        &lt;xsl:attribute name="selected"&gt;selected&lt;/xsl:attribute&gt;
      &lt;/xsl:if&gt;
      &lt;xsl:value-of select="$DisplayName"/&gt;
    &lt;/option&gt;

  &lt;/xsl:template&gt;

  &lt;xsl:template name="ReplaceQsParameter"&gt;
    &lt;xsl:param name="URL"/&gt;
    &lt;xsl:param name="ParamName"/&gt;
    &lt;xsl:param name="ParamValue"/&gt;
    &lt;xsl:choose&gt;
      &lt;xsl:when test="contains($URL, $ParamName)"&gt;
        &lt;xsl:variable name="Before" select="substring-before($URL, $ParamName)"/&gt;
        &lt;xsl:variable name="After" select="substring-after(substring-after($URL, $ParamName), '&amp;amp;')"/&gt;
        &lt;xsl:choose&gt;
          &lt;xsl:when test="$After = ''"&gt;
            &lt;xsl:value-of select="concat($Before, $ParamName, $ParamValue)"/&gt;
          &lt;/xsl:when&gt;
          &lt;xsl:otherwise&gt;
            &lt;xsl:value-of select="concat($Before, $ParamName, $ParamValue, '&amp;amp;', $After)"/&gt;
          &lt;/xsl:otherwise&gt;
        &lt;/xsl:choose&gt;
      &lt;/xsl:when&gt;
      &lt;xsl:when test="contains($URL, '?')"&gt;
        &lt;xsl:value-of select="concat($URL, '&amp;amp;', $ParamName, $ParamValue)"/&gt;
      &lt;/xsl:when&gt;
      &lt;xsl:otherwise&gt;
        &lt;xsl:value-of select="concat($URL, '?', $ParamName, $ParamValue)"/&gt;
      &lt;/xsl:otherwise&gt;
    &lt;/xsl:choose&gt;
  &lt;/xsl:template&gt;</pre>
<p><!--<br />
.csharpcode, .csharpcode pre<br />
{<br />
font-size: small;<br />
color: black;<br />
font-family: consolas, "Courier New", courier, monospace;<br />
background-color: #ffffff;<br />
/*white-space: pre;*/<br />
}<br />
.csharpcode pre { margin: 0em; }<br />
.csharpcode .rem { color: #008000; }<br />
.csharpcode .kwrd { color: #0000ff; }<br />
.csharpcode .str { color: #006080; }<br />
.csharpcode .op { color: #0000c0; }<br />
.csharpcode .preproc { color: #cc6633; }<br />
.csharpcode .asp { background-color: #ffff00; }<br />
.csharpcode .html { color: #800000; }<br />
.csharpcode .attr { color: #ff0000; }<br />
.csharpcode .alt<br />
{<br />
background-color: #f4f4f4;<br />
width: 100%;<br />
margin: 0em;<br />
}<br />
.csharpcode .lnum { color: #606060; }<br />
-->I&#8217;ve also modified the XSLT to display the results in a table based layout as per my previous post on <a href="http://www.sharepointconfig.com/2011/06/create-a-sharepoint-2010-people-directory-with-a-table-layout/">creating a SharePoint 2010 people directory with a table based layout</a>.</p>
<p>If you want the complete code packaged up you can <a href="http://www.sharepointconfig.com/downloadAri.SharePointSearch.zip">download the solution package for the search core results web part</a>. Note this is a farm solution as the search core results web part cannot be extended using a sandboxed solution.</p>
<p>Once you have deployed the solution the steps below can be used to add the sortable search results web part to a search results page:</p>
<ol>
<li>Activate the &#8216;Sortable Core Results&#8217; site collection feature</li>
<li>Assuming you have an enterprise search center set up the next step is to create a new search results page by selecting Site Actions &gt; New Page from the search site.</li>
<li>On the search results page delete the Search Core Results web part</li>
<li>In the bottom web part zone click ‘Add a Web Part’ and select the ‘Sortable Core Results’ web part from the Search category</li>
<li>Delete the Search Action Links web part</li>
<li>In the middle lower right web part zone click ‘Add a Web Part’ and select the ‘Sortable Core Results’ web part</li>
<li>Modify the sortable core results web part in the middle right zone and under the miscellaneous section deselect ‘show search results’ and select ‘show action links’<img style="float: none; margin-left: auto; margin-right: auto; border: 0px;" title="sharepoint-search-show-action-links-property" alt="sharepoint-search-show-action-links-property" src="http://www.sharepointconfig.com/wp-content/uploads/2013/02/sharepointsearchshowactionlinksproperty.png" width="231" height="193" border="0" /></li>
</ol>
<p>You should now have a page that displays a list people with a drop down that allows users to sort by first name or last name A-Z or Z-A.</p>
<p><img style="float: none; margin-left: auto; margin-right: auto; border: 0px;" title="sharepoint-people-directory-sort" alt="sharepoint-people-directory-sort" src="http://www.sharepointconfig.com/wp-content/uploads/2013/02/sharepointpeopledirectorysort1.png" width="644" height="484" border="0" /></p>
<p>The example solution uses a table based layout but it is also possible to use a layout similar to the people search results by changing the XSLT file used to render the results.</p>
<p><a href="http://www.sharepointconfig.com/downloadAri.SharePointSearch.zip">Download the solution package for the search core results web part</a></p>
<p>Additional resources</p>
<ul>
<li><a href="http://www.insidesharepoint.net/post/2011/02/16/Creating-a-sortable-CoreResultsWebPart-in-SharePoint-2010.aspx">Creating a sortable CoreResultsWebPart in SharePoint 2010</a></li>
<li><a href="http://jeffreypaarhuis.com/2012/01/18/make-core-results-web-part-sortable-on-other-columns/">Make Core Results Web Part Sortable on other columns</a></li>
<li><a href="http://www.sharepointconfig.com/2011/05/how-to-create-a-simple-sharepoint-2010-people-directory/">How to: Create a Simple SharePoint 2010 People Directory</a></li>
<li><a href="http://www.sharepointconfig.com/2011/06/create-a-sharepoint-2010-people-directory-with-a-table-layout/">SharePoint 2010 People Directory Part 2 – Table Layout</a></li>
</ul>
<p><a href="http://www.sharepointconfig.com/2013/02/sharepoint-2010-people-directory-part-3-sorting/">SharePoint 2010 People Directory Part 3 &#8211; Sorting</a> is a post from: <a href="http://www.sharepointconfig.com">SharePoint Config</a></p>
     <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AriBakker?a=x4zBi_6U1lw:A-CnHlzUt_I:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=x4zBi_6U1lw:A-CnHlzUt_I:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AriBakker?i=x4zBi_6U1lw:A-CnHlzUt_I:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=x4zBi_6U1lw:A-CnHlzUt_I:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=x4zBi_6U1lw:A-CnHlzUt_I:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AriBakker?i=x4zBi_6U1lw:A-CnHlzUt_I:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=x4zBi_6U1lw:A-CnHlzUt_I:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AriBakker/~4/x4zBi_6U1lw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sharepointconfig.com/2013/02/sharepoint-2010-people-directory-part-3-sorting/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		<feedburner:origLink>http://www.sharepointconfig.com/2013/02/sharepoint-2010-people-directory-part-3-sorting/</feedburner:origLink></item>
		<item>
		<title>SharePoint 2013 Development Certifications</title>
		<link>http://feedproxy.google.com/~r/AriBakker/~3/ahXCsLculpI/</link>
		<comments>http://www.sharepointconfig.com/2012/12/sharepoint-2013-development-certifications/#comments</comments>
		<pubDate>Wed, 05 Dec 2012 18:05:27 +0000</pubDate>
		<dc:creator>Ari Bakker</dc:creator>
				<category><![CDATA[2013]]></category>
		<category><![CDATA[certification]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[exams]]></category>

		<guid isPermaLink="false">http://www.sharepointconfig.com/?p=1086</guid>
		<description><![CDATA[According to a <a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032537090&#038;culture=en-us">Microsoft webcast on the Microsoft Certified Solutions Master (MCSM) certification</a> there are <strong>two new SharePoint 2013 development focused exams in development</strong>. These form part of the requirements for the Microsoft Certified Solutions Developer (MCSD) certification for SharePoint 2013. The full requirements for achieving MCSD in SharePoint 2013 will include two non-SharePoint specific exams; one of these is 70-480 - Programming in HTML5 with JavaScript and CSS3, the other has not yet been named. 

Details of the entire SharePoint 2013 certification process is shown below:
<a href="http://www.sharepointconfig.com/2012/12/sharepoint-2013-development-certifications/"><img class="excerpt" title="sharepoint 2013 certifications" src="http://www.sharepointconfig.com/wp-content/uploads/2012/12/certification-detail_thumb.png" border="0" alt="sharepoint 2013 certifications" width="644" height="455" /></a><p><a href="http://www.sharepointconfig.com/2012/12/sharepoint-2013-development-certifications/">SharePoint 2013 Development Certifications</a> is a post from: <a href="http://www.sharepointconfig.com">SharePoint Config</a></p>
]]></description>
				<content:encoded><![CDATA[<p><del>Update 15 April 2013 &#8211; You can register for the SharePoint development beta exams for free using code MCSD488J for 71-488 and MCSD489J for 71-489. I understand these are limited so suggest signing up ASAP.</p>
<p></del></p>
<p>Update 13 May 2013 &#8211; The free beta codes I mentioned previously appear to have been used up and are no longer available.</p>
<p>According to a <a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032537090&amp;culture=en-us">Microsoft webcast on the Microsoft Certified Solutions Master (MCSM) certification</a> there are <strong>two new SharePoint 2013 development focused exams in development</strong>. These form part of the requirements for the Microsoft Certified Solutions Developer (MCSD) certification for SharePoint 2013. The full requirements for achieving MCSD in SharePoint 2013 will include two non-SharePoint specific exams; one of these is 70-480 &#8211; Programming in HTML5 with JavaScript and CSS3, the other is 70-486 &#8211; Developing ASP.NET MVC 4 Web Applications.</p>
<p>To summarise <strong>you will need to pass the following four exams to achieve the MCSD: SharePoint Applications in SharePoint 2013</strong>:</p>
<ul>
<li>SharePoint focused
<ul>
<li><a href="http://www.microsoft.com/learning/en/us/exam.aspx?id=70-488">70-488 Developing Microsoft SharePoint Server 2013 Core Solutions</a> (currently in beta, release expected in June 2013)</li>
<li><a href="http://www.microsoft.com/learning/en/us/exam.aspx?id=70-489">70-489 Developing Microsoft SharePoint Server 2013 Advanced Solutions</a> (currently in beta, release expected in June 2013)</li>
</ul>
</li>
<li>Web development focused
<ul>
<li><a href="http://www.microsoft.com/learning/en/us/exam.aspx?id=70-480">70-480 Programming in HTML5 with JavaScript and CSS3</a></li>
<li><a href="http://www.microsoft.com/learning/en/us/exam.aspx?id=70-486">70-486 Developing ASP.NET MVC 4 Web Applications</a></li>
</ul>
</li>
</ul>
<p><del>If you are interested in attaining this certification in the future I’d suggest doing the following now:</del></p>
<ol>
<li><del>Register for the <a href="http://www.microsoft.com/learning/en/us/exam.aspx?id=70-480">70-480</a> exam now as it is <strong>free </strong>untilMarch 2013 using code HTMLJMP as mentioned on the <a href="https://www.microsoftvirtualacademy.com/tracks/developing-html5-apps-jump-start">Microsoft Virtual Academy blog</a></del></li>
<li><del>Submit a <a href="http://connect.microsoft.com/site862">Subject Matter Expert (SME) profile on Microsoft connect</a> so that you have a chance of getting an invite to take the beta exams when they are released. See <a href="http://borntolearn.mslearn.net/btl/b/weblog/archive/2012/11/12/everything-you-wanted-to-know-about-beta-exams-part-1-beta-invites.aspx">Everything You Wanted to Know about Beta Exams: Part 1 (Beta Invites)</a> from the Born to Learn blog for more details on this.</del></li>
<li><del>Follow the <a href="http://borntolearn.mslearn.net/">Born to Learn blog</a> which details new exams that are released</del></li>
</ol>
<p>In addition to the developer focused exams you can also currently take the (IT Pro focused) <a href="http://www.microsoft.com/learning/en/us/certification/cert-sharepoint-server.aspx">Microsoft Certified Solutions Expert exams</a>. Details of the entire SharePoint 2013 certification process is shown below:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="certification-detail" alt="certification-detail" src="http://www.sharepointconfig.com/wp-content/uploads/2012/12/certification-detail_thumb.png" width="644" height="455" border="0" /></p>
<p>To achieve the <strong>MCSE</strong> you must also gain the MCSA: Windows Server 2012, although the Windows Server exams are not pre-requisites for sitting 70-331: Core Solutions of Microsoft SharePoint Server 2013 and 70-332: Advanced Solutions of Microsoft SharePoint Server 2013. If you want to achieve <strong>master</strong> level certification you will need both the MCSE and the MCSD. Note that going forward the master level certification is now referred to as MCSM (previously MCM) and will be available remotely (i.e. not all run at Redmond) starting in March 2013.</p>
<p>Additional resources:</p>
<ul>
<li>For more details on the MCSM take a look at <a href="http://www.microsoft.com/learning/en/us/certification/MCSM-sharepoint.aspx">MCSM: SharePoint Certification Overview</a>.</li>
<li>For more details on the MCSE and an overview of the entire SharePoint certifications for 2013 take a look at <a href="http://blog.concentra.co.uk/2012/12/10/sharepoint-2013-certification-overview/">SharePoint 2013 Certification Overview</a></li>
</ul>
<p><a href="http://www.sharepointconfig.com/2012/12/sharepoint-2013-development-certifications/">SharePoint 2013 Development Certifications</a> is a post from: <a href="http://www.sharepointconfig.com">SharePoint Config</a></p>
     <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AriBakker?a=ahXCsLculpI:d9RpIoyZOnE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=ahXCsLculpI:d9RpIoyZOnE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AriBakker?i=ahXCsLculpI:d9RpIoyZOnE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=ahXCsLculpI:d9RpIoyZOnE:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=ahXCsLculpI:d9RpIoyZOnE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AriBakker?i=ahXCsLculpI:d9RpIoyZOnE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=ahXCsLculpI:d9RpIoyZOnE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AriBakker/~4/ahXCsLculpI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sharepointconfig.com/2012/12/sharepoint-2013-development-certifications/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://www.sharepointconfig.com/2012/12/sharepoint-2013-development-certifications/</feedburner:origLink></item>
		<item>
		<title>Top 7 developer resources for SharePoint 2013</title>
		<link>http://feedproxy.google.com/~r/AriBakker/~3/Y4w5lhkELaM/</link>
		<comments>http://www.sharepointconfig.com/2012/07/top-7-developer-resources-for-sharepoint-2013/#comments</comments>
		<pubDate>Tue, 17 Jul 2012 11:27:34 +0000</pubDate>
		<dc:creator>Ari Bakker</dc:creator>
				<category><![CDATA[2013]]></category>

		<guid isPermaLink="false">http://www.sharepointconfig.com/?p=1078</guid>
		<description><![CDATA[As you are most likely aware, Microsoft announced the Office 2013 and SharePoint 2013 preview on the 16th of July. There is already a stack of information out there but if you are getting started or want to find out more here is a summary of some of the resources I’ve found useful: Office 2013 [...]<p><a href="http://www.sharepointconfig.com/2012/07/top-7-developer-resources-for-sharepoint-2013/">Top 7 developer resources for SharePoint 2013</a> is a post from: <a href="http://www.sharepointconfig.com">SharePoint Config</a></p>
]]></description>
				<content:encoded><![CDATA[<p>As you are most likely aware, Microsoft announced the Office 2013 and SharePoint 2013 preview on the 16th of July. There is already a stack of information out there but if you are getting started or want to find out more here is a summary of some of the resources I’ve found useful:</p>
<h3>Office 2013 Launch Event and Overview</h3>
<p>A good place to start is the webcast of the <a href="http://www.microsoft.com/en-us/news/presskits/office/liveevent.aspx">official Office 2013 launch event from Microsoft</a>. If you prefer reading rather than watching the Engadget article <a href="http://www.engadget.com/2012/07/16/microsoft-office-15-preview/">Microsoft Office 2013 preview: details, screenshots and impressions</a> gives a good overview of the Office 2013 features. Some of the big changes are that Office has been redesigned to work with touch devices and integrates heavily with the cloud including SkyDrive and Skype integration. Microsoft also has details on the Office application updates at <a href="http://www.microsoft.com/office/preview/en">http://www.microsoft.com/office/preview/en</a>.</p>
<h3>SharePoint Developer Center on MSDN</h3>
<p>The <a href="http://msdn.microsoft.com/en-us/sharepoint">SharePoint developer centre on MSDN</a> has a good <a href="http://msdn.microsoft.com/en-US/sharepoint/fp123576">overview of the new developer related features</a> in SharePoint 2013 including <a href="http://msdn.microsoft.com/en-US/sharepoint/fp123633">18 training videos</a> on new functionality relating to the changes in search, social ECM, WCM, REST, App development and OAuth.</p>
<h3>Understanding SharePoint 2013 Apps</h3>
<p>A big change for developers in SharePoint 2013 is the introduction of SharePoint Apps. Andrew Connell has a great overview of the new SharePoint App Model and how it fits in with other development options in his article <a href="http://www.andrewconnell.com/blog/archive/2012/07/16/understanding-sharepoint-2013-apps-aka-apps-101.aspx">Understanding SharePoint 2013 Apps (aka: Apps 101)</a>. While you are there be sure to register for their upcoming <a href="http://www.criticalpathtraining.com/Schedule/Webcasts/Pages/SharePoint+2013+Office+Hours.aspx">SharePoint 2013 webinars</a>.</p>
<h3>Start building apps for Office and SharePoint</h3>
<p>To find out more about developing apps there are some great resources at the <a href="http://msdn.microsoft.com/en-us/library/office/apps/jj220030(v=office.15)">Apps for Office and SharePoint site</a>, including code samples, details on the <a href="http://msdn.microsoft.com/en-us/library/office/apps/jj220038(v=office.15)">‘Napa’ Office 365 Development Tools</a> and <a href="http://msdn.microsoft.com/en-us/library/office/apps/jj163794(v=office.15)">detailed API documentation</a>.</p>
<h3>Sign up for an Office 365 Developer Site</h3>
<p>The quickest way to get started building apps is to create a Office 365 Developer Site which gives you a preconfigured SharePoint 2013 Preview site. Sign up at <a href="http://msdn.microsoft.com/en-us/library/office/apps/fp179924(v=office.15)">http://msdn.microsoft.com/en-us/library/office/apps/fp179924(v=office.15)</a> – within a few minutes you will have a shiny new SharePoint 2013 site to play with!</p>
<p><a href="http://www.sharepointconfig.com/wp-content/uploads/2012/07/office-365-developer-preview.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="office-365-developer-preview" src="http://www.sharepointconfig.com/wp-content/uploads/2012/07/office-365-developer-preview_thumb.png" alt="office-365-developer-preview" width="644" height="421" border="0" /></a></p>
<h3>Download Microsoft SharePoint Server 2013 Preview</h3>
<p>If you want to get the on-premise version you can grab it from <a href="http://technet.microsoft.com/en-US/evalcenter/hh973397.aspx?wt.mc_id=TEC_121_1_33">http://technet.microsoft.com/en-US/evalcenter/hh973397.aspx?wt.mc_id=TEC_121_1_33</a>. Eric Harlan has a good article on <a href="http://www.ericharlan.com/Moss_SharePoint_2007_Blog/how-to-install-sharepoint-2013-a220.html">How to install SharePoint 2013</a> but this is largely the same as SharePoint 2010.</p>
<h3>SharePoint 2013 TechCenter</h3>
<p>To get an understanding of the architectural changes including an overview of enterprise search and authentication head over to the <a href="http://technet.microsoft.com/en-us/sharepoint/fp142366">SharePoint 2013 for IT pros site on TechNet</a>. This includes a bunch of videos and presentations covering the <a href="http://technet.microsoft.com/en-us/library/cc261970(v=office.15)">new SharePoint 2013 functionality</a> from search (FAST functionality is now baked into the core search component), architecture, mobile, authentication (Claims is now the default and Classic mode has been deprecated), WCM (including the new <a href="http://technet.microsoft.com/en-us/library/jj219688(v=office.15)#BKMK_contentsearch">Content by Search Web Part</a>) and much more.</p>
<p><a href="http://www.sharepointconfig.com/2012/07/top-7-developer-resources-for-sharepoint-2013/">Top 7 developer resources for SharePoint 2013</a> is a post from: <a href="http://www.sharepointconfig.com">SharePoint Config</a></p>
     <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AriBakker?a=Y4w5lhkELaM:t1ImMrDMZ8I:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=Y4w5lhkELaM:t1ImMrDMZ8I:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AriBakker?i=Y4w5lhkELaM:t1ImMrDMZ8I:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=Y4w5lhkELaM:t1ImMrDMZ8I:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=Y4w5lhkELaM:t1ImMrDMZ8I:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AriBakker?i=Y4w5lhkELaM:t1ImMrDMZ8I:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=Y4w5lhkELaM:t1ImMrDMZ8I:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AriBakker/~4/Y4w5lhkELaM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sharepointconfig.com/2012/07/top-7-developer-resources-for-sharepoint-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.sharepointconfig.com/2012/07/top-7-developer-resources-for-sharepoint-2013/</feedburner:origLink></item>
		<item>
		<title>SharePoint 15 object model preview</title>
		<link>http://feedproxy.google.com/~r/AriBakker/~3/RGS5iD06R04/</link>
		<comments>http://www.sharepointconfig.com/2012/01/sharepoint-15-object-model-preview/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 22:49:32 +0000</pubDate>
		<dc:creator>Ari Bakker</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.sharepointconfig.com/?p=1073</guid>
		<description><![CDATA[Earlier today, Microsoft Corporate VP PJ Hough announced the beginning of a Technical Preview program for Office 15. No specific details of features were announced but it was mentioned that: Office 15 is the most ambitious undertaking yet for the Office Division. With Office 15, for the first time ever, we will simultaneously update our [...]<p><a href="http://www.sharepointconfig.com/2012/01/sharepoint-15-object-model-preview/">SharePoint 15 object model preview</a> is a post from: <a href="http://www.sharepointconfig.com">SharePoint Config</a></p>
]]></description>
				<content:encoded><![CDATA[<p>Earlier today, Microsoft Corporate VP PJ Hough announced the beginning of a <a href="http://blogs.office.com/b/office-exec/archive/2012/01/30/quot-office-15-quot-begins-technical-preview.aspx">Technical Preview program for Office 15</a>. No specific details of features were announced but it was mentioned that:</p>
<blockquote><p>Office 15 is the most ambitious undertaking yet for the Office Division. With Office 15, for the first time ever, we will simultaneously update our cloud services, servers, and mobile and PC clients for Office, Office 365, Exchange, SharePoint, Lync, Project, and Visio. Quite simply, Office 15 will help people work, collaborate, and communicate smarter and faster than ever before.&#160;&#160; </p>
<p>While the Technical Preview program is already full, everyone will have the opportunity to try the Office 15 public beta later this summer, and we&#8217;ll have more to share about the release then. In the meantime, I do want to thank everyone who is participating in the Technical Preview for their contributions and all our customers for their continued support.</p>
</blockquote>
<p>A <a href="http://www.microsoft.com/download/en/details.aspx?id=28768">technical preview of the Managed Object Model Software Development Kit for SharePoint 15</a> was also released today and this provides some insights into what might be included in the next version of SharePoint. Some of the more interesting additions are:</p>
<p>The addition of a CorporateCatalog enumeration with the following values:</p>
<ul>
<li>StoreFront &#8211; The package is from the marketplace.</li>
<li>CorporateCatalog &#8211; The package is from a corporate gallery.</li>
<li>DeveloperSite &#8211; The package is from a developer site.</li>
<li>ObjectModel &#8211; The package is loaded via an object model.</li>
<li>RemoteObjectModel &#8211; The package is uploaded via CSOM.</li>
</ul>
<p>New SPApp, SPAppInstance and SPAppCatalog classes. The description for the SPApp class states: “Represents an app loaded onto Microsoft SharePoint Server and ready to be installed.” which also contains a CreateAppInstance method that states “Creates an instance of an app at the specified site specified by the web parameter. The new instance can then be retrievedby using the SPAppCatalog class and using the returned ID.”</p>
<p>This hints at an extended deployment framework allowing more control over deployment of custom components within SharePoint. For example we also have a SPWeb.LoadAndInstallApp method that is used to upload and install an app package and a SPWeb.AppDatabaseName property.</p>
<p>Another potentially related addition is the SPWebApplication.IsUserLicensedForEntity method that “Checks if the currently logged in user has the proper license to access the specified entity.”</p>
<p>There isn’t a lot of information about what these are used for but it raises some interesting questions – is this an extension to the feature and solution model for deploying additional SharePoint functionality? Will you be able to create apps that work on Windows 8 and SharePoint 15? If you have any ideas or find any other interesting bits of information leave a note in the comments below.</p>
<p><a href="http://www.sharepointconfig.com/2012/01/sharepoint-15-object-model-preview/">SharePoint 15 object model preview</a> is a post from: <a href="http://www.sharepointconfig.com">SharePoint Config</a></p>
     <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AriBakker?a=RGS5iD06R04:Vav2cr_n34Q:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=RGS5iD06R04:Vav2cr_n34Q:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AriBakker?i=RGS5iD06R04:Vav2cr_n34Q:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=RGS5iD06R04:Vav2cr_n34Q:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=RGS5iD06R04:Vav2cr_n34Q:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AriBakker?i=RGS5iD06R04:Vav2cr_n34Q:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=RGS5iD06R04:Vav2cr_n34Q:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AriBakker/~4/RGS5iD06R04" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sharepointconfig.com/2012/01/sharepoint-15-object-model-preview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.sharepointconfig.com/2012/01/sharepoint-15-object-model-preview/</feedburner:origLink></item>
		<item>
		<title>Developing for SharePoint Online</title>
		<link>http://feedproxy.google.com/~r/AriBakker/~3/BqIKMC2e-S4/</link>
		<comments>http://www.sharepointconfig.com/2011/11/developing-for-sharepoint-online/#comments</comments>
		<pubDate>Mon, 21 Nov 2011 14:51:13 +0000</pubDate>
		<dc:creator>Ari Bakker</dc:creator>
				<category><![CDATA[2010]]></category>
		<category><![CDATA[SharePoint Online]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[office365]]></category>
		<category><![CDATA[online]]></category>

		<guid isPermaLink="false">http://www.sharepointconfig.com/?p=1058</guid>
		<description><![CDATA[On Saturday the 12th of November I presented a session on “Developing for SharePoint Online” at the second SharePoint Saturday in the UK. The session was aimed at SharePoint developers who had no or little experience building solutions to run in SharePoint Online which is part of Office 365. I’ve included the slides at the [...]<p><a href="http://www.sharepointconfig.com/2011/11/developing-for-sharepoint-online/">Developing for SharePoint Online</a> is a post from: <a href="http://www.sharepointconfig.com">SharePoint Config</a></p>
]]></description>
				<content:encoded><![CDATA[<p>On Saturday the 12th of November I presented a session on “Developing for SharePoint Online” at the second <a href="http://www.sharepointsaturday.org/uk/">SharePoint Saturday in the UK</a>. The session was aimed at SharePoint developers who had no or little experience building solutions to run in SharePoint Online which is part of Office 365. I’ve included the slides at the end of this post but if you didn’t make it the key points are summarised below.</p>
<h3>SharePoint Online Flavours</h3>
<p>SharePoint Online is part of Office 365 which has two broad offerings; the Office 365 public cloud and Office 365 dedicated.</p>
<p>As the name suggests the public cloud is a shared environment so other people will be using the same servers to run their SharePoint sites. To ensure one customer doesn’t affect another customer on the same server Microsoft has had to impose many significant restrictions. For example you can’t deploy files to the file system as this could overwrite files from another customer. This was also a driving force behind sandboxed solutions – a restricted set of allowed customisations that Microsoft can guarantee won’t affect other customers in a shared environment.</p>
<p>There are several different licencing models for the Office 365 public cloud. The main offerings are:</p>
<ul>
<li><strong>Professionals and small businesses (P plans)</strong> – these are limited to 50 users and a single site collection. There are also less features available and there is no supported upgrade to the enterprise plans (E plans).</li>
<li><strong>Medium businesses and enterprises (E plans)</strong> – these allow 300 (non-my site) site collections containing 100GB of content each. The enterprise plans also include my sites and cross-site collection search. For more details have a look at the <a href="http://www.microsoft.com/download/en/details.aspx?id=13602">Microsoft SharePoint Online for Enterprises Service Description</a>.</li>
</ul>
<p>Office 365 dedicated is aimed at 30,000+ seat deployments so unless you have a large user base this isn’t going to be an option as Microsoft will only start discussing this if you have a deployment of this size. As you are the only customer using the servers, however, you are able to deploy full trust solutions in SharePoint Online dedicated although these still need to go through Microsoft approval process before they can be deployed to the servers. The rest of this article will focus on the features and limitations of the public cloud.</p>
<p>Screen shots of the administration panel for the P and E plans are shown below. Note the complete lack of farm level configuration in the P plans:</p>
<p><strong>P1 Administration screen</strong> (note the ‘Manage team sites’ simply takes you to the team site settings page).</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border-width: 0px;" title="p1-admin" src="http://www.sharepointconfig.com/wp-content/uploads/2011/11/p1-admin.png" alt="p1-admin" width="644" height="449" border="0" /></p>
<p><strong>E3 Administration screen </strong>(note the SharePoint Online | Manage link takes you to the following additional admin screen)</p>
<p><a href="http://www.sharepointconfig.com/wp-content/uploads/2011/11/e3-admin.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border-width: 0px;" title="e3-admin" src="http://www.sharepointconfig.com/wp-content/uploads/2011/11/e3-admin_thumb.png" alt="e3-admin" width="550" height="484" border="0" /></a></p>
<p><strong>E3 SharePoint Administration Screen</strong></p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border-width: 0px;" title="e3-sharepoint-admin" src="http://www.sharepointconfig.com/wp-content/uploads/2011/11/e3-sharepoint-admin.png" alt="e3-sharepoint-admin" width="475" height="484" border="0" /></p>
<p><strong>E3 SharePoint Site Collection Administration &#8211; </strong>note the resource and storage quotas. Sandbox solutions are limited to consuming the available resources in the quota &#8211; if these are used up all sandbox solutions stop running.</p>
<p><a href="http://www.sharepointconfig.com/wp-content/uploads/2011/11/e3-sharepoint-site-collection-admin.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border-width: 0px;" title="e3-sharepoint-site-collection-admin" src="http://www.sharepointconfig.com/wp-content/uploads/2011/11/e3-sharepoint-site-collection-admin_thumb.png" alt="e3-sharepoint-site-collection-admin" width="644" height="384" border="0" /></a></p>
<h3>What’s In</h3>
<p>A broad summary of the features available in SharePoint Online is included below. More details can be found in the <a href="http://www.microsoft.com/download/en/details.aspx?id=13602">Microsoft SharePoint Online for Enterprises Service Description</a>.</p>
<ul>
<li>My Sites</li>
<li>Office Integration (2007/2010)</li>
<li>SharePoint Workspace 2010 for Offline Working</li>
<li>External Sharing</li>
<li>Simple Public-Facing Website</li>
<li>Document Libraries</li>
<li>Slide &amp; Media Libraries</li>
<li>Business Taxonomies &amp; Tagging</li>
<li>Document Sets &amp; ID’s</li>
<li>Office Web Apps</li>
<li>Cross-site Collection Search</li>
<li>Search Refiners</li>
<li>Indexing Controls</li>
<li>People Search</li>
<li>Phonetic Search</li>
<li>Excel Services</li>
<li>Access Services</li>
<li>Visio Services</li>
<li>SharePoint Web Services</li>
<li>Forms Services</li>
<li>Custom Web Parts</li>
<li>Silverlight controls</li>
<li><strong>Sandboxed Solutions</strong></li>
<li>Blogs</li>
<li>Wikis</li>
<li>Business Connectivity Services</li>
</ul>
<p>As you can see there are a large number of features, and Microsoft is continuing to add to this by adding features. For example support for Business Connectivity Services and the Secure Store Service was added during October and November this year. If you need to extend these capabilities then sandboxed solutions can be used.</p>
<h3>What’s Out</h3>
<p>At the time of writing the following features were unavailable.</p>
<ul>
<li>Records Center</li>
<li>Information Rights Management (IRM)</li>
<li>SharePoint for Internet Sites and WCM workflow and approval</li>
<li>Site Variations</li>
<li>PerformancePoint Services</li>
<li>Power Pivot</li>
<li><strong>Full-Trust Code Solutions</strong></li>
<li>FAST Search</li>
</ul>
<h3>Development Options</h3>
<p>There are several options for developing custom solutions for SharePoint Online. As with on-premise SharePoint deployments you can use the <strong>browser</strong> to create site columns, content types, lists, web pages and other artefacts. You can also use <strong>SharePoint designer</strong> and InfoPath to create custom workflows, enhance list forms and provide similar customisations as you can with an on-premise deployment.</p>
<p>If you need to write code to provide functionality such as an event receiver or a web part then you can use <strong>sandboxed solutions </strong>to create and deploy managed code assemblies. If you need to provide functionality that isn’t supported in the sandbox such as timer jobs or service applications then one option is to host this logic in an external environment such as <strong>Windows Azure </strong>and interact with SharePoint online via the client object model and/or the SharePoint web services.</p>
<p><span class="Apple-style-span" style="font-size: 15px; font-weight: bold;">Key sandbox limitations</span></p>
<p>The sandbox model has some major restrictions on what is allowed. Some of the key limitations are:</p>
<ul>
<li>No access to the file system</li>
<li>Code restrictions:
<ul>
<li>GAC deployment prohibited</li>
<li>Restricted set of allowed assemblies</li>
</ul>
</li>
<li>No server side external calls</li>
<li>No Web Application or Farm scoped functionality</li>
<li>No full-trust proxy allowed in SP-O standard</li>
</ul>
<div>When you deploy sandbox solutions they must be uploaded and activated on individual site collections through the browser. At the moment there is no way to automatically propagate a solution to multiple site collections at once. Another thing to note is that sandbox solutions have a resource quota that is used up when processor cycles, database queries and other resources are used. Expensive operations like throwing unhandled exceptions and long-running processes use these resources up quickly and will eventually lead to a solution being blocked if all resources are consumed.</div>
<h4>Limitation #1 &#8211; No access to the file system</h4>
<p>Without the ability to deploy files or interact with files on the file system this prevents you from using the following in SharePoint Online:</p>
<ul>
<li><strong>Site definitions</strong> – These require onet.xml and webtemp.xml files deployed to the SharePoint root directory so are not available. To work around this limitation you can use the WebTemplate element that is new in SharePoint 2010 (and often overlooked). To find out more check out Vesa’s great post on <a href="http://blogs.msdn.com/b/vesku/archive/2010/10/14/sharepoint-2010-and-web-templates.aspx">SharePoint 2010 and web templates</a>.</li>
<li><strong>User controls</strong> – Again these need to be deployed to the ControlTemplates folder in the file system. To get around this limitation you can install the <a href="http://visualstudiogallery.msdn.microsoft.com/8e602a8c-6714-4549-9e95-f3700344b0d9">Visual Studio 2010 SharePoint Power Tools</a> as these include a Sandboxed Visual Web Part template that can be used to write a control (.ascx) file that is then compiled and deployed in your assembly, circumventing this limitation.</li>
<li><strong>Application pages</strong> – Typically used for settings or admin pages but you cannot deploy to the _layouts virtual directory as this maps to the SharePoint root LAYOUTS folder so these cannot be used. A workaround for these is to create a site page and embed a web part on this page so it appears like an application page. Wictor Wilén has a good article on this at <a href="http://www.wictorwilen.se/Post/Custom-application-pages-in-the-SharePoint-2010-Sandbox.aspx">Custom application pages in the SharePoint 2010 Sandbox</a>. Note when embedding your web part you need to use the SPUserCodeWebPart class rather than adding your web part directly to the page.</li>
<li><strong>Branding resources – </strong>Often resources such as images and JavaScript files are deployed to the SharePoint root so these need to be deployed to a library such as the Style Library instead. Another thing to note is that all file including masterpages and page layouts provisioned via a feature are checked out when using Sandboxed Solutions. Waldek’s article <a href="http://blog.mastykarz.nl/automatically-publishing-files-provisioned-sandboxed-solutions/">Automatically publishing files provisioned with Sandboxed Solutions</a> provides a solution for this.</li>
<li><strong>Web.config – </strong>Without the ability to change the web.config file you are prevented from many things such as creating HttpModules, adding custom authentication providers, and changing the appsettings entries. Many of these cannot be avoided but for application settings you can still use the SPWeb property bag or a SharePoint list.</li>
<li><strong>ULS logs</strong> – As you cannot write to or view entries in the ULS logs or Windows Event Logs debugging errors becomes a lot more difficult. When a web part or event handler errors in SharePoint Online there is no stack trace available and no log to check for details of what caused the error. One solution is to log to a SharePoint list and this is something I demonstrated in the SharePoint Saturday session. You need to be mindful of resource usage so the ability to switch logging on and off in production is useful here. I’ll include more details and an example solution in a later post.</li>
</ul>
<h4>Limitation #2 – Accessing external data</h4>
<p>Code running in SharePoint online is restricted to the scope of the current site collection. You cannot make web services calls or create new SPSite objects for other site collections. Some options for interacting with external data are:</p>
<ul>
<li><strong>Use client side code </strong>– This could be in the form of a Silverlight application using the Client Object Model, JavaScript running in a browser using the ECMAScript client model or using the Managed client OM such as in an Office Add-in. Wictor has a interesting article on one example of how to do this in his article <a href="http://www.wictorwilen.se/Post/SharePoint-Online-and-External-Data-using-JSONP.aspx">SharePoint Online and External Data using JSONP</a>.</li>
<li><strong>Business connectivity services – </strong>The BCS feature allows you to create external lists that render data from an external system so you could create a WCF service that exposes data in an external system and display this as a SharePoint list.</li>
<li><strong>Data view web part – </strong>Another simple way of getting data in is to use SharePoint designer and the data view web part. This can be used to display an RSS feed on a SharePoint page, for example. Note that you cannot use this server side so its use is fairly limited.</li>
</ul>
<h4>Limitation #3 &#8211; Code restrictions</h4>
<p>Some important points here are that you cannot deploy solutions to the GAC so your solutions do not have full trust. This prevents components such as custom workflow solutions and timer jobs from running. You also have a very restricted set of allowed assemblies and methods within those assemblies that can be called. For example the SPSecurity namespace is not allowed so you cannot run code under the application pool account as SPSecurity.RunWithElevatedPriviledges is not allowed. The Visual Studio SharePoint Power Tools mentioned earlier help you with this limitation by compiling sandbox solutions against the allowed set of assemblies so you can identify the available methods via intellisense and at will see errors if you use these at compile time.</p>
<p>Another key thing to note is that you do not have full access to the Page and HttpRequest objects. When the sandboxed code runs it is executed under the SPUCWorkerProcess not the W3Wp.exe process. The SPUCWorkerProcess only contains a copy of the Page and SPWeb objects so methods that Microsoft have not implemented such as Page.ClientScript or Response.Redirect will not work.</p>
<p>Some good articles on this topic are (again) by Wictor and Waldek:</p>
<ul>
<li><a href="http://blog.mastykarz.nl/dynamically-loading-javascript-sandbox/">Dynamically loading JavaScript from within Sandbox</a> by Waldek</li>
<li><a href="http://www.wictorwilen.se/Post/Understanding-the-SharePoint-2010-Sandbox-limitations.aspx">Understanding the SharePoint 2010 Sandbox limitations</a> by Wictor</li>
</ul>
<p>The <a href="http://msdn.microsoft.com/en-us/library/ff798382.aspx">Sandboxed Solutions</a> article on MSDN also has more in-depth coverage of some of these issues.</p>
<p>To get around some of these limitations one approach is to move your more complex application logic into an external system such as Windows Azure. The external system can then perform the procedures it needs to in a a fully trusted and fully featured environment. You might also want to store some of your data in an external system for compliance or cost reasons. Steve Fox has more information on this in his article <a href="http://blogs.msdn.com/b/steve_fox/archive/2011/11/12/leveraging-wcf-services-to-connect-bcs-with-sharepoint-online.aspx">Leveraging Windows Azure WCF Services to Connect BCS with SharePoint Online</a>.</p>
<h4>Limitation #4 – Deployment scope</h4>
<p>Sandboxed solutions can only contains site collection or site/web scoped features. Additionally you don’t have full access to farm features such as search so there are features such as managed search properties that are not available in SharePoint Online. Other things that are unavailable are authentication providers and custom service applications. Again, for situations where you need to extend your SharePoint Online environment beyond the scope of the site collection you may want to consider moving this application logic elsewhere and/or consider a hybrid approach where some SharePoint content is online and some is on premise.</p>
<h4>Resources</h4>
<p>To find out more or get up and running I recommend using the following resources:</p>
<ul>
<li><a href="http://www.microsoft.com/en-gb/office365/online-software.aspx">Office 365 Trial</a> – get started by setting up a 30 day trial account, or if you are a Microsoft partner sign up for an extended trial at <a href="http://www.microsoftcloudpartner.com/">http://www.microsoftcloudpartner.com/</a></li>
<li><a href="http://www.microsoft.com/download/en/details.aspx?id=17069">SharePoint Online for Office 365: Developer Guide</a></li>
<li><a href="http://visualstudiogallery.msdn.microsoft.com/8e602a8c-6714-4549-9e95-f3700344b0d9">Visual Studio 2010 SharePoint Power Tools</a> – include the Sandboxed Visual Web Part template and compilation rules for Sandbox Solutions</li>
<li><a href="http://o365fxcoprules.codeplex.com">FxCop Rules for SharePoint Online</a> – SharePoint online contains a solution validator with additional rules on top of the sandbox solution restrictions. To ensure your solution is compatible before you upload it to SharePoint online you can run these FxCop rules.</li>
</ul>
<p>I also found the following books useful resources for understanding more about SharePoint online development.</p>
<div style="clear: both;"><a href="http://www.amazon.co.uk/gp/product/073566210X/ref=as_li_ss_il?ie=UTF8&amp;tag=wwwsharepoint-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=073566210X"><img style="display: inline; float: left; margin-right:10px;" src="http://ws.assoc-amazon.co.uk/widgets/q?_encoding=UTF8&amp;Format=_SL110_&amp;ASIN=073566210X&amp;MarketPlace=GB&amp;ID=AsinImage&amp;WS=1&amp;tag=wwwsharepoint-21&amp;ServiceVersion=20070822" alt="" align="left" border="0" /></a><a href="http://www.amazon.co.uk/gp/product/073566210X/ref=as_li_ss_tl?ie=UTF8&amp;tag=wwwsharepoint-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=073566210X">Deploying Cloud-Based Microsoft SharePoint 2010 Solutions</a><img style="margin: 0px; border-style: none !important;" src="http://www.assoc-amazon.co.uk/e/ir?t=wwwsharepoint-21&amp;l=as2&amp;o=2&amp;a=073566210X" alt="" width="1" height="1" border="0" /> &#8211; good overview of Office 365. Doesn’t go into a lot of depth in terms of development but has a great high-level overview of Office 365, SharePoint Online, and high-level options for SharePoint online customisation and development.<img style="margin: 0px; border-style: none !important;" src="http://www.assoc-amazon.co.uk/e/ir?t=wwwsharepoint-21&amp;l=as2&amp;o=2&amp;a=073566210X" alt="" width="1" height="1" border="0" /></div>
<div style="clear: both;"><a href="http://www.amazon.co.uk/gp/product/B005EI85NC/ref=as_li_ss_il?ie=UTF8&amp;tag=wwwsharepoint-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B005EI85NC"><img style="display: inline; float: left; margin-right:10px;" src="http://ws.assoc-amazon.co.uk/widgets/q?_encoding=UTF8&amp;Format=_SL110_&amp;ASIN=B005EI85NC&amp;MarketPlace=GB&amp;ID=AsinImage&amp;WS=1&amp;tag=wwwsharepoint-21&amp;ServiceVersion=20070822" alt="" align="left" border="0" /></a><a href="http://www.amazon.co.uk/gp/product/B005EI85NC/ref=as_li_ss_tl?ie=UTF8&amp;tag=wwwsharepoint-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B005EI85NC">Developing Microsoft® SharePoint® Applications Using Windows Azure</a><img style="margin: 0px; border-style: none !important;" src="http://www.assoc-amazon.co.uk/e/ir?t=wwwsharepoint-21&amp;l=as2&amp;o=2&amp;a=B005EI85NC" alt="" width="1" height="1" border="0" />- useful hands on guide to developing applications using Windows Azure and integrating these with SharePoint.</div>
<div style="clear: both;"><a href="http://www.amazon.co.uk/gp/product/1118076575/ref=as_li_ss_il?ie=UTF8&amp;tag=wwwsharepoint-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=1118076575"><img style="float: left; margin-right:10px;" src="http://ws.assoc-amazon.co.uk/widgets/q?_encoding=UTF8&amp;Format=_SL110_&amp;ASIN=1118076575&amp;MarketPlace=GB&amp;ID=AsinImage&amp;WS=1&amp;tag=wwwsharepoint-21&amp;ServiceVersion=20070822" alt="" border="0" /></a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.co.uk/e/ir?t=wwwsharepoint-21&amp;l=as2&amp;o=2&amp;a=1118076575" alt="" width="1" height="1" border="0" /><br />
<a href="http://www.amazon.co.uk/gp/product/1118076575/ref=as_li_ss_tl?ie=UTF8&amp;tag=wwwsharepoint-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=1118076575">Professional SharePoint 2010 Cloud Based Solutions</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.co.uk/e/ir?t=wwwsharepoint-21&amp;l=as2&amp;o=2&amp;a=1118076575" alt="" width="1" height="1" border="0" />- I&#8217;ve haven&#8217;t read this yet as it has just been released but it appears to have lots of hands on development examples of how to integrate SharePoint with a variety of cloud services.</div>
<div style="clear: both;">Lastly the slides from my SharePoint Saturday talk are below:</div>
<div id="__ss_10208991" style="width: 425px;float:none;margin-left:auto;margin-right:auto;">
<p><strong style="display: block; margin: 12px 0 4px;"><a title="Developing for SharePoint Online" href="http://www.slideshare.net/aribakker/developing-for-share-point-online" target="_blank">Developing for SharePoint Online</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/10208991" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"></iframe></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/aribakker" target="_blank">Ari Bakker</a></div>
</div>
<p><a href="http://www.sharepointconfig.com/2011/11/developing-for-sharepoint-online/">Developing for SharePoint Online</a> is a post from: <a href="http://www.sharepointconfig.com">SharePoint Config</a></p>
     <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AriBakker?a=BqIKMC2e-S4:8KuI5RNlG6M:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=BqIKMC2e-S4:8KuI5RNlG6M:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AriBakker?i=BqIKMC2e-S4:8KuI5RNlG6M:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=BqIKMC2e-S4:8KuI5RNlG6M:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=BqIKMC2e-S4:8KuI5RNlG6M:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AriBakker?i=BqIKMC2e-S4:8KuI5RNlG6M:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=BqIKMC2e-S4:8KuI5RNlG6M:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AriBakker/~4/BqIKMC2e-S4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sharepointconfig.com/2011/11/developing-for-sharepoint-online/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.sharepointconfig.com/2011/11/developing-for-sharepoint-online/</feedburner:origLink></item>
		<item>
		<title>Speaking at SharePoint Saturday UK</title>
		<link>http://feedproxy.google.com/~r/AriBakker/~3/mteWMzgn6pE/</link>
		<comments>http://www.sharepointconfig.com/2011/11/speaking-at-sharepoint-saturday-uk/#comments</comments>
		<pubDate>Mon, 07 Nov 2011 23:48:44 +0000</pubDate>
		<dc:creator>Ari Bakker</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.sharepointconfig.com/2011/11/speaking-at-sharepoint-saturday-uk/</guid>
		<description><![CDATA[On the 12th of November I’ll be presenting a session on ‘Developing for SharePoint Online’ at SharePoint Saturday UK. The session is aimed at SharePoint developers who are interested in getting an overview of how to develop solutions in SharePoint Online which is part of Office 365. It will cover an brief overview of what [...]<p><a href="http://www.sharepointconfig.com/2011/11/speaking-at-sharepoint-saturday-uk/">Speaking at SharePoint Saturday UK</a> is a post from: <a href="http://www.sharepointconfig.com">SharePoint Config</a></p>
]]></description>
				<content:encoded><![CDATA[<p>On the 12th of November I’ll be presenting a session on ‘Developing for SharePoint Online’ at <a href="http://www.sharepointsaturday.org/uk/default.aspx">SharePoint Saturday UK</a>. The session is aimed at SharePoint developers who are interested in getting an overview of how to develop solutions in SharePoint Online which is part of Office 365. It will cover an brief overview of what SharePoint Online offers, the limitations and techniques to get around some of the biggest limitations of this environment. This is a developer focused session so it will have a technical focus but won’t be a deep dive – I’ll leave that to Steve Fox in the following session “SharePoint and the Cloud: Crash or Convergence?”.</p>
<p>There are 8 different tracks and heaps of great sessions so if you can make it I’d recommend it as a way of learning more and networking with the SharePoint community.</p>
<p><a href="http://www.sharepointconfig.com/2011/11/speaking-at-sharepoint-saturday-uk/">Speaking at SharePoint Saturday UK</a> is a post from: <a href="http://www.sharepointconfig.com">SharePoint Config</a></p>
     <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AriBakker?a=mteWMzgn6pE:PbzYKOdLO3U:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=mteWMzgn6pE:PbzYKOdLO3U:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AriBakker?i=mteWMzgn6pE:PbzYKOdLO3U:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=mteWMzgn6pE:PbzYKOdLO3U:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=mteWMzgn6pE:PbzYKOdLO3U:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AriBakker?i=mteWMzgn6pE:PbzYKOdLO3U:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=mteWMzgn6pE:PbzYKOdLO3U:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AriBakker/~4/mteWMzgn6pE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sharepointconfig.com/2011/11/speaking-at-sharepoint-saturday-uk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.sharepointconfig.com/2011/11/speaking-at-sharepoint-saturday-uk/</feedburner:origLink></item>
		<item>
		<title>Adding Managed Metadata Fields to SharePoint Publishing Pages</title>
		<link>http://feedproxy.google.com/~r/AriBakker/~3/pgnRyO8TpbA/</link>
		<comments>http://www.sharepointconfig.com/2011/09/adding-managed-metadata-fields-to-sharepoint-publishing-pages/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 12:07:00 +0000</pubDate>
		<dc:creator>Ari Bakker</dc:creator>
				<category><![CDATA[2010]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[Metadata]]></category>
		<category><![CDATA[Templates]]></category>
		<category><![CDATA[Web Content Management]]></category>
		<category><![CDATA[metadata]]></category>
		<category><![CDATA[provisioning]]></category>
		<category><![CDATA[publishing]]></category>
		<category><![CDATA[taxonomy]]></category>
		<category><![CDATA[wcm]]></category>

		<guid isPermaLink="false">http://www.sharepointconfig.com/?p=1041</guid>
		<description><![CDATA[The Managed Metadata functionality provided by SharePoint 2010 allows you to centrally manage metadata and keywords. In a previous post I covered how to provision a SharePoint 2010 managed metadata field and add this to a content type and a list definition. In this post I will cover how to add these types of fields [...]<p><a href="http://www.sharepointconfig.com/2011/09/adding-managed-metadata-fields-to-sharepoint-publishing-pages/">Adding Managed Metadata Fields to SharePoint Publishing Pages</a> is a post from: <a href="http://www.sharepointconfig.com">SharePoint Config</a></p>
]]></description>
				<content:encoded><![CDATA[<p>The Managed Metadata functionality provided by SharePoint 2010 allows you to centrally manage metadata and keywords. In a previous post I covered <a href="http://www.sharepointconfig.com/2011/03/the-complete-guide-to-provisioning-sharepoint-2010-managed-metadata-fields/">how to provision a SharePoint 2010 managed metadata field</a> and add this to a content type and a list definition. In this post I will cover how to add these types of fields to a publishing page layout so that content authors can add metadata and keywords to webpages they create using these layouts.</p>
<p><a href="http://www.sharepointconfig.com/wp-content/uploads/2011/09/sharepoint-publishing-page-managed-metadata-field.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="sharepoint-publishing-page-managed-metadata-field" src="http://www.sharepointconfig.com/wp-content/uploads/2011/09/sharepoint-publishing-page-managed-metadata-field_thumb.png" alt="sharepoint-publishing-page-managed-metadata-field" width="599" height="423" border="0" /></a></p>
<p>If there are a large number of content pages this type of tagging can help users find information as these columns can be used as filters on a list, items in a tag cloud or as search refinements.</p>
<p><a href="http://www.sharepointconfig.com/wp-content/uploads/2011/09/search-results-page-metadata.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="search-results-page-metadata" src="http://www.sharepointconfig.com/wp-content/uploads/2011/09/search-results-page-metadata_thumb.png" alt="search-results-page-metadata" width="644" height="335" border="0" /></a></p>
<p>The steps to add a managed metadata field to a publishing page are:</p>
<p><strong>A) <a href="http://www.sharepointconfig.com/2011/03/the-complete-guide-to-provisioning-sharepoint-2010-managed-metadata-fields/">Create a managed metadata field</a></strong></p>
<ol>
<li>Provision a managed metadata field using type TaxonomyFieldType (or TaxonomyFieldTypeMulti to allow multiple values)</li>
<li>Configure the managed metadata column to reference an existing term set</li>
<li>Provision a hidden field of type Note</li>
<li>Configure the managed metadata column to use the hidden Note field</li>
<li>Ensure that the TaxonomyFieldAdded feature is activated on the site collection</li>
</ol>
<p><strong>B) Create a page layout that uses a managed metadata field</strong></p>
<ol>
<li>Create a site scoped feature for the page layout</li>
<li>Create a content type based on the ‘Page’ content type that uses the managed metadata fields</li>
<li>Create a page layout that uses the new content type</li>
<li>Create a web scoped feature for the content type association</li>
<li>Associate the content type with the pages library</li>
</ol>
<p>As I’ve covered the process to <a href="http://www.sharepointconfig.com/2011/03/the-complete-guide-to-provisioning-sharepoint-2010-managed-metadata-fields/">create a managed metadata field</a> in a previous article I won’t repeat that. Instead you can <a href="http://www.sharepointconfig.com/wp-content/uploads/2011/03/ManagedMetadataField.zip">download the example solution</a> and use the steps below to add the field to a page layout, or just use the steps below if you already have completed part A.</p>
<h3>1. Create a site scoped feature for the page layout</h3>
<p>In this example I’ve created two features – a site scoped feature named ‘Metadata Page’ and a web scoped feature named ‘Metadata Page Web’. The site scoped feature needs to contain the content type and page layout as these are deployed at the site collection level. It should also include a feature activation dependency on the feature(s) used in part A and the publishing infrastructure feature to ensure these features are available.</p>
<h3>2. Create a content type based on the ‘Page’ content type that uses the managed metadata fields</h3>
<p>Once you have deployed a managed metadata field you should create a content type that inherits from the Page content type (or one that derives from it such as the Article Page or Welcome Page). You will then want to include your managed metadata field and the hidden note field as well as any other fields you want to use in your layout. The example below adds the <strong>PublishingPageContent</strong> rich text field, the <strong>Regional Office</strong> managed metadata field and the associated hidden note field, and the <strong>Enterprise keywords</strong> field (a non-hierarchical open term set).</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 500px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">&lt;?</span><span style="color: #800000;">xml</span> <span style="color: #ff0000;">version</span><span style="color: #0000ff;">="1.0"</span> <span style="color: #ff0000;">encoding</span><span style="color: #0000ff;">="utf-8"</span>?<span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Elements</span> <span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://schemas.microsoft.com/sharepoint/"</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">  <span style="color: #008000;">&lt;!-- Parent ContentType: Page (0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF39) --&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">  <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">ContentType</span> <span style="color: #ff0000;">ID</span><span style="color: #0000ff;">="0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF3900e20db8f48c7c44d0938059ab05bace32"</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">               <span style="color: #ff0000;">Name</span><span style="color: #0000ff;">="Metadata Page"</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">               <span style="color: #ff0000;">Group</span><span style="color: #0000ff;">="Custom Content Types"</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">               <span style="color: #ff0000;">Description</span><span style="color: #0000ff;">="My Content Type"</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">               <span style="color: #ff0000;">Inherits</span><span style="color: #0000ff;">="TRUE"</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">               <span style="color: #ff0000;">Version</span><span style="color: #0000ff;">="0"</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">FieldRefs</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">      <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">FieldRef</span> <span style="color: #ff0000;">ID</span><span style="color: #0000ff;">="{f55c4d88-1f2e-4ad9-aaa8-819af4ee7ee8}"</span> <span style="color: #ff0000;">Name</span><span style="color: #0000ff;">="PublishingPageContent"</span><span style="color: #0000ff;">/&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">      <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">FieldRef</span> <span style="color: #ff0000;">ID</span><span style="color: #0000ff;">="{dcb76480-4735-11e0-ab07-0800200c9a66}"</span> <span style="color: #ff0000;">Name</span><span style="color: #0000ff;">="RegionalOffice"</span><span style="color: #0000ff;">/&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">      <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">FieldRef</span> <span style="color: #ff0000;">ID</span><span style="color: #0000ff;">="{9EDAB26E-CC44-4027-AB05-CB44EA3A6F72}"</span> <span style="color: #ff0000;">Name</span><span style="color: #0000ff;">="RegionalOfficeTaxHTField0"</span><span style="color: #0000ff;">/&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">      <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">FieldRef</span> <span style="color: #ff0000;">ID</span><span style="color: #0000ff;">="{23f27201-bee3-471e-b2e7-b64fd8b7ca38}"</span> <span style="color: #ff0000;">Name</span><span style="color: #0000ff;">="TaxKeyword"</span> <span style="color: #0000ff;">/&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">FieldRefs</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">  <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">ContentType</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Elements</span><span style="color: #0000ff;">&gt;</span></pre>
</div>
</div>
<p>Note that unlike the previous post I’m not adding the TaxCatchAll or TaxCatchAllLabel fields to my content type as these are added to the list automatically when you associate the content type with the Pages list (covered in step 3). This step is only required if you are creating a list definition – more details are in the post on <a href="http://www.sharepointconfig.com/2011/03/issues-provisioning-sharepoint-2010-managed-metadata-fields/">issues provisioning SharePoint 2010 managed metadata fields</a>.</p>
<h3>3. Create a page layout that uses the new content type</h3>
<p>To create the page layout you need to create an ASPX page and a module that will deploy this to the masterpage gallery. One way of creating the ASPX page is to use the CKS:Dev Visual Studio extensions that allow you to create this by right clicking on the content type in server explorer.</p>
<p><a href="http://www.sharepointconfig.com/wp-content/uploads/2011/09/image.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border-width: 0px;" title="image" src="http://www.sharepointconfig.com/wp-content/uploads/2011/09/image_thumb.png" alt="image" width="325" height="344" border="0" /></a></p>
<p>Alternatively you can just create an empty module and add a standard ASPX page with the mark-up shown below:</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 500px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="background-color: #ffff00;">&lt;%@ Page language="C#" Inherits="Microsoft.SharePoint.Publishing.PublishingLayoutPage,Microsoft.SharePoint.Publishing,Version=14.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c" meta:webpartpageexpansion="full" meta:progid="SharePoint.WebPartPage.Document" %&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="background-color: #ffff00;">&lt;%@ Register Tagprefix="SharePointWebControls" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="background-color: #ffff00;">&lt;%@ Register Tagprefix="PublishingWebControls" Namespace="Microsoft.SharePoint.Publishing.WebControls" Assembly="Microsoft.SharePoint.Publishing, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="background-color: #ffff00;">&lt;%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="background-color: #ffff00;">&lt;%@ Register Tagprefix="Taxonomy" Namespace="Microsoft.SharePoint.Taxonomy" Assembly="Microsoft.SharePoint.Taxonomy, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">asp:Content</span> <span style="color: #ff0000;">ContentPlaceholderID</span><span style="color: #0000ff;">="PlaceHolderPageTitle"</span> <span style="color: #ff0000;">runat</span><span style="color: #0000ff;">="server"</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">      <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">SharePointWebControls:FieldValue</span> <span style="color: #ff0000;">id</span><span style="color: #0000ff;">="PageTitle"</span> <span style="color: #ff0000;">FieldName</span><span style="color: #0000ff;">="Title"</span> <span style="color: #ff0000;">runat</span><span style="color: #0000ff;">="server"</span><span style="color: #0000ff;">/&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">asp:Content</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">asp:Content</span> <span style="color: #ff0000;">ContentPlaceholderID</span><span style="color: #0000ff;">="PlaceHolderPageTitleInTitleArea"</span> <span style="color: #ff0000;">runat</span><span style="color: #0000ff;">="server"</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">SharePointWebControls:FieldValue</span> <span style="color: #ff0000;">FieldName</span><span style="color: #0000ff;">="Title"</span> <span style="color: #ff0000;">runat</span><span style="color: #0000ff;">="server"</span><span style="color: #0000ff;">/&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">asp:Content</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">asp:Content</span> <span style="color: #ff0000;">ContentPlaceholderID</span><span style="color: #0000ff;">="PlaceHolderAdditionalPageHead"</span> <span style="color: #ff0000;">runat</span><span style="color: #0000ff;">="server"</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">SharePointWebControls:CssRegistration</span> <span style="color: #ff0000;">name</span><span style="color: #0000ff;">="&lt;% $SPUrl:~sitecollection/Style Library/~language/Core Styles/page-layouts-21.css %&gt;"</span> <span style="color: #ff0000;">runat</span><span style="color: #0000ff;">="server"</span><span style="color: #0000ff;">/&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">PublishingWebControls:EditModePanel</span> <span style="color: #ff0000;">runat</span><span style="color: #0000ff;">="server"</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #008000;">&lt;!-- Styles for edit mode only--&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">SharePointWebControls:CssRegistration</span> <span style="color: #ff0000;">name</span><span style="color: #0000ff;">="&lt;% $SPUrl:~sitecollection/Style Library/~language/Core Styles/edit-mode-21.css %&gt;"</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            <span style="color: #ff0000;">After</span><span style="color: #0000ff;">="&lt;% $SPUrl:~sitecollection/Style Library/~language/Core Styles/page-layouts-21.css %&gt;"</span> <span style="color: #ff0000;">runat</span><span style="color: #0000ff;">="server"</span><span style="color: #0000ff;">/&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">PublishingWebControls:EditModePanel</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">SharePointWebControls:CssRegistration</span> <span style="color: #ff0000;">name</span><span style="color: #0000ff;">="&lt;% $SPUrl:~sitecollection/Style Library/~language/Core Styles/rca.css %&gt;"</span> <span style="color: #ff0000;">runat</span><span style="color: #0000ff;">="server"</span><span style="color: #0000ff;">/&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">asp:Content</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">asp:Content</span> <span style="color: #ff0000;">ContentPlaceHolderId</span><span style="color: #0000ff;">="PlaceHolderMain"</span> <span style="color: #ff0000;">runat</span><span style="color: #0000ff;">="server"</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">h2</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">SharePointWebControls:TextField</span> <span style="color: #ff0000;">runat</span><span style="color: #0000ff;">="server"</span> <span style="color: #ff0000;">FieldName</span><span style="color: #0000ff;">="Title"</span><span style="color: #0000ff;">/&gt;&lt;/</span><span style="color: #800000;">h2</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">p</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">strong</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">PublishingWebControls:EditModePanel</span> <span style="color: #ff0000;">runat</span><span style="color: #0000ff;">="server"</span> <span style="color: #ff0000;">PageDisplayMode</span><span style="color: #0000ff;">="Display"</span><span style="color: #0000ff;">&gt;</span>Regional Office:<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">PublishingWebControls:EditModePanel</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">strong</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Taxonomy:TaxonomyFieldControl</span> <span style="color: #ff0000;">FieldName</span><span style="color: #0000ff;">="RegionalOffice"</span> <span style="color: #ff0000;">InputFieldLabel</span><span style="color: #0000ff;">="Regional Office"</span> <span style="color: #ff0000;">runat</span><span style="color: #0000ff;">="server"</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">Taxonomy:TaxonomyFieldControl</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">p</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">p</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">strong</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">PublishingWebControls:EditModePanel</span> <span style="color: #ff0000;">runat</span><span style="color: #0000ff;">="server"</span> <span style="color: #ff0000;">PageDisplayMode</span><span style="color: #0000ff;">="Display"</span><span style="color: #0000ff;">&gt;</span>Tags:<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">PublishingWebControls:EditModePanel</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">strong</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Taxonomy:TaxonomyFieldControl</span> <span style="color: #ff0000;">FieldName</span><span style="color: #0000ff;">="TaxKeyword"</span> <span style="color: #ff0000;">InputFieldLabel</span><span style="color: #0000ff;">="Tags"</span> <span style="color: #ff0000;">runat</span><span style="color: #0000ff;">="server"</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">Taxonomy:TaxonomyFieldControl</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">p</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">div</span> <span style="color: #ff0000;">class</span><span style="color: #0000ff;">="article-content"</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">PublishingWebControls:RichHtmlField</span> <span style="color: #ff0000;">FieldName</span><span style="color: #0000ff;">="PublishingPageContent"</span> <span style="color: #ff0000;">HasInitialFocus</span><span style="color: #0000ff;">="True"</span> <span style="color: #ff0000;">MinimumEditHeight</span><span style="color: #0000ff;">="400px"</span> <span style="color: #ff0000;">runat</span><span style="color: #0000ff;">="server"</span><span style="color: #0000ff;">/&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">div</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">asp:Content</span><span style="color: #0000ff;">&gt;</span></pre>
</div>
</div>
<p>In your elements.xml file you then configure this page layout to be deployed to the masterpage gallery and use the content type you created in step 1 by using the following mark-up:</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 500px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">&lt;?</span><span style="color: #800000;">xml</span> <span style="color: #ff0000;">version</span><span style="color: #0000ff;">="1.0"</span> <span style="color: #ff0000;">encoding</span><span style="color: #0000ff;">="utf-8"</span>?<span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Elements</span> <span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://schemas.microsoft.com/sharepoint/"</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">  <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Module</span> <span style="color: #ff0000;">Name</span><span style="color: #0000ff;">="PageLayouts"</span> <span style="color: #ff0000;">Url</span><span style="color: #0000ff;">="_catalogs/masterpage"</span> <span style="color: #ff0000;">Path</span><span style="color: #0000ff;">="PageLayouts"</span> <span style="color: #ff0000;">RootWebOnly</span><span style="color: #0000ff;">="TRUE"</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">File</span> <span style="color: #ff0000;">Url</span><span style="color: #0000ff;">="MetadataPageLayout.aspx"</span> <span style="color: #ff0000;">Type</span><span style="color: #0000ff;">="GhostableInLibrary"</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">      <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Property</span> <span style="color: #ff0000;">Name</span><span style="color: #0000ff;">="Title"</span> <span style="color: #ff0000;">Value</span><span style="color: #0000ff;">="Metadata Page"</span> <span style="color: #0000ff;">/&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">      <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Property</span> <span style="color: #ff0000;">Name</span><span style="color: #0000ff;">="ContentType"</span> <span style="color: #ff0000;">Value</span><span style="color: #0000ff;">="$Resources:cmscore,contenttype_pagelayout_name;"</span> <span style="color: #0000ff;">/&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">      <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Property</span> <span style="color: #ff0000;">Name</span><span style="color: #0000ff;">="PublishingPreviewImage"</span> <span style="color: #ff0000;">Value</span><span style="color: #0000ff;">="~SiteCollection/_catalogs/masterpage/$Resources:core,Culture;/Preview Images/DefaultPageLayout.png, ~SiteCollection/_catalogs/masterpage/$Resources:core,Culture;/Preview Images/DefaultPageLayout.png"</span> <span style="color: #0000ff;">/&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">      <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Property</span> <span style="color: #ff0000;">Name</span><span style="color: #0000ff;">="PublishingAssociatedContentType"</span> <span style="color: #ff0000;">Value</span><span style="color: #0000ff;">=";#Metadata Page;#0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF3900e20db8f48c7c44d0938059ab05bace32;#"</span><span style="color: #0000ff;">/&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">File</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">  <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Module</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Elements</span><span style="color: #0000ff;">&gt;</span></pre>
</div>
</div>
<h3>4. Create a web scoped feature for the content type association</h3>
<p>At this point you should check your features to make sure the content type and page layout are associated with the Metadata Page site scoped feature. You should also create a web scoped feature to use for the following item.</p>
<h3>5. Associate the content type with the pages library</h3>
<p>The last step is to associate the content type with the pages library. If you miss this step then users can still create pages using your page layout but if they only have contribute permission then the managed metadata functionality is not configured properly within the pages library correctly and you get the following error:</p>
<blockquote><p>Failed to get value of the &#8220;{0}&#8221; column from the &#8220;Managed Metadata&#8221; field type control. See details in log. Exception message: Invalid field name. {1}</p></blockquote>
<p><a href="http://www.sharepointconfig.com/wp-content/uploads/2011/09/error-sharepoint-publishing-page-metadata.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="error-sharepoint-publishing-page-metadata" src="http://www.sharepointconfig.com/wp-content/uploads/2011/09/error-sharepoint-publishing-page-metadata_thumb.png" alt="error-sharepoint-publishing-page-metadata" width="582" height="285" border="0" /></a></p>
<p>To create this association create an empty module element with the following mark-up:</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 500px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">&lt;?</span><span style="color: #800000;">xml</span> <span style="color: #ff0000;">version</span><span style="color: #0000ff;">="1.0"</span> <span style="color: #ff0000;">encoding</span><span style="color: #0000ff;">="utf-8"</span>?<span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Elements</span> <span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://schemas.microsoft.com/sharepoint/"</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">  <span style="color: #008000;">&lt;!-- Metadata page binding --&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">  <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">ContentTypeBinding</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #ff0000;">ContentTypeId</span><span style="color: #0000ff;">="0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF3900e20db8f48c7c44d0938059ab05bace32"</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #ff0000;">ListUrl</span><span style="color: #0000ff;">="Pages"</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">  <span style="color: #0000ff;">/&gt;</span></pre>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Elements</span><span style="color: #0000ff;">&gt;</span></pre>
</div>
</div>
<p>The web scoped feature that is used for this should be activated on all sites that will use the page layout you created earlier. It tells SharePoint to add the content type to the pages library as well as all associated fields and will correctly configure the managed metadata functionality when this is activated. To setup this association you might want to add this feature in your custom web templates (or site definitions) or use a <a href="http://msdn.microsoft.com/en-us/library/aa544552.aspx">FeatureSiteTemplateAssociation</a> to associate your feature with existing site definitions such as the publishing site.</p>
<p>Once this is deployed you should be able to create a new page and select your page layout from the ribbon as shown below:</p>
<p><a href="http://www.sharepointconfig.com/wp-content/uploads/2011/09/sharepoint-publishing-page-layout.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="sharepoint-publishing-page-layout" src="http://www.sharepointconfig.com/wp-content/uploads/2011/09/sharepoint-publishing-page-layout_thumb.png" alt="sharepoint-publishing-page-layout" width="534" height="383" border="0" /></a></p>
<p>I’ve included the code used in the steps above in a <a href="http://www.sharepointconfig.com/downloadPageManagedMetadata.zip">Visual Studio 2010 project to add a managed metadata field to a publishing page layout</a>. This builds on the previous example to create a managed metadata field so it also includes the code to create a list definition.</p>
<p><a href="http://www.sharepointconfig.com/wp-content/uploads/2011/09/sharepoint-publishing-page-managed-metadata-field1.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="sharepoint-publishing-page-managed-metadata-field" src="http://www.sharepointconfig.com/wp-content/uploads/2011/09/sharepoint-publishing-page-managed-metadata-field_thumb1.png" alt="sharepoint-publishing-page-managed-metadata-field" width="599" height="423" border="0" /></a></p>
<p><a href="http://www.sharepointconfig.com/2011/09/adding-managed-metadata-fields-to-sharepoint-publishing-pages/">Adding Managed Metadata Fields to SharePoint Publishing Pages</a> is a post from: <a href="http://www.sharepointconfig.com">SharePoint Config</a></p>
     <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AriBakker?a=pgnRyO8TpbA:kII2aFwrM2k:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=pgnRyO8TpbA:kII2aFwrM2k:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AriBakker?i=pgnRyO8TpbA:kII2aFwrM2k:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=pgnRyO8TpbA:kII2aFwrM2k:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=pgnRyO8TpbA:kII2aFwrM2k:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AriBakker?i=pgnRyO8TpbA:kII2aFwrM2k:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=pgnRyO8TpbA:kII2aFwrM2k:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AriBakker/~4/pgnRyO8TpbA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sharepointconfig.com/2011/09/adding-managed-metadata-fields-to-sharepoint-publishing-pages/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://www.sharepointconfig.com/2011/09/adding-managed-metadata-fields-to-sharepoint-publishing-pages/</feedburner:origLink></item>
		<item>
		<title>Error with published links to Office client applications</title>
		<link>http://feedproxy.google.com/~r/AriBakker/~3/siX1JUlFKWM/</link>
		<comments>http://www.sharepointconfig.com/2011/06/error-with-published-links-to-office-client-applications/#comments</comments>
		<pubDate>Thu, 30 Jun 2011 11:30:37 +0000</pubDate>
		<dc:creator>Ari Bakker</dc:creator>
				<category><![CDATA[2010]]></category>
		<category><![CDATA[Errors]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[errors]]></category>
		<category><![CDATA[office]]></category>
		<category><![CDATA[Published Links]]></category>

		<guid isPermaLink="false">http://www.sharepointconfig.com/?p=1025</guid>
		<description><![CDATA[SharePoint allows you to publish SharePoint links so that they appear in Office ‘Save As’ dialog boxes. This is useful if you want to encourage users to save Word, Excel and other Office documents directly into SharePoint rather than the file system as this dialog is shown the first time you save a new file. [...]<p><a href="http://www.sharepointconfig.com/2011/06/error-with-published-links-to-office-client-applications/">Error with published links to Office client applications</a> is a post from: <a href="http://www.sharepointconfig.com">SharePoint Config</a></p>
]]></description>
				<content:encoded><![CDATA[<p>SharePoint allows you to <a href="http://technet.microsoft.com/en-us/library/cc263102.aspx">publish SharePoint links</a> so that they appear in Office ‘Save As’ dialog boxes. This is useful if you want to encourage users to save Word, Excel and other Office documents directly into SharePoint rather than the file system as this dialog is shown the first time you save a new file. It allows you to create targeted shortcuts so relevant document libraries and sites are easily accessible when saving Office documents.</p>
<p><a href="http://www.sharepointconfig.com/wp-content/uploads/2011/06/office-save-as-sharepoint-sites.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="office-save-as-sharepoint-sites" src="http://www.sharepointconfig.com/wp-content/uploads/2011/06/office-save-as-sharepoint-sites_thumb.png" border="0" alt="office-save-as-sharepoint-sites" width="696" height="510" /></a></p>
<p>In SharePoint 2010 these published links are managed under the user profile service application in a page called ‘Published links to Office client applications’.</p>
<p><a href="http://www.sharepointconfig.com/wp-content/uploads/2011/06/sharepoint-2010-published-links-office.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="sharepoint-2010-published-links-office" src="http://www.sharepointconfig.com/wp-content/uploads/2011/06/sharepoint-2010-published-links-office_thumb.png" border="0" alt="sharepoint-2010-published-links-office" width="644" height="340" /></a></p>
<p>We had an issue this week, however, where a client encountered the following error when trying to browse to this page.</p>
<p>The error message stated:</p>
<blockquote><p>Your search encountered an error. If the problem persists, contact the portal site administrator.</p></blockquote>
<p><a href="http://www.sharepointconfig.com/wp-content/uploads/2011/06/sharepoint-2010-published-links-office-error.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="sharepoint-2010-published-links-office-error" src="http://www.sharepointconfig.com/wp-content/uploads/2011/06/sharepoint-2010-published-links-office-error_thumb.png" border="0" alt="sharepoint-2010-published-links-office-error" width="644" height="256" /></a></p>
<p>There was nothing obvious in the event logs or the ULS logs about this message making it a bit of a mystery as to why it was failing.</p>
<p>After some investigation I found that the problem could be recreated by creating a published link that related to an audience and then deleting that audience. Yes that’s right, there is some really shoddy coding going on there and simply deleting the audience through the UI causes the entire published links screen to stop working! As you can’t see the links anymore you cannot delete the affected links. You also can’t undo the audience deletion so you are essentially stuck.</p>
<p>With some digging I found the values are stored in the SharedListSync table of the Profile DB relating to the user profile service application. As deleting information out of the SharePoint databases risks causing worse problems (not to mention leaving your farm in an unsupported state) I had a look at how the UI handles the deletion when the page is working and found a much better workaround.</p>
<p>If you add a checkbox to the page with a value that matches the ID of the link in the database you can delete the affected links. This is basically mimicking the checkboxes that would be on the page if it rendered correctly. You can then select the checkbox and use the delete button in exactly the same way SharePoint allows you to i.e. in a supported manner. This is shown below:</p>
<p><a href="http://www.sharepointconfig.com/wp-content/uploads/2011/06/sharepoint-2010-published-links-office-checkbox.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="sharepoint-2010-published-links-office-checkbox" src="http://www.sharepointconfig.com/wp-content/uploads/2011/06/sharepoint-2010-published-links-office-checkbox_thumb.png" border="0" alt="sharepoint-2010-published-links-office-checkbox" width="612" height="554" /></a></p>
<p>Note the highlighted checkbox that has been manually inserted into the DOM by editing the HTML mark up. The <strong>value=”1”</strong> will mean that the link with the ItemId of 1 in the database will be deleted. Determining the ID’s to delete does require access to the Profile DB but this can be done by taking a backup of the affected database and restoring it in a test environment if you don’t have access to live data. What you need to look for is the ItemId field in the SharedListSync table.</p>
<p><a href="http://www.sharepointconfig.com/wp-content/uploads/2011/06/sql-sharedlistsync-table.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="sql-sharedlistsync-table" src="http://www.sharepointconfig.com/wp-content/uploads/2011/06/sql-sharedlistsync-table_thumb.png" border="0" alt="sql-sharedlistsync-table" width="609" height="77" /></a></p>
<p>The values in the TargetTo column relate to an audience stored in the Profile_SearchAudienceTable. In this case we can see that the row with an ItemId of 2 has an audience so this would be the item to delete if there was a problem.</p>
<p>To add the checkbox to the page you can use tools such as Firebug for Firefox or the IE Developer toolbar. In either tool you just need to select the HTML tab, click edit and insert an input element with type=”checkbox” and a value matching the ItemId of the row to delete. For example to delete the row with ItemId of 2 you could insert the following.</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 500px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">input</span> <span style="color: #ff0000;">type</span><span style="color: #0000ff;">="checkbox"</span> <span style="color: #ff0000;">id</span><span style="color: #0000ff;">="CheckedLinks1"</span> <span style="color: #ff0000;">value</span><span style="color: #0000ff;">="2"</span><span style="color: #0000ff;">&gt;</span></pre>
<p><!--CRLF--></p>
</div>
</div>
<p>You need to make sure the input element is within the FORM tag of the page but it doesn’t matter where you put it. For example the screen shot below shows how you can edit the HTML using the IE developer toolbar to add the tag directly after the opening FORM element. This will place the checkbox to delete the item at the very top of the page.</p>
<p><a href="http://www.sharepointconfig.com/wp-content/uploads/2011/06/ie-dev-toolbar-published-links-checkbox.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="ie-dev-toolbar-published-links-checkbox" src="http://www.sharepointconfig.com/wp-content/uploads/2011/06/ie-dev-toolbar-published-links-checkbox_thumb.png" border="0" alt="ie-dev-toolbar-published-links-checkbox" width="644" height="394" /></a></p>
<p>If you have multiple items to remove you can add in multiple input elements, select all the items and delete them at once. Once you have deleted the links with missing audiences the screen should return to a usable state.</p>
<p><a href="http://www.sharepointconfig.com/wp-content/uploads/2011/06/sharepoint-2010-published-links-office-working.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="sharepoint-2010-published-links-office-working" src="http://www.sharepointconfig.com/wp-content/uploads/2011/06/sharepoint-2010-published-links-office-working_thumb.png" border="0" alt="sharepoint-2010-published-links-office-working" width="623" height="304" /></a></p>
<p><a href="http://www.sharepointconfig.com/2011/06/error-with-published-links-to-office-client-applications/">Error with published links to Office client applications</a> is a post from: <a href="http://www.sharepointconfig.com">SharePoint Config</a></p>
     <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AriBakker?a=siX1JUlFKWM:o_Hu6l0WX_k:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=siX1JUlFKWM:o_Hu6l0WX_k:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AriBakker?i=siX1JUlFKWM:o_Hu6l0WX_k:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=siX1JUlFKWM:o_Hu6l0WX_k:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=siX1JUlFKWM:o_Hu6l0WX_k:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AriBakker?i=siX1JUlFKWM:o_Hu6l0WX_k:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AriBakker?a=siX1JUlFKWM:o_Hu6l0WX_k:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AriBakker?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AriBakker/~4/siX1JUlFKWM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sharepointconfig.com/2011/06/error-with-published-links-to-office-client-applications/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.sharepointconfig.com/2011/06/error-with-published-links-to-office-client-applications/</feedburner:origLink></item>
	</channel>
</rss>
