<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2157078164517103759</id><updated>2012-01-23T07:29:11.664-08:00</updated><category term='Windows Communication Foundation'/><category term='Content Database'/><category term='MVVM'/><category term='BCS'/><category term='Workspace'/><category term='BDC'/><category term='ECM'/><category term='K2.net 2003'/><category term='SQL Server'/><category term='Windows Workflow Foundation'/><category term='Secure Store Service'/><category term='SharePoint Online'/><category term='SharePoint Topology'/><category term='SharePoint Deployment'/><category term='Document Sets'/><category term='Office365'/><category term='Azure'/><category term='Visual Studio 2010'/><category term='SharePoint Performance'/><category term='Configuration'/><category term='Ribbon'/><category term='User Profile Service'/><category term='Excel Services'/><category term='SharePoint Mobile'/><category term='Records Management'/><category term='PowerShell'/><category term='Social Computing'/><category term='Digital Assets'/><category term='SharePoint Upgrade'/><category term='Office Web Application'/><category term='K2 blackpoint'/><category term='Exchange Online'/><category term='MOSS'/><category term='My Blog News'/><category term='K2 Roles'/><category term='User Control'/><category term='User Group'/><category term='Unified Communications'/><category term='SharePoint Administration'/><category term='Word Automation Services'/><category term='K2 Deployment'/><category term='Unit Testing'/><category term='Lists'/><category term='K2.net General'/><category term='Windows 7'/><category term='LINQ'/><category term='WCM'/><category term='SharePoint Security'/><category term='K2.net Best Practices'/><category term='SharePoint 2010 Development'/><category term='.NET General'/><category term='Health Analyzer'/><category term='Localization'/><category term='RIA Services'/><category term='Sandbox Solutions'/><category term='PerformancePoint'/><category term='Windows Virtual PC'/><category term='ADFS'/><category term='Workflow'/><category term='Visio Services'/><category term='Records Center'/><category term='Productivity Hub'/><category term='MOSS Development'/><category term='K2 SmartObjects'/><category term='Kerberos'/><category term='SharePoint 2010'/><category term='SharePoint Branding'/><category term='FAST'/><category term='Office 2010'/><category term='SharePoint Architecture'/><category term='Lync Online'/><category term='CAS'/><category term='Extranets'/><category term='Enterprise Search'/><category term='K2 blackpearl'/><category term='SharePoint Governance'/><category term='BI'/><category term='SSRS'/><category term='SharePoint Designer'/><category term='SharePoint 2010 Search'/><category term='Access Services'/><category term='Training'/><category term='Service Application Framework'/><category term='Backup Restore'/><category term='InfoPath'/><category term='Silverlight'/><category term='Web Analytics'/><title type='text'>A Static State</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.astaticstate.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default?start-index=101&amp;max-results=100'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>257</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-1756186690851651197</id><published>2012-01-22T17:38:00.001-08:00</published><updated>2012-01-23T07:29:11.780-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office365'/><title type='text'></title><content type='html'>Do you want to stay up to date, track or learn the updates with the Office 365 Multitenant Service? Here is a nice WIKI page that is being managed that is tracking, by month, what are the new service updates to the Office 365 Service - &lt;a href="http://community.office365.com/en-us/w/office_365_service_updates/service-updates-for-office-365-for-enterprises.aspx"&gt;http://community.office365.com/en-us/w/office_365_service_updates/service-updates-for-office-365-for-enterprises.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-1756186690851651197?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/1756186690851651197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=1756186690851651197' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/1756186690851651197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/1756186690851651197'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2012/01/do-you-want-to-stay-up-to-date-track-or.html' title=''/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-4523751974743938013</id><published>2012-01-20T08:39:00.001-08:00</published><updated>2012-01-20T13:00:19.714-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Online'/><title type='text'>Blogging with SharePoint 2010</title><content type='html'>Someone just asked me a simple question if it was possible to blog with SharePoint 2o10 with a rich client application.&amp;nbsp; You can use Windows Liver Writer (&lt;a href="http://explore.live.com/windows-live-essentials-other-programs?T1=t5"&gt;http://explore.live.com/windows-live-essentials-other-programs?T1=t5&lt;/a&gt;) which is part of Windows Essentials 2011 to write blogs for SharePoint 2010.&amp;nbsp; And it is free.&amp;nbsp; You can also use Microsoft Word to author blogs.&lt;br /&gt;&lt;br /&gt;Here is Windows Liver Writer connected to a SharePoint 2010 Blog.&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-3yVlnWngDcI/TxmYw6TvPHI/AAAAAAAAAzU/YuIp-hLe7nM/s1600-h/image%25255B3%25255D.png"&gt;&lt;img alt="image" border="0" height="341" src="http://lh4.ggpht.com/-9mIp6pvyqT4/TxmYxSDpeUI/AAAAAAAAAzc/J5e9PQo6A7E/image_thumb%25255B1%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="613" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I press the Publish button and I have the following result.&amp;nbsp; Pretty easy.&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-HgM3nSV5tp0/TxmYx3QJy5I/AAAAAAAAAzk/jq5QTkP2-uo/s1600-h/image%25255B8%25255D.png"&gt;&lt;img alt="image" border="0" height="449" src="http://lh3.ggpht.com/-8w0k5CIkM0Y/TxmYyhWHrHI/AAAAAAAAAzs/a_D69zr8O0A/image_thumb%25255B4%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="607" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-4523751974743938013?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/4523751974743938013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=4523751974743938013' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/4523751974743938013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/4523751974743938013'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2012/01/blogging-with-sharepoint-2010.html' title='Blogging with SharePoint 2010'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-9mIp6pvyqT4/TxmYxSDpeUI/AAAAAAAAAzc/J5e9PQo6A7E/s72-c/image_thumb%25255B1%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-3669788938403602538</id><published>2012-01-18T07:51:00.001-08:00</published><updated>2012-01-18T07:55:28.756-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010 Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Branding'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Online'/><category scheme='http://www.blogger.com/atom/ns#' term='Sandbox Solutions'/><title type='text'>Custom Web Templates and Activating Features</title><content type='html'>&lt;b&gt;Introduction&lt;/b&gt;&lt;br /&gt;Lately I was messing around with Custom Site and Web Templates with Office 365 and made a few discoveries that I figure I share. Some of it is old, some of it I had to piece together.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Background&lt;/b&gt;&lt;br /&gt;I am building a solution in Office 365 using SharePoint Online. I have a site collection with publishing turned on. I created a custom site template and I need to make sure that site (web level) publishing feature is turned on.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Publishing Feature Disables Creating Site Templates&lt;/b&gt;&lt;br /&gt;For some reason, when you turn on the publishing feature on a site, the “Save site as a template” is removed from Site Settings. Now I have found some blog posting where people go down into the SharePoint install files and make some changes to fix that. First, probably not the best course of action if you want to make sure you have supportable upgrades (and someone actually documents the change &amp;lt;g&amp;gt;). Second, since I am working with Office 365 that is not even an option, so I need to find a solution that does it the right way.&lt;br /&gt;&lt;br /&gt;Another thing I saw people suggest is go to the Save as Template page by typing in “_layouts/savetmpl.aspx”. Do not waste your time with that approach either, it will not work correctly. &lt;br /&gt;&lt;br /&gt;My only option is to create my custom site initially without the publishing feature turned on. Then build some solutions to turn on publishing for the site automatically and ensure that the masterpages are set appropriately. The solutions I looked into are:&lt;br /&gt;&lt;br /&gt;1. Feature Stapling&lt;br /&gt;2. Modifying the Web Template&lt;br /&gt;3. WebProvisioned Event Handler&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Custom Web Template Feature Stapling&lt;/b&gt;&lt;br /&gt;The first solution that I investigated was the most obvious; create a Feature Stapler that would activate the site publishing feature.&lt;br /&gt;&lt;br /&gt;The first thing I ran into was finding the actual name of the template. Traditionally the name of the site template is usually something like STS#0. However since this is a custom site template where would I get the site template name from? I found some scripts that would help me get the template name. Since I was doing the development on my local machine it was easy for me to run some PowerShell on my development box to test this all out (I did find similar code to run API code against Office 365).&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;="1.0"&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;="utf-8"&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Elements&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/sharepoint/"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FeatureSiteTemplateAssociation&lt;/span&gt; &lt;span class="attr"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;="94c94ca6-b32f-4da9-a9e3-1f3d343d7ecb"&lt;/span&gt; &lt;span class="attr"&gt;TemplateName&lt;/span&gt;&lt;span class="kwrd"&gt;="{04FB0801-1DFA-41ED-9B87-06D0FF088F01}#MyCommunityTemplate"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Elements&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;I create a Feature Stapling feature that looked like this. As you can see there is a GUID#template name format.&lt;br /&gt;&lt;br /&gt;Let me save you some though – this is not supported and did not work. Feature Stapling can only be used against the site templates that are OOB the box or deployed down into the hive. You cannot apply do Feature Stapling to a site template created off SharePoint web site.&lt;br /&gt;&lt;b&gt;Modifying the Web Template&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The next thing I tried, which is a recommended approach, is to modify the web template. This is a really easy thing to do now with Visual Studio 2010.&lt;br /&gt;In Office 365 I created a web template the way I needed but without publishing turned on. I then went into site settings and created web template like usual. I then went to the Site Collection Solution Gallery, downloaded the WSP, and opened it in Visual Studio 2010 (using an Import SharePoint Solution Package project).&lt;br /&gt;In the project, there will be a module called “Web templates” and you will find a file called “ONet.xml”. Open this file and you will see &amp;lt;SiteFeatures&amp;gt; and &amp;lt;WebFeatures&amp;gt;.&lt;br /&gt;&amp;lt;SiteFeatures&amp;gt; correspond to the site collection and the following features should already be in the web template because you will have publishing turned on at the site collection level.&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;&amp;lt;!--PublishingPrerequisites Feature--&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Feature&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="{a392da98-270b-4e85-9769-04c0fde267aa}"&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="FeatureDefinition/a392da98-270b-4e85-9769-04c0fde267aa"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;&amp;lt;!--PublishingResources Feature--&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Feature&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="{aebc918d-b20f-4a11-a1db-9ed84d79c87e}"&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="FeatureDefinition/aebc918d-b20f-4a11-a1db-9ed84d79c87e"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;&amp;lt;!--PublishingLayouts Feature--&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Feature&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="{d3f51be2-38a8-4e44-ba84-940d35be1566}"&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="FeatureDefinition/d3f51be2-38a8-4e44-ba84-940d35be1566"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;&amp;lt;!--PublishingSite Feature--&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Feature&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="{f6924d36-2fa8-4f0b-b16d-06b7250180fa}"&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="FeatureDefinition/f6924d36-2fa8-4f0b-b16d-06b7250180fa"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Why are there four when you only turn on one publishing feature for the site collection through the SharePoint UI? The one with f6924d36-2fa8-4f0b-b16d-06b7250180fa is actually the main one, but the other three are supporting, hidden ones. There is not action for you, just brought this up because I thought is it interesting.&lt;br /&gt;&lt;br /&gt;Now this is what you do need to do. Go to the &amp;lt;WebFeatures&amp;gt; and add the following two features.&lt;br /&gt;&lt;br /&gt;Add the Publishing Web after the MetaDataNav:&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;&amp;lt;!--MetaDataNav Feature--&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Feature&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="{7201d6a4-a5d3-49a1-8c19-19c4bac6e668}"&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="FeatureDefinition/7201d6a4-a5d3-49a1-8c19-19c4bac6e668"&lt;/span&gt; &lt;span class="attr"&gt;SourceVersion&lt;/span&gt;&lt;span class="kwrd"&gt;="14.0.0.0"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;&amp;lt;!--PublishingWeb Feature--&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Feature&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="{94c94ca6-b32f-4da9-a9e3-1f3d343d7ecb}"&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="FeatureDefinition/94c94ca6-b32f-4da9-a9e3-1f3d343d7ecb"&lt;/span&gt; &lt;span class="attr"&gt;SourceVersion&lt;/span&gt;&lt;span class="kwrd"&gt;="14.0.0.0"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Add the Publishing Feature after the GridList:&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;&amp;lt;!--GridList Feature--&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Feature&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="{00bfea71-3a1d-41d3-a0ee-651d11570120}"&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="FeatureDefinition/00bfea71-3a1d-41d3-a0ee-651d11570120"&lt;/span&gt; &lt;span class="attr"&gt;SourceVersion&lt;/span&gt;&lt;span class="kwrd"&gt;="1.0.0.0"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;&amp;lt;!--Publishing Feature--&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Feature&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="{22a9ef51-737b-4ff2-9346-694633fe4416}"&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="FeatureDefinition/22a9ef51-737b-4ff2-9346-694633fe4416"&lt;/span&gt; &lt;span class="attr"&gt;SourceVersion&lt;/span&gt;&lt;span class="kwrd"&gt;="14.0.0.0"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;This worked great and was really clean.&lt;br /&gt;&lt;br /&gt;The next thing I needed do was make sure the master pages are set appropriately. Even though I turned on publishing, it does not mean that the mast pages will be set correctly. The solution is again very simple.&lt;br /&gt;&lt;br /&gt;I created a new Feature in Visual Studio 2010 to the web template solution I already had open and set the scope for Web. I then added an event handler to the new Feature. Then in the FeatureActivated event handler I added the following code:&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; (SPWeb web = (SPWeb)properties.Feature.Parent)&lt;br /&gt;{              &lt;br /&gt;    web.MasterUrl = web.ParentWeb.MasterUrl;&lt;br /&gt;    web.AllProperties[&lt;span class="str"&gt;"__InheritsMasterUrl"&lt;/span&gt;] = &lt;span class="str"&gt;"True"&lt;/span&gt;;&lt;br /&gt;    web.CustomMasterUrl = web.ParentWeb.CustomMasterUrl;&lt;br /&gt;    web.AllProperties[&lt;span class="str"&gt;"__InheritsCustomMasterUrl"&lt;/span&gt;] = &lt;span class="str"&gt;"True"&lt;/span&gt;;&lt;br /&gt;               &lt;br /&gt;    web.Update();&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Then I selected the new Feature, clicked on the manifest and copied the GUID for the Feature ID. I then subsequently added that Feature ID into the bottom of the &amp;lt;WebFeatures&amp;gt; section in the ONet.xml file.&lt;br /&gt;Now when this custom web template is provisioned, this code will be executed to set the master page appropriately.&lt;br /&gt;&lt;b&gt;Web Provisioned Event&lt;/b&gt;&lt;br /&gt;Another totally different option to consider is use the new SharePoint 2010 WebProvisioned Event Handler. This event handler is available in the SharePoint Sandbox and can run in Office 365. This solution is very simple:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create a new SharePoint 2010 solution in Visual Studio.&amp;nbsp;&amp;nbsp; &lt;/li&gt;&lt;li&gt;Add an Event Handler.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Then add the following code. &lt;/li&gt;&lt;/ul&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; WebProvisioned(SPWebEventProperties properties)&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;base&lt;/span&gt;.WebProvisioned(properties);&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;using&lt;/span&gt; (SPWeb web = (SPWeb)properties.Web)&lt;br /&gt;    {&lt;br /&gt;        Guid sitePublishing = &lt;span class="kwrd"&gt;new&lt;/span&gt; Guid(&lt;span class="str"&gt;"94c94ca6-b32f-4da9-a9e3-1f3d343d7ecb"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;        web.AllowUnsafeUpdates = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;        web.Features.Add(sitePublishing, &lt;span class="kwrd"&gt;true&lt;/span&gt;);&lt;br /&gt;               &lt;br /&gt;        web.MasterUrl = web.ParentWeb.MasterUrl;&lt;br /&gt;        web.AllProperties[&lt;span class="str"&gt;"__InheritsMasterUrl"&lt;/span&gt;] = &lt;span class="str"&gt;"True"&lt;/span&gt;;&lt;br /&gt;        web.CustomMasterUrl = web.ParentWeb.CustomMasterUrl;&lt;br /&gt;        web.AllProperties[&lt;span class="str"&gt;"__InheritsCustomMasterUrl"&lt;/span&gt;] = &lt;span class="str"&gt;"True"&lt;/span&gt;;&lt;br /&gt;               &lt;br /&gt;        web.Update();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;There are some advantages to this solution. First it is really simple. Second this code will be executed for ANY site that is provisioned. So if you need to always make sure that publishing is turned on for any site that is provisioned and that the master pages are always the same, this may actually be a better solution. Otherwise you will have to do what I previously described for every web template.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusions&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This was a really interesting little exercise that I went through and though it would be interesting to share. Hopefully you will see that there are options based on the business requirements you want to support. This is by no means the only options you have available either.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;References&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Things that I found along the way:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://littletalk.wordpress.com/2010/11/15/programmatically-creating-sites-from-a-custom-web-template/"&gt;http://littletalk.wordpress.com/2010/11/15/programmatically-creating-sites-from-a-custom-web-template/&lt;/a&gt; - Script for getting template name&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spwebeventreceiver.webprovisioned.aspx"&gt;http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spwebeventreceiver.webprovisioned.aspx&lt;/a&gt; - Web Provisioned Feature&lt;/li&gt;&lt;li&gt;&lt;a href="http://social.technet.microsoft.com/Forums/en-US/sharepoint2010programming/thread/48ccb616-f719-46f6-9c1b-a2c96036169b"&gt;http://social.technet.microsoft.com/Forums/en-US/sharepoint2010programming/thread/48ccb616-f719-46f6-9c1b-a2c96036169b&lt;/a&gt; - master page&lt;/li&gt;&lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-IN/sharepoint2010general/thread/ae64c4a3-6d58-4e21-90cc-627fd8f7c984"&gt;http://social.msdn.microsoft.com/Forums/en-IN/sharepoint2010general/thread/ae64c4a3-6d58-4e21-90cc-627fd8f7c984&lt;/a&gt; - master page&lt;/li&gt;&lt;li&gt;&lt;a href="http://social.technet.microsoft.com/Forums/en-US/sharepoint2010programming/thread/d59213d4-0d0d-4256-9f6a-1dbf9300341d"&gt;http://social.technet.microsoft.com/Forums/en-US/sharepoint2010programming/thread/d59213d4-0d0d-4256-9f6a-1dbf9300341d&lt;/a&gt; - using Features with custom web template&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms474369.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms474369.aspx&lt;/a&gt; - Understanding ONet.xml&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-3669788938403602538?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/3669788938403602538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=3669788938403602538' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/3669788938403602538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/3669788938403602538'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2012/01/custom-web-templates-and-activating.html' title='Custom Web Templates and Activating Features'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-7643623124579514407</id><published>2012-01-05T13:26:00.001-08:00</published><updated>2012-01-05T13:26:55.194-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exchange Online'/><category scheme='http://www.blogger.com/atom/ns#' term='Office365'/><category scheme='http://www.blogger.com/atom/ns#' term='ADFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Lync Online'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Online'/><title type='text'>Pilot Office 365 References</title><content type='html'>&lt;p&gt;Are you looking into doing a quick pilot on Office 365? If so, here are some links, documents and references that I have organized will help you get started. &lt;u&gt;Note this is geared for the Office 365 Multitenant offering; not Office 365 Dedicated&lt;/u&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Trial Guide - Office 365 from Microsoft Online Services&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;This is a really good guide that covers the services and capabilities. Then it provides you detailed step-by-step instructions to get Office 365 initially configured. Download - &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=26123"&gt;http://www.microsoft.com/download/en/details.aspx?id=26123&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now once you have done this – there are probably things that you may want to dive deeper on. Here is some good information that will help you. I will try to update this with new stuff as a find it.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Microsoft Office 365 Deployment Guide for Enterprises &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;This is the Microsoft Office 365 Deployment Guide for the Multi-tenant Environment. This is an &lt;u&gt;optional&lt;/u&gt; reference document that provides detailed information on how to do the real production deployment. Reviewing this will give you context before you make the decision to go to production. Download - &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=26509"&gt;http://www.microsoft.com/download/en/details.aspx?id=26509&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Identity and Authentication&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;For a trial or pilot, the best approach is to use Cloud IDs as discussed in the Trial Guide. However one of the more advanced capabilities you may want to pilot Single Sign On with Active Directory Federation Services (ADFS). Here are some references:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;i&gt;How to pilot single sign-on in a production user forest&lt;/i&gt; - &lt;a href="http://community.office365.com/en-us/w/sso/357.aspx"&gt;http://community.office365.com/en-us/w/sso/357.aspx&lt;/a&gt; - A specific article written on how to pilot SSO with ADFS.&lt;/li&gt;    &lt;li&gt;&lt;i&gt;Office 365 Single sign-on: Roadmap&lt;/i&gt; - &lt;a href="http://onlinehelp.microsoft.com/en-us/office365-enterprises/hh125004.aspx"&gt;http://onlinehelp.microsoft.com/en-us/office365-enterprises/hh125004.aspx&lt;/a&gt; - A set of steps set up ADFS with Office 365.&lt;/li&gt;    &lt;li&gt;&lt;i&gt;Office 365 Deployment Guide&lt;/i&gt; - &lt;a href="http://community.office365.com/modg/default.aspx"&gt;http://community.office365.com/modg/default.aspx&lt;/a&gt; - This was referenced above it has some specific sections on identity.&lt;/li&gt;    &lt;li&gt;&lt;i&gt;ADFS Guidance&lt;/i&gt; - &lt;a href="http://technet.microsoft.com/en-us/library/adfs2(WS.10).aspx"&gt;http://technet.microsoft.com/en-us/library/adfs2(WS.10).aspx&lt;/a&gt; – Official ADFS document which includes planning, installation, configuration and management.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;Exchange Online&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The following is some good information for testing out Exchange Online:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;i&gt;User Email Help&lt;/i&gt; - &lt;a href="http://help.outlook.com/en-us/140/cc325690.aspx"&gt;http://help.outlook.com/en-us/140/cc325690.aspx&lt;/a&gt; - Covers ton of stuff such as Email, Calendar / Reminders, Contacts and Groups, Voice Mail, Email Set Up, Mobile Phones, and Options and Videos.&lt;/li&gt;    &lt;li&gt;&lt;i&gt;Email Administration&lt;/i&gt; - &lt;a href="http://help.outlook.com/en-us/140/ff657678.aspx"&gt;http://help.outlook.com/en-us/140/ff657678.aspx&lt;/a&gt; - This covers tons of things such as configuration, user management, roles, permissions, security (SPAM, etc.), compliance (archive, retention, holds, audit, journals, rights management, etc.), unified messaging configuration, Exchange ActiveSync, PowerShell, mailbox migration, hybrid mail and some help videos.&lt;/li&gt;    &lt;li&gt;&lt;i&gt;Exchange Online Administration&lt;/i&gt; - &lt;a href="http://technet.microsoft.com/en-us/exchange/hh127068.aspx"&gt;http://technet.microsoft.com/en-us/exchange/hh127068.aspx&lt;/a&gt; - Here is another site that will help you with finding administration information for Exchange Online.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;SharePoint Online&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The following is some good information for testing out SharePoint Online:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;i&gt;Help and How to&lt;/i&gt; - &lt;a href="http://office.microsoft.com/en-us/sharepoint-help/sharepoint-online-for-office-365-for-enterprises-FX102052854.aspx"&gt;http://office.microsoft.com/en-us/sharepoint-help/sharepoint-online-for-office-365-for-enterprises-FX102052854.aspx&lt;/a&gt; - This is a great reference as it covers everything from how administrators should configure the service, planning, design and the basics that end-users need to know about on how to use SharePoint. You can also click here to be taken to an index list of all the stuff covered - &lt;a href="http://office.microsoft.com/en-us/sharepoint-online-enterprise-help/"&gt;http://office.microsoft.com/en-us/sharepoint-online-enterprise-help/&lt;i&gt;&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;i&gt;SharePoint Online Developer Resource Center&lt;/i&gt; - &lt;a href="http://msdn.microsoft.com/en-us/sharepoint/gg153540.aspx"&gt;http://msdn.microsoft.com/en-us/sharepoint/gg153540.aspx&lt;/a&gt; - There is an immense amount of content that is captured in here. There are developer overviews, developer guides, Office 365 Developer Training Kits (which you dive in has tons of references, videos, etc.), etc.&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;i&gt;Note &lt;/i&gt;– I highly recommend reading the Developer Guide - &lt;a href="http://msdn.microsoft.com/en-us/library/hh147180.aspx"&gt;http://msdn.microsoft.com/en-us/library/hh147180.aspx&lt;/a&gt; because it will help you understand what can be developed in Office 365.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;i&gt;SharePoint Online Administration Center&lt;/i&gt; - &lt;a href="http://technet.microsoft.com/en-us/sharepoint/gg144571.aspx"&gt;http://technet.microsoft.com/en-us/sharepoint/gg144571.aspx&lt;/a&gt; - Here is another site that will help get to information for administration of SharePoint Online.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;Lync Online&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The following is some good information for testing out Lync Online:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;i&gt;Help and How to&lt;/i&gt; - &lt;a href="http://office.microsoft.com/en-us/communicator-help/CL102114544.aspx"&gt;http://office.microsoft.com/en-us/communicator-help/CL102114544.aspx&lt;/a&gt; - This guide provides several links on everything from how administer, troubleshoot and basic end-user instructions.&lt;/li&gt;    &lt;li&gt;&lt;i&gt;Lync Online Administration Center &lt;/i&gt;- &lt;a href="http://technet.microsoft.com/en-us/lync/gg348843.aspx"&gt;http://technet.microsoft.com/en-us/lync/gg348843.aspx&lt;/a&gt; - Here is a site that organizes information associated to Lync Online administration.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;Office Professional Plus for Office 365&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;i&gt;Deployment and Management of Office&lt;/i&gt; - &lt;a href="http://technet.microsoft.com/en-us/office/gg696034.aspx"&gt;http://technet.microsoft.com/en-us/office/gg696034.aspx&lt;/a&gt; - This organizes numerous resources on managing Office Professional Plus for Office 365.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;Miscellaneous&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Virtual labs&lt;/b&gt; - &lt;a href="http://technet.microsoft.com/en-us/office365#tab=1"&gt;http://technet.microsoft.com/en-us/office365#tab=1&lt;/a&gt; - Some labs on various topics.&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Microsoft Office 365 Multi-tenant Service Descriptions &lt;/b&gt;- &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=13602"&gt;http://www.microsoft.com/download/en/details.aspx?id=13602&lt;/a&gt;&lt;b&gt; &lt;/b&gt;- There are numerous Office 365 Multi-tenant Service Descriptions available covering such topics as: Exchange Online Archiving, Exchange Online Enterprise Services, Lync Online Enterprise Services, SharePoint Online Services, Identity Services, etc. These documents can be used as supplementary information resources while doing a pilot.&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-7643623124579514407?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/7643623124579514407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=7643623124579514407' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/7643623124579514407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/7643623124579514407'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2012/01/pilot-office-365-references.html' title='Pilot Office 365 References'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-1836435371796925919</id><published>2012-01-04T19:59:00.001-08:00</published><updated>2012-01-04T19:59:09.564-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office365'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Governance'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='FAST'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Topology'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='BCS'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Online'/><category scheme='http://www.blogger.com/atom/ns#' term='Sandbox Solutions'/><title type='text'>Architecture Considerations for Moving SharePoint to Office 365 and SharePoint Online</title><content type='html'>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Why are customers looking to come to the Office 365 cloud? Customers want an environment that can scale on-demand. Customers do not want to be in the business of managing and patching software . Customers want a solution that give better business continuity and service level agreements to their users. Customers want solutions that are better governed and that will force them to do better governance. Customers want to be in the business of building solutions (i.e. an airplane company should focus on building planes; not writing enterprise applications from the ground up).&lt;/p&gt;  &lt;p&gt;When I talk with customers about SharePoint Online, this is where they want to move to.&lt;/p&gt;  &lt;p&gt;In this blog I am going to talk about how an organization should be looking at moving to SharePoint Online.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;In first half we are going to analyze SharePoint Architecture and Governance and review what potential blockers people see when moving to the cloud.&lt;/li&gt;    &lt;li&gt;In the second half I am going to have a more detailed discussion around how to architecturally plan to move to SharePoint Online.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;Why the decision is not always straight forward?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Coming to SharePoint Online in Office 365 may not sometimes be the most straight forward decision for organizations that have made a large investment in SharePoint. Going to SharePoint Online is really easy for organizations that are in it for document management, intranets, OOB features, SharePoint Designer, etc. It gets harder for organizations that have had poor governance of their on-premise environments, made signification investments with custom code, utilize features not available in cloud, have a heavy reliance on third party solutions, etc.&lt;/p&gt;  &lt;p&gt;There is a solution to these issues but it requires an organization to take a step back and look at what they have.&lt;/p&gt;  &lt;p&gt;Poor governance is probably one of the largest changes organizations have faced with SharePoint. These challenges could have been avoided thought with good forethought and planning. There is not always a one size fit all solution either; SharePoint is powerful platform that can be used to be used to implement a very broad set of business requirements.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SharePoint Architecture Foundations&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The following a Venn diagram that I always draw on whiteboard with customers.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-MS8pcL_n86k/TwUf9FGOTTI/AAAAAAAAAxk/p-i_QrdrpDg/s1600-h/image%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-UHyibz8TaBk/TwUf9xfoLiI/AAAAAAAAAxs/4fhmdPepE7c/image_thumb.png?imgmax=800" width="244" height="228" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I typically say that that:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Information Architecture&lt;/strong&gt; – Is content types, taxonomy, topology, site collections, sites, libraries, lists, and solutions that drive the management of this content. The information architecture should be driven by business requirements.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Logical Architecture&lt;/strong&gt; – Is the architecture of SharePoint services, web apps, databases, etc. to support the information architecture.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Physical Architecture&lt;/strong&gt; – Is the configuration, deployment, farms, etc. that actually host the SharePoint logical architecture.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I admit this is open to interpretation but let’s use this as a foundation for discussion.&lt;/p&gt;  &lt;p&gt;Here are some of the biggest problems organizations that have come up when I discuss the diagram above:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Started with Physical Architecture&lt;/strong&gt; – This is the first mistake that many seem to make. Smart IT are concerned about how many servers to buy and configure they forget to actually create an environment needed to support their business requirements. What usually happens is the environment is not scaled or organized to support the actual utilization; this is where the trouble starts. This pretty much goes away if you go to the cloud.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;No business requirements and software design best practices&lt;/strong&gt; – One of the biggest, consistent challenges I see many organizations have with SharePoint is no business requirements. I typically just see organizations create very light documents (a bullet list) of requirements and just start building. I very rarely see organizations actually do software design best practices. There are no use cases, data models, ERDs, UI wireframes, data dictionaries, architecture documents discussing what SharePoint elements they plan to use, etc. Why; because SharePoint is such an easy platform to start building with. I personally believe SharePoint is one of the best solution platforms on the market but sometimes organizations need architect a solution fist. This does not go away with SharePoint Online.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;No Governance&lt;/strong&gt; – Organizations usually forget to put Governance plans to manage content and solutions running in SharePoint. A solution can be anything from a group of team sites or a complex .NET application in SharePoint. I have even seen organizations create Governance plans but then not manage nor adhere to them. An analogy would be a organizing a ton of boxes in their basement really well (with labels too). However as time goes on, they just keep on stuffing and stuffing the room with more boxes so that entry to the room is blocked. A good SharePoint environment needs care and feeding. The information, logical and physical architectures need to have policies and procedures to manage it. Policies, procedures, service level agreements, etc. must be put into place. With SharePoint Online several of these Governance woes are removed because the Office 365 cloud manages the environment. Still Governance needs to be but in place to manage content and solutions deployed in Office 365.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Over Regulation&lt;/strong&gt; – I have also seen the term “SharePoint Governance” used as a crutch. I have seen organizations lock down SharePoint too much. My response to that is was there a requirement to lock it down? If so, the right thing was done like a publishing intranet or Internet site – no user should have rights to do what they want. There should be a locked controlled publishing and branding process. However it is perfectly acceptable to have areas of SharePoint that are pure collaboration. Your information architecture and governance plans will drive business users to put content and solutions in the appropriate areas.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;There are more things to think about but I am getting a little preachy J&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;A Not So Unusual Situation&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Here is a very common scenario that backs up what I just described. It is very common for an organization to start a SharePoint environment like the following. As you can see they start with a top level SharePoint site. They create some department level sites and some sub sites for their intranet. All in all this is a pretty good start; right?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-WBhI6qm7Yus/TwUf-T7_sUI/AAAAAAAAAx0/Dp4YAOr8sVw/s1600-h/image%25255B6%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-sPtyngNV9mA/TwUf-jn-KwI/AAAAAAAAAx8/ZXvG_Jddbos/image_thumb%25255B2%25255D.png?imgmax=800" width="473" height="352" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;However within a few months (after some very heavy business and user adoption) we have the following.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-XHg_s8IFS-k/TwUf_AtfjHI/AAAAAAAAAyE/ugC1kKViV1c/s1600-h/image%25255B10%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-3hwm0mF2jRg/TwUf_g4wqWI/AAAAAAAAAyM/HaoOVAFS2eA/image_thumb%25255B4%25255D.png?imgmax=800" width="466" height="402" /&gt;&lt;/a&gt;&lt;/p&gt;      &lt;p&gt;We see such things as:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Team sites starting to sprawl underneath some of the sub-sites within a department. The challenge is being able to support collaboration in what was meant to initially be a publishing site.&lt;/li&gt;    &lt;li&gt;Navigation, presentation, branding and user experience is not consistent.&lt;/li&gt;    &lt;li&gt;We see custom applications either built from scratch or third party solutions purchased and embedded in sub-sites of a department. The challenge is should these custom solutions be hooked directly here?&lt;/li&gt;    &lt;li&gt;Department level project sites are created. The challenge is that as project sites grow and take on new responsibilities for the business, they need to be elevated and made accessible like other sites.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;There tons more. And I have had customers tell me this is not an issue with “SharePoint”. They currently have these same exact challenges with their legacy intranet, portals, etc. So why do organizations keep on having these challenges? I usually point to a lack of attention to Governance and Information Architecture.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;So How Should You Be Thinking About This?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;What if content and solutions that are to be deployed are delivered within a framework? Not a “novel” idea either. Hopefully we can make it as simple as we can. Instead of just adding more and more sites and applications; have rules that drive where we put things. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-tKQk0vVRmak/TwUgAIXW74I/AAAAAAAAAyU/lwcS_uUZFB0/s1600-h/image%25255B15%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-naM4OJx8zyM/TwUgAj3gnpI/AAAAAAAAAyc/ndBGbydaiIE/image_thumb%25255B7%25255D.png?imgmax=800" width="538" height="469" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;For example:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The Intranet site should remain a dedicated publishing site collection. This would be geared towards business users having read-only access with only a small set of content owners. Content is delivered in a consistent and clean fashion so that every site is the same giving the user a unified user experience.&lt;/li&gt;    &lt;li&gt;Create a separate site collection for team sites with appropriate service level agreements. In the team site collection, sites should be can be dynamic generated from pre-define site templates. Users are given the ability to do pure collaboration, standing up lists, libraries, etc. They should be able to share information to complete everyday business tasks. There would also be an expectation that this area is not uniform and that users can do what they want with these sites. Retention polices can be put in place to discard these sites if they have not been used for a pre-defined period of time.&lt;/li&gt;    &lt;li&gt;Create another site collection for business project sites. These have different support SLAs and Governance. These sites are a little bit more formal in nature with only a subset of people that would have access to manage them. Maybe there are designers from the IT department who have responsibility for building and supporting them. There could be policies and automated procedures to move content out of them to other site collections. Retention policies on these sites would be completely different than team sites and these sites may only be deleted when the project is over (or never deleted).&lt;/li&gt;    &lt;li&gt;For custom applications, instead of embedding the application into a sub-site, place them into their dedicated site collections. Navigation links can be made to the application from other site collections. This would give significantly more flexibility to move it or provide it more resources. &lt;/li&gt;    &lt;li&gt;Instead of creating one massive site collection where all scanned documents or records create multiple site collections and then route content to them based on business rules.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This list I provided is not meant to be an all-encompassing list of possibilities and/or solutions. &lt;strong&gt;Hopefully you will see that you need to start vertically and horizontally partitioning solutions and data based on such simple things as business rules, security access, data characteristics, etc. Knowing this will help you identify the types of site collections, sites, features, content types, managed metadata, site templates, permission levels, etc. that you need to configure SharePoint with.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The net result is you would take the previous diagram and start creating management boundaries based on the characteristics of the solutions and data managed in SharePoint. This is why Information Architecture is so critical for Enterprise Content Management system like SharePoint.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Putting everything into a single site collection really puts an organization into a tough spot to scale with the business. Microsoft has been publishing great technical diagrams for SharePoint 2010 (&lt;a href="http://technet.microsoft.com/en-us/library/cc263199.aspx"&gt;http://technet.microsoft.com/en-us/library/cc263199.aspx&lt;/a&gt;) and SharePoint 2007 (&lt;a href="http://technet.microsoft.com/en-us/library/cc263199(office.12).aspx)"&gt;http://technet.microsoft.com/en-us/library/cc263199(office.12).aspx)&lt;/a&gt;. Please review and get to know these diagrams well because they accurately tell everything I am talking about here.&lt;/p&gt;  &lt;p&gt;Now some people counter this whole thing with why does SharePoint not give this to me? Why does SharePoint not auto-govern itself? SharePoint absolutely comes with a ton of features and capabilities that support a good governance model like Features, site templates, sandbox, managed metadata service, permission levels, and the list goes on. All of the configuration settings are there and organizations just need to set them as appropriate for their business.&lt;/p&gt;  &lt;p&gt;I promise; we are coming back to the SharePoint Online cloud but we need to finish setting the stage.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How You Should Change Your Thinking&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The following is a diagram a colleague (&lt;a href="http://blogs.msdn.com/b/edhild/"&gt;http://blogs.msdn.com/b/edhild/&lt;/a&gt;) and I commonly discuss with customers. I am shamelessly using it because this simple diagram really helps customers with a basic understanding of Information Architecture with SharePoint. Plus it supports everything that I just discussed. This is what we call the “Arch of SharePoint Data”. This is not all encompassing list, however there are different extremes. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-upH88GUkTVo/TwUgAw3VeJI/AAAAAAAAAyk/6caUXO_DDxM/s1600-h/image%25255B20%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-xiN7beQ3jNI/TwUgBWKWhwI/AAAAAAAAAys/Hr80BgZ2e0E/image_thumb%25255B10%25255D.png?imgmax=800" width="700" height="384" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There is publishing which are sites that are managed by a small group of users and read by a large community of read-only users. While on the other side is something like MySites which is my personal area to manage information and data. In between these two extremes are tons of different types of sites. Department sites, project sites, organization sites, custom application sites, team sites, etc. There are too many to even try to draw. Each one of these types of sites has different security, retention, data usage, transaction management, business rules, automation, etc.&lt;/p&gt;  &lt;p&gt;I tell customers is that is perfectly ok to have a team sites area that are for pure collaboration where business users can spin-up a site, do some work on it for two months and then move on. Some people call this the “wild wild west” and that is ok. Just do not allow pure collaboration in you publishing area which is probably one of the most common mistakes J.&lt;/p&gt;  &lt;p&gt;Coming full circle, you can see this is all about solution and data management. An Information Architecture is going to tell you the data characteristics. This will drive you to put content in one area versus another. &lt;/p&gt;  &lt;p&gt;This is the beauty of SharePoint. It allows you to create and manage business workloads based on your specific business and mission. Once you have the Information Architecture nailed down, you can determine the Logical Architecture (services) you need and then the Physical Architecture needed to support this. By doing this, you know that both your Logical and Physical Architectures will be driven off real business requirements.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Where Does this All Fit with SharePoint Online?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Once you build an Information Architecture you will see that many of these partitions can be moved to the cloud. Intranets, team sites, project sites, my sites, light weight custom solutions, etc. can all be moved to the cloud. If you look at the “Arch of SharePoint Data” diagram, depending on your scenarios, there is a good chance that 80% to 90% of your solutions can be moved to the SharePoint Online cloud. For some organizations, they will be able to move everything up to the cloud. For some organizations they will have a hybrid.&lt;/p&gt;  &lt;p&gt;Regardless the re-architecture should be a primary task in your SharePoint 2007 migrations to SharePoint 2010 anyways. Going through this exercise will put you in a position to move pieces to the cloud and with time, more and more.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;So what are the Gaps with SharePoint Online?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you want to know the exact answer it is clearly spelled out and completely available for you. Read either the Multi-tenant SharePoint Online Service Description (&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=13602"&gt;http://www.microsoft.com/download/en/details.aspx?id=13602&lt;/a&gt;) or the Dedicated SharePoint Service Description (&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=18128"&gt;http://www.microsoft.com/download/en/details.aspx?id=18128&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;However really understanding these gaps depends on the perspective and approach you are taking with SharePoint. As I say a lot, “&lt;strong&gt;SharePoint means a lot of different things to different people&lt;/strong&gt;”. I have seen customers extremely happy with using SharePoint with out of the box features and SharePoint Designer. While I have seen other customers use SharePoint as a full application development platform writing thousands lines of code. Knowing what SharePoint means to you will dictate your approach to the SharePoint Online cloud. The approach that I outlined in the first part of this bog will really help you with that decision process for moving to the cloud.&lt;/p&gt;  &lt;p&gt;When you read the SharePoint Online service descriptions for both the multitenant and dedicated you will see that the gaps are really small. However there are some ones you must be aware of as they will affect your decisions on how to move to the cloud. The big ones that most people bring up are full trust code, business intelligence, FAST search, PowerShell, and Central Administration. &lt;strong&gt;This list will quickly change and become outdated because more and more features will be released with time. &lt;/strong&gt;However let me address each one as it stands today:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Full trust&lt;/strong&gt; code is usually the first one the first challenges. Right now, the only way to deploy custom code to the SharePoint Online Multitenant cloud is using a Sandbox solution. For the SharePoint Online Dedicated cloud, full trust code is supported but it must adhere to a strict set of rules (which are publically available) and the code will only be deployed within set windows. Why such restrictions and strong governance? Well, for all the obvious reasons that would come up if you were tasked with having to run an extremely large SharePoint environment on-premise. What has been one of the biggest issues with SharePoint 2007 Governance? It was developers writing complex code on SharePoint and disregarding the fact that an error they write may take down other sites in the farm (like the content query web part that retrieved too much data on the home page of the intranet &amp;lt;g&amp;gt;). We need to ensure that there is strong security and good performing code and that there is no possibility the Company A can take down Company B. The only way to achieve that service level agreement is to have an environment for running governed code. The net effect is that there will be limitations but you will have that guaranteed uptime. &lt;strong&gt;My golden rule&lt;/strong&gt; is that all SharePoint development (on-premise and cloud) should begin with Sandbox solutions and only when the customizations cannot run in the Sandbox then build as full trust solutions. Doing this will ensure you have agility to move to the SharePoint Online cloud when you are ready. If you really need to do complex operations and manage data structures consider using services Windows Azure integrated through Business Connectivity Services (BCS), Silverlight, etc. But still that may not always suffice and that is why SharePoint Hybrid implementations will be commonplace for organizations with mature SharePoint deployments. I will cover this in more detail shortly.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Business Intelligence &lt;/strong&gt;today in Office 365 is Excel and Visio Services. Other SharePoint business intelligence services like PerformancePoint, SSRS, PowerPivot and Chart Parts are not available right now. Another limitation today is Excel and Visio services only utilize data that is within the SharePoint Online context; it is not able to reach outside (i.e. to back-end databases). More and more capability will be released through the Office 365 cloud; just for the time being Silverlight and Windows Azure can be used to satisfy these requirements.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;FAST Search &lt;/strong&gt;is not available in the SharePoint Online cloud right now. It is possible to integrate a local FAST farm with SharePoint Online Dedicated; but not Multitenant. Still take comfort in the fact that SharePoint 2010 search made significant jumps forward from the SharePoint 2007 offering and provides a very strong search experience. With time more and more advanced search capabilities will be released in the cloud.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;PowerShell &lt;/strong&gt;currently is not fully available with SharePoint Online. There are a lot of PowerShell commands available for Exchange Online and user subscription management; however the full set of SharePoint PowerShell commands is not available today.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Central Administration Site &lt;/strong&gt;is not available and this should be expected by anyone who understands what cloud architecture. There are administration screens available to some operation that you would normally perform in Central Admin however it is limited and does not give you the granular control. Why? Well this is the cloud. Customers want to come to the environment so they do not need to be in the business of managing every little configuration of SharePoint.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;And the reality is with more and more releases of SharePoint Online this gap is going to continue to close. Still, even if it were to completely close, there will be perfectly valid reasons why some SharePoint may remain on-premise thus, creating a SharePoint Hybrid environment.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What is the SharePoint Hybrid Architecture?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SharePoint Hybrid is as simple as it sounds; it is some SharePoint delivered through the cloud and some SharePoint delivered through on-premise. What will drive you to have SharePoint on-premise? All of that has pretty much been covered to this point. Anything from a specific feature to a business policy may keep some SharePoint on-premise. However using the approach I laid out, you will be able to significantly reduce your footprint of SharePoint on-premise and gain the advantages of the cloud.&lt;/p&gt;  &lt;p&gt;The great thing about using SharePoint on-premise is that it is the same software being run in the cloud. This means it is very easy to deliver a consistent user experience between on-premise and the cloud. Branding, navigation, security groups and single sign-on can be configured in such a way that the user can go between these two environments and not know it.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What Type of Cloud is SharePoint Online?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;One other thing I want to discuss is what type of cloud is SharePoint Online. I really like this picture it really spells it out for people whom are not fully aware of the multiple delivery models for cloud computing. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/--lbrt4M_HkQ/TwUgBhxTUYI/AAAAAAAAAy0/mE16NNmk2qM/s1600-h/image%25255B25%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-Xkl4CJDlvWA/TwUgCB0tlWI/AAAAAAAAAy8/CXC6Qr8aLzI/image_thumb%25255B13%25255D.png?imgmax=800" width="646" height="321" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Starting on the left side, you see on-premises and this is how most organizations run SharePoint. You must own the entire solution; all the way up the computing stack. Next is Infrastructure as a Service (IaaS) which is the cloud environment that is managed all the way up to the virtualization layer. The company is responsible for everything else; including the management of the operating systems. From a SharePoint perspective that means all the software installation, configuration, management, patching, adding new servers to meet demand, load balancing, etc. needs to be managed by the you. IaaS gets you of the business of hosting virtual SharePoint servers.&lt;/p&gt;  &lt;p&gt;Platform as a Service (PaaS) is running the environment all the way up to the application and data tiers. Windows Azure is a PaaS cloud. In this cloud you build custom applications, data models and run them through a highly available environment.&lt;/p&gt;  &lt;p&gt;Software as a Service (SaaS) is the entire stack delivered in the cloud and this is the delivery model for SharePoint Online. You do not have to install software, manage patches, availability, etc. This environment gets you out of the business of managing software and into the business of building solutions. SaaS does not provide the granular level of control of the SharePoint environment (which we have discussed).&lt;/p&gt;  &lt;p&gt;The reality is that organizations and companies need to save costs and SaaS is the cloud delivery framework they want for the long-run. IaaS can run SharePoint 2010 and can be leveraged as a replacement for on-premise complex SharePoint computing. Still it is well recognized by industry that companies want more SaaS solutions.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Supplement with SharePoint Online with Windows Azure&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Windows Azure (PaaS) and SharePoint Online (SaaS) can be used together to deliver end-to-end cloud solutions. Companies that have mature SharePoint deployments commonly have:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Code that runs in full-trust&lt;/li&gt;    &lt;li&gt;Are managing complex data&lt;/li&gt;    &lt;li&gt;Require the ability to do back-end systems integration.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;One thing I have been talking with customers about is offloading that code out of SharePoint and into to the Windows Azure (PaaS) cloud. The Windows Azure cloud allows you to develop and deliver custom code, services, complex data (SQL Azure) and connected back-end integration (AppFabric). These complex operations can be connected through Business Connectivity Services (BCS) in SharePoint Online.&lt;/p&gt;  &lt;p&gt;This makes a lot of sense too when you take a step back. I have already said that you should develop SharePoint code to the Sandbox first and when there is good reason to deliver outside the Sandbox. Here is a similar question. At what point do you know you should be developing in SharePoint? I fully recognize there is a gray area here.&lt;/p&gt;  &lt;p&gt;I say good software development patterns and practices should drive that decision. This is why Windows Azure is so interesting with Office 365 because we can move complex code that cannot run in the SharePoint Sandbox to the Windows Azure cloud. I recognize this is not a perfect rule because some code needs to run in SharePoint as full trust. However this should be part of your design analysis to reduce to your SharePoint on-premise footprint.&lt;/p&gt;  &lt;p&gt;There are lots of different ways Windows Azure can be utilized with SharePoint Online. There may be situations where you need:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;To work with data in SharePoint but you have complex relationships in the data model that are not right for SharePoint lists. Use SQL Azure to manage that data and build services and connect via BCS or Silverlight.&lt;/li&gt;    &lt;li&gt;To integrate with line of business applications on premise use custom services deployed in Windows Azure or AppFrabic. Again BCS or Silverlight can connect Windows Azure which is conduit to line of business applications.&lt;/li&gt;    &lt;li&gt;To use custom web services to perform complex computations and logic. Again offload that to Windows Azure.&lt;/li&gt;    &lt;li&gt;As well, reverse the direction. There may be solutions and applications delivered in Windows Azure can utilize SharePoint Online services. There are SharePoint web services, REST services for data, SharePoint Client API, Javascript APIs and Silverlight APIs that can be used as integration points. A simple scenario could be a web page deployed in Windows Azure that needs to manage documents. Instead of building that up from scratch in Windows Azure just connect through SharePoint Online APIs and deliver SharePoint Online services through that custom web page.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;At the end of the day both SharePoint Online and Windows Azure can be used to complement each other in the delivery enterprise business solutions through the cloud.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-Vo4EVxv9sQQ/TwUgCrkM7QI/AAAAAAAAAzE/INTMVK9ac64/s1600-h/image%25255B30%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-39DscM9Z2TA/TwUgDDbV96I/AAAAAAAAAzM/3ZfbBpHfrnc/image_thumb%25255B16%25255D.png?imgmax=800" width="767" height="343" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Conclusions&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Why did I go through all of this? The answer is simple; to give SharePoint Architects ideas on how to move forward with SharePoint Online. There really should be no blockers as long as you take a realist look at your Information Architecture and assess how you use SharePoint. There will be lots of stuff which can clearly be moved to the cloud, there will be some stuff where it is not appropriate (hybrid) and then there is that gray area. However I really hope that approach I put forth will help you with your thinking into how to significantly reduce, if not completely remove, your SharePoint on-premise footprint.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Thanks&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Special thanks to Chris Geier and Stephen Cawood for providing me feedback and advice as I wrote this.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-1836435371796925919?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/1836435371796925919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=1836435371796925919' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/1836435371796925919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/1836435371796925919'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2012/01/architecture-considerations-for-moving.html' title='Architecture Considerations for Moving SharePoint to Office 365 and SharePoint Online'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-UHyibz8TaBk/TwUf9xfoLiI/AAAAAAAAAxs/4fhmdPepE7c/s72-c/image_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-8400934505807221403</id><published>2011-12-14T21:44:00.001-08:00</published><updated>2011-12-14T21:44:14.722-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office365'/><title type='text'>Office 365 HIPPA Compliant</title><content type='html'>&lt;p&gt;Pretty excited we are now supporting this HIPPA Privacy and Security Standards for Office 365 - &lt;a href="http://blogs.msdn.com/b/microsoft_in_health/archive/2011/12/14/microsoft-office-365-cloud-based-productivity-service-complies-with-hipaa-standards-for-data-protection-and-security.aspx"&gt;http://blogs.msdn.com/b/microsoft_in_health/archive/2011/12/14/microsoft-office-365-cloud-based-productivity-service-complies-with-hipaa-standards-for-data-protection-and-security.aspx&lt;/a&gt;. This question has come up a lot and will allow health related organizations and agencies to get some real significant cost savings utilizing Office, Exchange, SharePoint and Lync.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-8400934505807221403?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/8400934505807221403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=8400934505807221403' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/8400934505807221403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/8400934505807221403'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/12/office-365-hippa-compliant.html' title='Office 365 HIPPA Compliant'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-1288601572675614092</id><published>2011-12-04T13:22:00.001-08:00</published><updated>2011-12-04T13:22:28.814-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Records Management'/><title type='text'>SharePoint - Presidential Memo to Records Management</title><content type='html'>&lt;p&gt;On November 28, 2011 a new Presidential Memorandum was sent out regarding Records Management - &lt;a href="http://www.whitehouse.gov/the-press-office/2011/11/28/presidential-memorandum-managing-government-records"&gt;http://www.whitehouse.gov/the-press-office/2011/11/28/presidential-memorandum-managing-government-records&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In&lt;i&gt; &lt;/i&gt;the Mandate there are two notable action items that should be top of mind with your customer and open the door for a discussion:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;“Within 30 days of the date of this memorandum, designate in writing to the Archivist of the United States (Archivist), a senior agency official to supervise the review required by subsection”&lt;/li&gt;    &lt;li&gt;“Within 120 days of the date of this memorandum, each agency head shall submit a report to the Archivist and the Director of the Office of Management and Budget (OMB) that describes the agency's current plans for improving or maintaining its records management program…”&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;This is a great opportunity for Federal Agencies to utilize what they own, specifically SharePoint, to assist you with building records management solutions. As a starting point, customers such as USDA where they have&lt;i&gt; &lt;/i&gt;implemented a SharePoint 2010 Standard&lt;i&gt;-&lt;/i&gt;only solution (no additional 3&lt;sup&gt;rd&lt;/sup&gt; party software was required) to deliver cost effective Records Management - &lt;a href="http://www.microsoft.com/casestudies/Microsoft-Sharepoint-Server-2010/United-States-Department-of-Agriculture/Federal-Agency-Ensures-Compliance-Saves-Costs-with-Records-Management-Solution/4000009950"&gt;USDA Records Management Case Study&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;If you required DoD 5015.2 certified records management solutions, Microsoft does have ISV partners that have built solutions that adhere to these standards.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-1288601572675614092?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/1288601572675614092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=1288601572675614092' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/1288601572675614092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/1288601572675614092'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/12/sharepoint-presidential-memo-to-records.html' title='SharePoint - Presidential Memo to Records Management'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-2799006905532724156</id><published>2011-12-01T19:43:00.001-08:00</published><updated>2011-12-01T19:43:26.135-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='FAST'/><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Search'/><title type='text'>Gartner Rates Microsoft a Leader in Enterprise Search</title><content type='html'>&lt;p&gt;I am happy to say the Microsoft has again been ranked as a top Enterprise Search provider in the marketplace - &lt;a href="http://www.gartner.com/technology/reprints.do?id=1-1835DKL&amp;amp;ct=111123&amp;amp;st=sb"&gt;http://www.gartner.com/technology/reprints.do?id=1-1835DKL&amp;amp;ct=111123&amp;amp;st=sb&lt;/a&gt;. You will see that some Enterprise Search providers dropped in rankings and some were removed. &lt;/p&gt;  &lt;p&gt;As you can see, FAST is not slowing down and we have an extremely strong roadmap for it. It is a very fiscally responsible Enterprise Search solution when you consider it as part of your Total Cost of Ownership (TCO) when investing with SharePoint Enterprise. FAST provides tons of added features and capabilities to solutions such as Portals, Sites, ECM, Document Management, BI, Social, Composites, Platform Development, etc. Plus if you know how to configure SharePoint Search; FAST search is configured and managed through the same screens and procedures thus requiring less ramp up time.&lt;/p&gt;  &lt;p&gt;Even if an organization just needs a pure Enterprise Search solution, FAST is a great Enterprise Search platform. Having SharePoint in the mix, is great value additive because many other Enterprise Search ends provide you no user interfaces. Yes FAST does have services so that other applications tiers can tap into it. However having a web portal like SharePoint immediately available with numerous web parts to start building search screens and search applications is a huge time and money saver. Plus, when Enterprise Search is made accessible through SharePoint, you get to take advantage of all the other SharePoint features to deliver a more engaging user experience. For instance:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;You can create blogs from the search team to the users&lt;/li&gt;    &lt;li&gt;Wikis to explain to users how to do advanced search&lt;/li&gt;    &lt;li&gt;Stream training videos&lt;/li&gt;    &lt;li&gt;Maintain documents and FAQs&lt;/li&gt;    &lt;li&gt;Create a Search Knowledge Base&lt;/li&gt;    &lt;li&gt;Create support forums&lt;/li&gt;    &lt;li&gt;Manage technical specifications about line of business data that is index&lt;/li&gt;    &lt;li&gt;Etc.&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-2799006905532724156?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/2799006905532724156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=2799006905532724156' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/2799006905532724156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/2799006905532724156'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/12/gartner-rates-microsoft-leader-in.html' title='Gartner Rates Microsoft a Leader in Enterprise Search'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-6983832232719376198</id><published>2011-11-28T20:22:00.001-08:00</published><updated>2011-11-28T20:22:01.446-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Productivity Hub'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><title type='text'>Productivity Hub now supports SharePoint 2010 SP1</title><content type='html'>&lt;p&gt;The SharePoint 2010 Productivity Hub has just been released support SP1 - &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=28178"&gt;http://www.microsoft.com/download/en/details.aspx?id=28178&lt;/a&gt;. This has been a rather popular web site to install into SharePoint for knowledge management around Microsoft products. I have also seen customers take it and extend the content delivered in this site to support applications, business processes, etc. that are unique to their organization.&lt;/p&gt;  &lt;p&gt;There were some issues with running this because unless you installed this because many customers upgraded to SharePoint 2010 SP1 but the installer files were targeted for a pre-SP1 build of SharePoint 2010. This has now all be resolved and is ready to go.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-6983832232719376198?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/6983832232719376198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=6983832232719376198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/6983832232719376198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/6983832232719376198'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/11/productivity-hub-now-supports.html' title='Productivity Hub now supports SharePoint 2010 SP1'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-6261741064399280271</id><published>2011-11-25T13:31:00.001-08:00</published><updated>2011-11-25T13:31:10.762-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office365'/><category scheme='http://www.blogger.com/atom/ns#' term='Secure Store Service'/><category scheme='http://www.blogger.com/atom/ns#' term='Extranets'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='BCS'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Online'/><title type='text'>SharePoint Online Service Descriptions Updates Fall 2011</title><content type='html'>&lt;p&gt;&lt;b&gt;Service Descriptions&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Some of you may be aware but many of the service descriptions associated to Office 365 have been updated in the past month. It is really easy to find all of the Office 365 Service Descriptions – just search on “Office 365 Service Descriptions”. I highly recommend that you bookmark these locations because this is where the new service descriptions are always released. To save you a few seconds:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Multi-tenant service descriptions - &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=13602"&gt;http://www.microsoft.com/download/en/details.aspx?id=13602&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Dedicated service descriptions - &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=18128"&gt;http://www.microsoft.com/download/en/details.aspx?id=18128&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Dedicated Federal service descriptions - &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=23910"&gt;http://www.microsoft.com/download/en/details.aspx?id=23910&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Now the reason why I say bookmarks these is when there are changes to the service descriptions this is where you can get the updated documentation. This Fall has seen a few updates to service descriptions and for readers of this blog (whom are generally SharePoint people) there have been some updates.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;SharePoint Online Multi-tenant Updates&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;In November 2011 there was an update to the SharePoint Online service description. There are a couple updates that you should be aware of:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Business Connectivity Services (BCS) – is now available. Yes we heard about it at the SharePoint conference but now it available in the service descriptions. It supports WCF Web Service End Points (basically you need a WSDL web service available). This is great if you are trying to go completely cloud and you want to use Azure (PaaS) to use such things as Azure services, SQL Azure, App Fabric, etc. with SharePoint Online. So if you have complex data structures you want to manage and integrate directly in SharePoint use SQL Azure. If you can use App Fabric to connect premise back end applications, making those services available through SharePoint Online.&lt;/li&gt;    &lt;li&gt;A new capability available for partner accounts that are using Windows Live ID. Please read the service description for specifics. I personally think this is a huge new offering because SharePoint Online in general is a great solution of Partner Portals (Extranets). Nothing against doing an extranet on premise (and they work well), but it just takes more configuration and management than what system administrators what to take on responsibility for. With this partners can be given secure access to areas of content in SharePoint Online and they do not have to manage accounts in AD, Forms Auth, etc. This is absolutely huge and when I sit back and look at what SharePoint Online is offering as a whole, SharePoint Online has so many redeeming qualities for Partner Portals.&lt;/li&gt;    &lt;li&gt;There are a lot of new “Notes” that have been added to the service description that clearly communicate some of the most common questions that I have had over the past few months. I highly recommend reviewing these.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;SharePoint Online Dedicated Updates&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;For the SharePoint Online Dedicated plan was updated in October 2011; there have been some updates that you should be aware of.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Increased storage the max storage limit to 120 TB (which is 4 times more than previous). That is a whole lot of storage available to an organization. All the rules associated to purchasing extra TBs of storage to get to that 120 TB still hold the same.&lt;/li&gt;    &lt;li&gt;There is a new Administration portal for you to manage configuration requests, a new reports area providing analytic reports on usages and such, and support documentation.&lt;/li&gt;    &lt;li&gt;Active Directory Rights Management with IRM is now available for document libraries. SharePoint Online (both dedicated and multi-tenant) to store documents that had rights added prior to upload in SharePoint (and it is still supported). However the challenge is the document cannot be indexed. Now for SharePoint Online Dedicated, the document library IRM configuration is available so you can set rules on a document library and when the document is taken out of the SharePoint Online site, the IRM rights will be applied based on the setting in the document library. Documents put in a library using this new way are searchable.&lt;/li&gt;    &lt;li&gt;There is new support for Data Loss Prevention (DLP) solutions to scan SharePoint Online for sensitive content, PII, etc. Read the documentation for details.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;As well there have been October 2011 updates to the “Custom Solution Developer’s Guide” and “Custom Solution Policies and Process”. I would review these. As well in the Custom Solution Developer’s Guide there is a listing of the SharePoint 2010 third-party solutions that are approved to run in the dedicated cloud. This is an evolving list and addition to this list is accomplished by having a customer basically take a third party solution through the approval process.&lt;/p&gt;  &lt;p&gt;Finally there is a new document called “Content Migration Policy and Storage Design for SharePoint 2010”. This is a really interesting document because it actually gives you some real insight into the storage architecture and how we manage quotas for site collections and such. I would even say a premise deployment of SharePoint 2010 should read this document take some best practices from it to implement on premise.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-6261741064399280271?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/6261741064399280271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=6261741064399280271' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/6261741064399280271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/6261741064399280271'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/11/sharepoint-online-service-descriptions.html' title='SharePoint Online Service Descriptions Updates Fall 2011'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-2042452390515110565</id><published>2011-11-01T18:59:00.001-07:00</published><updated>2011-11-01T18:59:40.924-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='FAST'/><title type='text'>FAST for SharePoint 2010 Case Studies</title><content type='html'>&lt;p&gt;There is a new FAST Case Study that for FAST for SharePoint 2010.&amp;#160; IMF - &lt;a href="http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?CaseStudyID=4000011274"&gt;http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?CaseStudyID=4000011274&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here are two other good FAST for SharePoint Case Studies:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Case Study – General Mills Research (FAST) - &lt;a href="http://www.microsoft.com/casestudies/Microsoft-FAST-Search-Server-2010-For-Sharepoint/General-Mills/General-Mills-Frees-More-Time-for-Innovation-with-Research-Focused-Search-Application/4000007255"&gt;http://www.microsoft.com/casestudies/Microsoft-FAST-Search-Server-2010-For-Sharepoint/General-Mills/General-Mills-Frees-More-Time-for-Innovation-with-Research-Focused-Search-Application/4000007255&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Case Study – Mississippi State Department of Transportation (FAST) - &lt;a href="http://www.microsoft.com/casestudies/Microsoft-SharePoint-Server-2010/Mississippi-Department-of-Transportation/State-Transportation-Department-Saves-Lives-with-Better-Business-Insight/4000007073"&gt;http://www.microsoft.com/casestudies/Microsoft-SharePoint-Server-2010/Mississippi-Department-of-Transportation/State-Transportation-Department-Saves-Lives-with-Better-Business-Insight/4000007073&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-2042452390515110565?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/2042452390515110565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=2042452390515110565' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/2042452390515110565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/2042452390515110565'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/11/fast-for-sharepoint-2010-case-studies.html' title='FAST for SharePoint 2010 Case Studies'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-8872902217044779063</id><published>2011-11-01T18:55:00.001-07:00</published><updated>2011-11-01T18:55:51.522-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath'/><title type='text'>InfoPath 2010 and Digital Signatures</title><content type='html'>&lt;p&gt;I have had several questions about InfoPath 2010 and support for Digital Signatures. The answer is yes, InfoPath 2010 supports them and there is even more improved capability. Here are some good references.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;This provides good general information about InfoPath Digital Signatures - &lt;a href="http://office.microsoft.com/en-us/infopath-help/digital-signatures-in-infopath-2010-HA010381868.aspx"&gt;http://office.microsoft.com/en-us/infopath-help/digital-signatures-in-infopath-2010-HA010381868.aspx&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;This provides information describing in more detail the improvements with SharePoint and InfoPath 2010 - &lt;a href="http://blogs.msdn.com/b/infopath/archive/2010/02/18/digital-signature-support-in-infopath-2010.aspx"&gt;http://blogs.msdn.com/b/infopath/archive/2010/02/18/digital-signature-support-in-infopath-2010.aspx&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;This is a good article about the event model around digital signatures and how you create customizations around those event - &lt;a href="http://msdn.microsoft.com/en-us/library/aa948780.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa948780.aspx&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-8872902217044779063?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/8872902217044779063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=8872902217044779063' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/8872902217044779063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/8872902217044779063'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/11/infopath-2010-and-digital-signatures.html' title='InfoPath 2010 and Digital Signatures'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-8952955389367388177</id><published>2011-11-01T18:54:00.001-07:00</published><updated>2011-11-01T18:54:32.672-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Content Database'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><title type='text'>SharePoint 2010 Max File Size</title><content type='html'>&lt;p&gt;I have as well been receiving an &lt;strong&gt;inordinate&lt;/strong&gt; amount of questions associated to the max file size the SharePoint 2010 supports. It is been clearly stated for some time that the max file size supported by SharePoint 2010 is 2 GB - &lt;a href="http://technet.microsoft.com/en-us/library/cc262787.aspx#ListLibrary"&gt;http://technet.microsoft.com/en-us/library/cc262787.aspx#ListLibrary&lt;/a&gt;. A lot of customers are asking why. I am not on product team but usually couch it as SharePoint is a web based ECM platform. Two GB uploads and downloads is not very effective over the internet in general. Yes, internet speeds are getting better but still, that is a big file. Plus, if you are not using Remote BLOB storage, that is a lot of data to put into SQL Server.&lt;/p&gt;  &lt;p&gt;If you have files that are larger than 2 GB you should look into storing the content externally and then utilize enterprise search and third party web parts to make the large files accessible through SharePoint 2010.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-8952955389367388177?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/8952955389367388177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=8952955389367388177' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/8952955389367388177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/8952955389367388177'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/11/sharepoint-2010-max-file-size.html' title='SharePoint 2010 Max File Size'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-6809196236597980599</id><published>2011-11-01T18:46:00.001-07:00</published><updated>2011-11-01T18:46:14.140-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='FAST'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010 Search'/><title type='text'>SharePoint Search Index Document</title><content type='html'>&lt;p&gt;I received several questions about indexing of SharePoint content lately. Specifically does SharePoint index the entire document?&lt;/p&gt;  &lt;p&gt;First off if FAST is being utilized, yes, the entire document will be indexed.&lt;/p&gt;  &lt;p&gt;Second if you are using the out of the box SharePoint search by default it configured to index the content of items that are under 16MB or under. Metadata associated to these documents will still be indexed (so if the big files are videos they will still be searchable).&lt;/p&gt;  &lt;p&gt;The max file size for indexing can be upped up to the max file size limit; which is 2GB. Before upping the size, it is recommended that you do some testing and understand any performance ramifications relative to your environment and data. Here are some good references on the topic.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.toddklindt.com/blog/Lists/Posts/Post.aspx?ID=215"&gt;http://www.toddklindt.com/blog/Lists/Posts/Post.aspx?ID=215&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://appsense.logimindz.com/?p=27"&gt;http://appsense.logimindz.com/?p=27&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-6809196236597980599?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/6809196236597980599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=6809196236597980599' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/6809196236597980599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/6809196236597980599'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/11/sharepoint-search-index-document.html' title='SharePoint Search Index Document'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-8996817012989738784</id><published>2011-11-01T18:43:00.000-07:00</published><updated>2011-11-01T18:44:45.741-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Content Database'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SharePoint 2010 Content Database Sizing</title><content type='html'>&lt;p&gt;A lot of people already know this but on July 14, 2011 it was announced that Content Database Sizing has been updated &lt;a href="http://technet.microsoft.com/en-us/library/cc262787.aspx#ContentDB"&gt;http://technet.microsoft.com/en-us/library/cc262787.aspx#ContentDB&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;There is still recommendation to keep content databases at 200GB. Why? This recommendation is still a good recommendation because if you need to back-up and restore a database very quickly, you do not have move around large back-up files. Plus if you have an Information Architecture that drives content to specific site collections (with dedicated content databases), you will be much more agile to requirement changes, upgrades, etc. One big massive content database is an indication of poor planning and governance.&lt;/p&gt;  &lt;p&gt;The first new recommendations in this article is that 4TB of data can be stored in a content database. There are some parameters around this recommendation that you should read.&lt;/p&gt;  &lt;p&gt;The second new recommendation is that there is no explicit recommendation on sizing for document archiving scenarios. However there are some very specific recommendations made in here to support that scenario – so review &lt;a href="http://technet.microsoft.com/en-us/library/cc262787.aspx#ContentDB"&gt;http://technet.microsoft.com/en-us/library/cc262787.aspx#ContentDB&lt;/a&gt;. This is really important for Records Management solutions. On this specific point, it would also be good to review the “Extremely large-scale content archive” section in &lt;a href="http://technet.microsoft.com/en-us/library/cc263028.aspx"&gt;http://technet.microsoft.com/en-us/library/cc263028.aspx&lt;/a&gt;. When going down this path you will need to have Remote Blob Storage and FAST to support this solution architecture.&lt;/p&gt;  &lt;p&gt;Finally SQL Server tuning is fundamental to your success for managing large content databases. Here is a blog that I wrote on the topic - &lt;a href="http://www.astaticstate.com/2010/12/sharepoint-2010-high-availability-with.html"&gt;http://www.astaticstate.com/2010/12/sharepoint-2010-high-availability-with.html&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-8996817012989738784?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/8996817012989738784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=8996817012989738784' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/8996817012989738784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/8996817012989738784'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/11/sharepoint-2010-content-database-sizing.html' title='SharePoint 2010 Content Database Sizing'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-1038005147619015933</id><published>2011-10-16T13:25:00.001-07:00</published><updated>2011-10-16T13:25:29.642-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office365'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Online'/><title type='text'>SharePoint Online Hybrid Architecture Whitepaper</title><content type='html'>&lt;p&gt;There is a new SharePoint Online Hybrid Architecture Whitepaper that has been published - &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=27580"&gt;http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=27580&lt;/a&gt;. It is definitely worth a read and has some good stuff. I think it is a good place to start but there is a lot more too this.&lt;/p&gt;  &lt;p&gt;I will be working on some SharePoint architecture blogs that discuss this along with general SharePoint Governance and Information Architecture. I have been having way too conversations with clients where people confuse the real spirit of governance making it too authoritative. It is not about locking down SharePoint; it is about setting up business services and service level agreements and then delivering capabilities on them. It is about setting up a real Information Architecture! More to come I promise.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-1038005147619015933?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/1038005147619015933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=1038005147619015933' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/1038005147619015933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/1038005147619015933'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/10/sharepoint-online-hybrid-architecture.html' title='SharePoint Online Hybrid Architecture Whitepaper'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-4075039830223603296</id><published>2011-10-16T13:15:00.001-07:00</published><updated>2011-10-16T13:15:06.252-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath'/><category scheme='http://www.blogger.com/atom/ns#' term='Workflow'/><title type='text'>Create InfoPath Form Instance through Workflow</title><content type='html'>&lt;p&gt;&lt;b&gt;Issue&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Have you ever wanted to have an InfoPath form generated by a workflow? Well I thought it would be a simple task but I had to do some extra things to make it happen correctly.&lt;/p&gt;  &lt;p&gt;I recently wanted to be able to generate an InfoPath form based on an event on a SharePoint Designer workflow. So I published my InfoPath form to a Form Library, added an action to create a list item and then ran the workflow. I believed this would work because I have created Word templates, associated them to content types and the word file would be created just fine with the appropriate template. The net result in this situation does not work. Instead the InfoPath form template (.xsn file) is created as a file instance. The InfoPath xml that I had expected was not there.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Solution&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;I found this article (&lt;a href="http://www.bizsupportonline.net/blog/2009/06/create-infopath-forms-sharepoint-designer-workflow/"&gt;http://www.bizsupportonline.net/blog/2009/06/create-infopath-forms-sharepoint-designer-workflow/&lt;/a&gt;) which I reviewed. My solution is a little bit different because I was building this solution in SharePoint Online in Office365 and I was not able to implement this exact solution. However I was given some clues and came up with the following.&lt;/p&gt;  &lt;p&gt;My solution was to:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Publish the InfoPath form the same way I did before.&lt;/li&gt;    &lt;li&gt;Then I created an instance of the InfoPath form xml and saved it to my desktop.&lt;/li&gt;    &lt;li&gt;Then went to the form library configuration, advanced settings and turned on “Allow management of content types”.&lt;/li&gt;    &lt;li&gt;Then clicked on the default Form Content Type.&lt;/li&gt;    &lt;li&gt;Then clicked on Advanced Settings for the Form Content.&lt;/li&gt;    &lt;li&gt;Then I selected Upload a new document template and selected xml template I saved locally.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The following is what I had.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-rNobDCm1k_A/Tps7SPeRjKI/AAAAAAAAAxM/wVWlnJEBW_U/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-mD8StZ9sVnM/Tps7SQIx01I/AAAAAAAAAxU/5bHSPzmACs4/image_thumb%25255B1%25255D.png?imgmax=800" width="754" height="232" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The InfoPath form template (.xsn file) is still there behind the scenes and the form will render correctly through InfoPath form services.&lt;/p&gt;  &lt;p&gt;There are a few limitations of this solution:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The user will not be able to create a new InfoPath form instance through the browser using the New Document button in the ribbon. What will happen is the InfoPath client will launched. This is not such a big deal because in my situation InfoPath forms will always be created through the workflow.&lt;/li&gt;    &lt;li&gt;If the InfoPath form changes, you will have to publish the InfoPath form template (.xsn file) and then go through these steps again.&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-4075039830223603296?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/4075039830223603296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=4075039830223603296' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/4075039830223603296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/4075039830223603296'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/10/create-infopath-form-instance-through.html' title='Create InfoPath Form Instance through Workflow'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-mD8StZ9sVnM/Tps7SQIx01I/AAAAAAAAAxU/5bHSPzmACs4/s72-c/image_thumb%25255B1%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-4465350281953457453</id><published>2011-09-05T11:34:00.001-07:00</published><updated>2011-09-06T05:17:35.534-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='My Blog News'/><title type='text'>Happy Four Years Old</title><content type='html'>&lt;b&gt;Thanks&lt;/b&gt;&lt;br /&gt;It is amazing to see that I have been able to keep this blog going for the past 4 years. Through change jobs two times, continue being a top performer at work, having a second child, writing a book, etc. I have kept it going. I have to say thank you to all the readers, your feedback keeps me wanting to write.&lt;br /&gt;&lt;b&gt;Birthday Gift&lt;/b&gt;&lt;br /&gt;As a reward, Google Blogger has given me a new interface as this month to write blogs. I had been using Windows Live Writer for the past year to format the blog better. However Google Blogger would continue to foul up the HTML and jack up the presentation for which I have dumped hours into fixing however still can never make perfect. The tool seems better now. I have not moved off Google because it is just too much work given that this is something I do in my personal time.&lt;br /&gt;&lt;b&gt;Stats&lt;/b&gt;&lt;br /&gt;I started using Google Stats in May 2009. Here is how I have been doing, pretty happy.&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-swcXC_W15QA/TmUWS6bmqmI/AAAAAAAAAw8/DVlZc-7zGko/s1600-h/clip_image001%25255B4%25255D.png"&gt;&lt;img alt="clip_image001" border="0" height="270" src="http://lh4.ggpht.com/-BxkIIv0O_Vk/TmUWTKUyYbI/AAAAAAAAAxA/ot4X4mXXKEk/clip_image001_thumb%25255B1%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="clip_image001" width="607" /&gt;&lt;/a&gt;&lt;br /&gt;Most popular posts since May 2009 are the following. The Silverlight series I wrote is mind boggling. I had no clue that would become what it did. It is funny because I got put on a contracting engagement for about 9 months doing all Silverlight&amp;nbsp;project with no&amp;nbsp;SharePoint work. Now I am back to really only focusing on SharePoint since I am working at Microsoft now. I am happy to see how popular my SharePoint 2010 architecture series has been as well.&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-D1S9fTRj3qc/TmUWTbh0RzI/AAAAAAAAAxE/ot4Mq5rTKGY/s1600-h/clip_image003%25255B4%25255D.jpg"&gt;&lt;img alt="clip_image003" border="0" height="375" src="http://lh5.ggpht.com/-fjdHOcmABCw/TmUWTiSFKNI/AAAAAAAAAxI/BMyGoLGLzrI/clip_image003_thumb%25255B1%25255D.jpg?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="clip_image003" width="601" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;What’s Next?&lt;/b&gt;&lt;br /&gt;Expect to see a lot over the next few months on architecture, enterprise patterns and such for Office365 with a focus on SharePoint Online. There are a lot of smart people who are out there who know SharePoint well, but are missing the bigger picture and the strategic thinking of how to align SharePoint Online to create more architecturally sound solutions that save money for organization. A lot more to come there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-4465350281953457453?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/4465350281953457453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=4465350281953457453' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/4465350281953457453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/4465350281953457453'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/09/happy-four-years-old.html' title='Happy Four Years Old'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-BxkIIv0O_Vk/TmUWTKUyYbI/AAAAAAAAAxA/ot4X4mXXKEk/s72-c/clip_image001_thumb%25255B1%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-8514462252030677180</id><published>2011-08-26T13:25:00.001-07:00</published><updated>2011-12-01T19:46:04.550-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='FAST'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010 Search'/><category scheme='http://www.blogger.com/atom/ns#' term='ECM'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='Unified Communications'/><category scheme='http://www.blogger.com/atom/ns#' term='Social Computing'/><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Search'/><title type='text'>SharePoint 2010 Independent Market Analysis</title><content type='html'>I get asked a lot about reasons to move to SharePoint 2010. I simply state, look at the how the market evaluates SharePoint.&lt;br /&gt;&lt;br /&gt;Here is a great link managed by Microsoft that showing Gartner and Forrester reports - &lt;a href="http://www.microsoft.com/presspass/itanalyst/default.mspx"&gt;http://www.microsoft.com/presspass/itanalyst/default.mspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As of right now, I recommend reading the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Enterprise Content Management (ECM) – &lt;a href="http://www.gartner.com/technology/media-products/reprints/microsoft/vol14/article8/article8.html"&gt;View Report&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Business Intelligence (BI) – &lt;a href="http://www.gartner.com/technology/media-products/reprints/microsoft/vol2/article15/article15.html"&gt;View Report&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Enterprise Search – &lt;a href="http://www.gartner.com/technology/media-products/reprints/microsoft/vol14/article9/article9.html"&gt;View Report&lt;/a&gt;&amp;nbsp;- Just Updated in Nov 2011 and continued leader - &lt;a href="http://www.gartner.com/technology/reprints.do?id=1-1835DKL&amp;amp;ct=111123&amp;amp;st=sb"&gt;View Report&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Social Computing – &lt;a href="http://www.gartner.com/technology/streamReprints.do?id=1-173SL7W&amp;amp;ct=110826&amp;amp;st=sb"&gt;View Report&lt;/a&gt;&amp;nbsp;- Just Updated Aug&amp;nbsp;2011 (continued to be leader, here is &lt;a href="http://www.gartner.com/technology/media-products/reprints/microsoft/vol14/article5/article5.html"&gt;the 2010 report&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Portal Platform – &lt;a href="http://www.gartner.com/technology/media-products/reprints/microsoft/vol13/article10/article10.html"&gt;View Report&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Unified Communications – &lt;a href="http://www.gartner.com/technology/streamReprints.do?id=1-1728DMD&amp;amp;ct=110823&amp;amp;st=sb"&gt;View Report&lt;/a&gt;&amp;nbsp;and &lt;a href="http://www.gartner.com/technology/media-products/reprints/microsoft/vol14/article18/article18.html"&gt;View Report&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Email – &lt;a href="http://www.gartner.com/technology/media-products/reprints/microsoft/vol14/article22/article22.html"&gt;View Report&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;I suggest stay up to date with this site to find the latest reports.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-8514462252030677180?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/8514462252030677180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=8514462252030677180' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/8514462252030677180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/8514462252030677180'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/08/sharepoint-2010-independent-market.html' title='SharePoint 2010 Independent Market Analysis'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-3664147716761463677</id><published>2011-08-20T12:09:00.001-07:00</published><updated>2011-08-20T12:09:03.376-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Security'/><title type='text'>SharePoint 2010 SQL Server Encryption</title><content type='html'>&lt;p&gt;I have been asked several times what SharePoint ability to encrypt data that resides the SQL Server databases. I was answering this question when I ran across this awesome presentation that I highly recommend. “SQL Transparent Data Encryption for SharePoint Content Databases” at &lt;a href="http://technet.microsoft.com/en-us/edge/Video/ff711430"&gt;http://technet.microsoft.com/en-us/edge/Video/ff711430&lt;/a&gt;. Just want the first few minutes of the video.&lt;/p&gt;  &lt;p&gt;Smaller notes I usually bring up are:&lt;/p&gt;  &lt;p&gt;· Row level encryption is not really possible as we do encryption at the database level.&lt;/p&gt;  &lt;p&gt;· An important note is that the SQL connection from the SharePoint application layer to SQL server is done through a service account. Users are not directly authenticating and accessing data in the database.&lt;/p&gt;  &lt;p&gt;· Documents themselves can have rights management applied so the BLOB is encrypted when it is stored in SharePoint. However metadata associated to the document is not encrypted and documents will not be searchable.&lt;/p&gt;  &lt;p&gt;Using Transparent Data Encryption really is a great solution.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-3664147716761463677?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/3664147716761463677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=3664147716761463677' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/3664147716761463677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/3664147716761463677'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/08/sharepoint-2010-sql-server-encryption.html' title='SharePoint 2010 SQL Server Encryption'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-4781507581163795274</id><published>2011-08-20T12:00:00.001-07:00</published><updated>2011-08-20T12:00:52.514-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office365'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Topology'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Performance'/><title type='text'>SharePoint 2010 Architecture Introduction</title><content type='html'>&lt;p&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;I recently had a client ask be about how to get started on understanding the SharePoint 2010 architecture and how they should deploy. Unfortunately the answer is it depends based on your business requirements.&lt;/p&gt;  &lt;p&gt;Gartner recognizes the SharePoint platform as a best of breed across all major workloads like web portal, enterprise content management (document management, web content management, records management, etc.), business intelligence, workplace social computing, search/enterprise search, and as an application development platform. Knowing this, the SharePoint platform delivers a single platform that is managed together helping agencies consolidate costs in people, process and technology. Plus SharePoint is tightly aligned to Office and Lync (instant messaging, sharing, meeting, and phone solution).&lt;/p&gt;  &lt;p&gt;Now depending on what you will implement will depend on how you scale SharePoint 2010. Plus with many agencies, there is never just on SharePoint farm. There will be multiple SharePoint farms which will be configured to support the business requirements.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;References&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;If you are trying to get an initial understanding of the SharePoint 2010 architecture, here are some good references:&lt;/p&gt;  &lt;p&gt;· SharePoint 2010 Architecture - &lt;a href="http://msdn.microsoft.com/en-us/library/gg552610.aspx"&gt;http://msdn.microsoft.com/en-us/library/gg552610.aspx&lt;/a&gt; - this is a good starting place if you are not familiar with SharePoint.&lt;/p&gt;  &lt;p&gt;· SharePoint 2010 Technical Diagrams - &lt;a href="http://technet.microsoft.com/en-us/library/cc263199.aspx"&gt;http://technet.microsoft.com/en-us/library/cc263199.aspx&lt;/a&gt; - all the big picture of both physical and logical architecture.&lt;/p&gt;  &lt;p&gt;· Hardware and Software Requirements - &lt;a href="http://technet.microsoft.com/en-us/library/cc262485.aspx"&gt;http://technet.microsoft.com/en-us/library/cc262485.aspx&lt;/a&gt; - I suggest reading this right off the bat.&lt;/p&gt;  &lt;p&gt;Performance, scaling, business continuity topics always come up when starting to learn about SharePoint 2010. Here is a good place to start.&lt;/p&gt;  &lt;p&gt;· Performance and capacity technical case studies (SharePoint Server 2010) &lt;a href="http://technet.microsoft.com/en-us/library/cc261716.aspx"&gt;http://technet.microsoft.com/en-us/library/cc261716.aspx&lt;/a&gt; - More good case studies.&lt;/p&gt;  &lt;p&gt;· SharePoint 2010 Performance and Capacity whitepapers - &lt;a href="http://technet.microsoft.com/en-us/library/ff608068.aspx"&gt;http://technet.microsoft.com/en-us/library/ff608068.aspx&lt;/a&gt; - Whitepapers on specific workloads.&lt;/p&gt;  &lt;p&gt;· SharePoint 2010 Capacity boundaries - &lt;a href="http://technet.microsoft.com/en-us/library/cc262787.aspx"&gt;http://technet.microsoft.com/en-us/library/cc262787.aspx&lt;/a&gt; - This is pretty detailed discussion on testing.&lt;/p&gt;  &lt;p&gt;Now if you are familiar with SharePoint 2007 architecture:&lt;/p&gt;  &lt;p&gt;· I have written a multiple part series on SharePoint 2010 architecture here- &lt;a href="http://www.astaticstate.com/2010/01/sharepoint-2010-service-architecture.html"&gt;http://www.astaticstate.com/2010/01/sharepoint-2010-service-architecture.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· I have another blog on scaling SQL Server because this is a critical component to SharePoint - &lt;a href="http://www.astaticstate.com/2010/12/sharepoint-2010-high-availability-with.html"&gt;http://www.astaticstate.com/2010/12/sharepoint-2010-high-availability-with.html&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;· Here is a series on SharePoint 2010 Search - &lt;a href="http://www.astaticstate.com/2010/12/sharepoint-2010-search-architecture.html"&gt;http://www.astaticstate.com/2010/12/sharepoint-2010-search-architecture.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· Here is a series on FAST for SharePoint 2010 - &lt;a href="http://www.astaticstate.com/2011/01/part-1-fast-for-sharepoint-2010.html"&gt;http://www.astaticstate.com/2011/01/part-1-fast-for-sharepoint-2010.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Office365&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Finally it is also &lt;b&gt;IMPORTANT&lt;/b&gt; to know when reviewing all these architectures, that SharePoint 2010 is the only portal technology on the market that software as a service (SaaS) cloud offering called Office365. This ultimately means major reduction on hardware and software that must be installed and managed, better service level agreements to your users, quicker deployment of solutions, better ability to scale, better ability to support telework and external collaboration, and the list really just goes on. Be in the business of creating business solutions.&lt;/p&gt;  &lt;p&gt;I say the best way to learn about SharePoint Online Service is read the service level agreements which I have linked to here - &lt;a href="http://www.astaticstate.com/2011/07/office365-slas.html"&gt;http://www.astaticstate.com/2011/07/office365-slas.html&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-4781507581163795274?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/4781507581163795274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=4781507581163795274' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/4781507581163795274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/4781507581163795274'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/08/sharepoint-2010-architecture.html' title='SharePoint 2010 Architecture Introduction'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-5056666826141275165</id><published>2011-08-18T19:45:00.001-07:00</published><updated>2011-08-18T19:45:15.648-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='BCS'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Communication Foundation'/><title type='text'>BCS Connection to WCF Web Service</title><content type='html'>&lt;p&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;I recently needed to connect BCS to some WCF services. The goal was show how I can then use the data out of those WCF services as a data source for FAST. Creating a WCF service and publishing it out through IIS was a pretty simple task. For search you only really need two web methods. First you will need a method that returns a full collection of the dataset which will be used as part of the indexing process. The second method you will need is a get item method that will get the details of a record in the data set.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Issue I ran into&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;However I ran into a challenge with getting the connection to work initially. When filling in the WCF connection window I would get errors like:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-dDOyd6wi67I/Tk3OMddTnZI/AAAAAAAAAwc/OH3_Wd90x4o/s1600-h/clip_image002%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh4.ggpht.com/-ug2XpOpQy6w/Tk3OMkBcpGI/AAAAAAAAAwg/fSino3qNp34/clip_image002_thumb%25255B1%25255D.jpg?imgmax=800" width="398" height="439" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-5aRk1NhjeB0/Tk3OMwJvP6I/AAAAAAAAAwk/O1tWKQMyR3A/s1600-h/clip_image004%25255B5%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://lh6.ggpht.com/-PlHbyG8BUho/Tk3ONgxiYXI/AAAAAAAAAwo/MdC3uYA3RcY/clip_image004_thumb%25255B2%25255D.jpg?imgmax=800" width="398" height="446" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In the Event Logs I had some more detailed errors which really did not help much.&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Could not obtain a proxy to WebService for LobSystem 'Default' in App Domain 'ConnectionDomain'. The full exception text is: Metadata contains a reference that cannot be resolved: 'http://demo2010a:8000/SoftwareService/SoftwareService.svc'.. The inner exception text is: &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-16&amp;quot;?&amp;gt;&amp;lt;Fault xmlns=&amp;quot;http://www.w3.org/2003/05/soap-envelope&amp;quot;&amp;gt;&amp;lt;Code&amp;gt;&amp;lt;Value&amp;gt;Sender&amp;lt;/Value&amp;gt;&amp;lt;Subcode&amp;gt;&amp;lt;Value xmlns:a=&amp;quot;http://schemas.xmlsoap.org/ws/2005/02/sc&amp;quot;&amp;gt;a:BadContextToken&amp;lt;/Value&amp;gt;&amp;lt;/Subcode&amp;gt;&amp;lt;/Code&amp;gt;&amp;lt;Reason&amp;gt;&amp;lt;Text xml:lang=&amp;quot;en-US&amp;quot;&amp;gt;The message could not be processed. This is most likely because the action 'http://schemas.xmlsoap.org/ws/2004/09/transfer/Get' is incorrect or because the message contains an invalid or expired security context token or because there is a mismatch between bindings. The security context token would be invalid if the service aborted the channel due to inactivity. To prevent the service from aborting idle sessions prematurely increase the Receive timeout on the service endpoint's binding.&amp;lt;/Text&amp;gt;&amp;lt;/Reason&amp;gt;&amp;lt;/Fault&amp;gt;.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Could not obtain a proxy to WebService for LobSystem 'Default' in App Domain 'ConnectionDomain'. The full exception text is: There was an error generating the XML document.. The inner exception text is: The type System.Web.Services.Discovery.DiscoveryDocument was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically..&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Resolution&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;After playing around with the configuration I finally found the following worked. Notice the “mex” extension added to the end of the Service Metadata URL. Once I had that done, just wire up the web methods like you would anything else in BCS.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-RnWdXFVCTg0/Tk3ON2S14EI/AAAAAAAAAws/xSLFifK_NRc/s1600-h/clip_image005%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image005" border="0" alt="clip_image005" src="http://lh5.ggpht.com/-hmf6gd-QvzE/Tk3ON0YMvLI/AAAAAAAAAww/Cs1zN8Ai-VQ/clip_image005_thumb%25255B1%25255D.png?imgmax=800" width="387" height="567" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now here is another way to do this. Any service that has a wsdl description can be integrated as well. Notice here how I put the wsdl address for the Service Metadata URL. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-juhbF2hiS0o/Tk3OOAOdaEI/AAAAAAAAAw0/S7ugMRqgLW8/s1600-h/clip_image006%25255B5%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://lh5.ggpht.com/-MvLvXaTslvM/Tk3OOTmGYVI/AAAAAAAAAw4/P3AjSV34_QM/clip_image006_thumb%25255B2%25255D.png?imgmax=800" width="387" height="572" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-5056666826141275165?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/5056666826141275165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=5056666826141275165' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/5056666826141275165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/5056666826141275165'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/08/bcs-connection-to-wcf-web-service.html' title='BCS Connection to WCF Web Service'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-ug2XpOpQy6w/Tk3OMkBcpGI/AAAAAAAAAwg/fSino3qNp34/s72-c/clip_image002_thumb%25255B1%25255D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-6861315313023732339</id><published>2011-08-07T16:30:00.001-07:00</published><updated>2011-08-07T16:45:30.204-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Visio Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Workflow'/><title type='text'>Part 5 – Custom Visio Services Reports with SharePoint 2010 Workflow</title><content type='html'>&lt;p&gt;· &lt;a href="http://www.astaticstate.com/2011/07/part-1pattern-for-building-stateful.html"&gt;Part 1 - Pattern for Building Stateful Workflows with SharePoint Designer 2010&lt;/a&gt;     &lt;br /&gt;· &lt;a href="http://www.astaticstate.com/2011/07/part-2-custom-action-for-workflow.html"&gt;Part 2 - Custom Action for Workflow Initiation&lt;/a&gt;     &lt;br /&gt;· &lt;a href="http://www.astaticstate.com/2011/08/part-3-delays-for-workflow-initiation.html"&gt;Part 3 - Delays for Workflow Initiation Action&lt;/a&gt;     &lt;br /&gt;· &lt;a href="http://www.astaticstate.com/2011/08/part-4-using-business-connectivity.html"&gt;Part 4 - Using Business Connectivity Services (BCS) with SharePoint 2010 Workflow&lt;/a&gt;     &lt;br /&gt;· &lt;a href="http://www.astaticstate.com/2011/08/part-5-custom-visio-services-reports.html"&gt;Part 5 - Custom Visio Services Reports with SharePoint 2010 Workflow&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;This is the last part in this workflow series. In the first part of this series I wrote extensively about how Visio Services allow us to now do visual reporting on the progress of a workflow process instance. More importantly, it allows us to provide a visual report to business users removing all the technical steps that may be needed to implement an end to end workflow. &lt;/p&gt;  &lt;p&gt;For example, I below I have a ton steps in a workflow. When SharePoint Designer 2010 publishes this workflow a Visio workflow diagram will be generated.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-Yccv8rrbxzI/Tj8f8IRWWiI/AAAAAAAAAvU/NskO9_qmnjU/s1600-h/clip_image002%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh3.ggpht.com/-Nob5P3vU-o4/Tj8f8buipRI/AAAAAAAAAvY/0P2su0dNvdk/clip_image002_thumb%25255B1%25255D.jpg?imgmax=800" width="572" height="397" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;That Visio diagram will accurately show where it is within its execution however I can guarantee that the business user does not care about all these steps. All they want to know is what the major business process steps are and what the current status is. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Solution&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;We can provide a perfect solution using a custom Visio report.&lt;/p&gt;  &lt;p&gt;My solution is to create a completely different Visio diagram to the business reporting. So what I did was take this original diagram I created in this series (below) with the objective of “lighting it up” with the current status of the business process.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-HUKGclH2lEk/Tj8f8jhegZI/AAAAAAAAAvc/e_Cz3fUDG4Q/s1600-h/clip_image004%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://lh4.ggpht.com/-fQAaZoUq8mY/Tj8f8x-pSXI/AAAAAAAAAvg/wC0alTO1F9s/clip_image004_thumb%25255B1%25255D.jpg?imgmax=800" width="200" height="525" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The solution is simple.&lt;/p&gt;  &lt;p&gt;· I create a column on my list item to store the current step in the business workflow the workflow is in.&lt;/p&gt;  &lt;p&gt;· Then during my workflow, I update this column object in the Visio diagram I want to light up.&lt;/p&gt;  &lt;p&gt;· Then connect a list and Visio web part together to allow a user to select a running workflow and then visually see the status of the workflow.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Configuration&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;To achieve this I need to perform a few steps. &lt;/p&gt;  &lt;p&gt;In the workflow I added an Update List Item action. I updated my CurrentAction column with the name of the Visio object I want to light up. In this instance it is “Process.3”. Throughout other workflows I will update the CurrentAction column with other values that correspond to different objects in the Visio diagram.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-9AsmNrLp5eo/Tj8f9IxcKHI/AAAAAAAAAvk/KlmX9h2rbNE/s1600-h/clip_image006%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://lh4.ggpht.com/-RbrY5QvY8Ug/Tj8f9VtDcII/AAAAAAAAAvo/jAgE6K39hRc/clip_image006_thumb%25255B1%25255D.jpg?imgmax=800" width="455" height="222" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Next I uploaded the Visio diagram to a location in SharePoint; simple enough.&lt;/p&gt;  &lt;p&gt;Next I created a web part page. On that web part page I placed the list where the workflow is running.&lt;/p&gt;  &lt;p&gt;Next I added a Visio web part and pointed to the Visio diagram that I had just uploaded. Below is a screenshot.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-myLO64vEVsc/Tj8f9VwhVCI/AAAAAAAAAvs/tHRJ_ZyAnCY/s1600-h/clip_image008%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://lh6.ggpht.com/-5cKb7yvld4s/Tj8f9hOg-eI/AAAAAAAAAvw/4H0tyOlapow/clip_image008_thumb%25255B1%25255D.jpg?imgmax=800" width="456" height="277" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Next I need to connect the list web part to the Visio web part. I need to do this so that when a user selects a list item, the Visio diagram on the right will highlight the correct Visio object. On the Visio web part I made a connection to the Review list web part. Notice I select “Get Shapes to Highlight From”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-ukPSPvzsf4c/Tj8f92Z_FsI/AAAAAAAAAv0/0PrGquDlNLA/s1600-h/clip_image010%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image010" border="0" alt="clip_image010" src="http://lh6.ggpht.com/-zF58Smoe6_k/Tj8f-ABaYgI/AAAAAAAAAv4/-IUGUy6OxCg/clip_image010_thumb%25255B1%25255D.jpg?imgmax=800" width="459" height="268" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Next in the Configuration Connection screen, I select the CurrentAction column (which is the column I that I update in the workflow) and then select Shape Names. This is how the “Process.3” value is sent from the selected list item to the Visio diagram to be highlighted.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-1sa041bCSj0/Tj8f-T1tj3I/AAAAAAAAAv8/5UFNc4ylfbc/s1600-h/clip_image011%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image011" border="0" alt="clip_image011" src="http://lh5.ggpht.com/--PuWnK9AfJo/Tj8f-q0_WGI/AAAAAAAAAwA/PpmnurNyB6E/clip_image011_thumb%25255B1%25255D.png?imgmax=800" width="457" height="240" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The net result is the following. As you can see a Visio object is now highlighted based on the item that I selected on the left hand side. Really simple and really effective!!!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-NL2ycAmOHcY/Tj8f-437qdI/AAAAAAAAAwE/Bq4QtqyzHOA/s1600-h/clip_image013%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image013" border="0" alt="clip_image013" src="http://lh6.ggpht.com/-dVNqMR6aCbs/Tj8f_JISw_I/AAAAAAAAAwI/azyysVoftlA/clip_image013_thumb%25255B1%25255D.jpg?imgmax=800" width="458" height="273" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Highlighting Multiple Items&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;In the example I just showed you, I am only highlighting the point where the process is in its execution. However, let’s say you want to highlight all the steps the workflow has gone through. Well that is simple too.&lt;/p&gt;  &lt;p&gt;In this case I created a different column called “Actions” where I capture a comma delimited string of all the times I want to be highlighted. In the workflow I have the following. Notice in the String Builder window I concatenate the previous value in the column with the new value “,Process.3”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-FJqH2gEHuMc/Tj8f_afGB4I/AAAAAAAAAwM/ZMAZkpdrHIg/s1600-h/clip_image015%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image015" border="0" alt="clip_image015" src="http://lh3.ggpht.com/-j-u8YUZCgkc/Tj8f_glBTeI/AAAAAAAAAwQ/CnTQHSx_Sa8/clip_image015_thumb%25255B1%25255D.jpg?imgmax=800" width="475" height="257" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Other than that, the configuration is 100% identical other than selecting the “Actions” column when connecting the web parts. The final result is the following – all of the Visio object names I concatenated together are highlighted.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-XykSb_j7ksE/Tj8f_5zvyfI/AAAAAAAAAwU/-x5JuNQ2bYA/s1600-h/clip_image016%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image016" border="0" alt="clip_image016" src="http://lh3.ggpht.com/-BBN4PdJr2G4/Tj8gAFEreCI/AAAAAAAAAwY/jbUnKgQAV_w/clip_image016_thumb%25255B1%25255D.png?imgmax=800" width="354" height="453" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Conclusions&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;This is such a powerful capability. I can create custom visual reports on my business process with no code.&lt;/p&gt;  &lt;p&gt;I truly hope this workflow series will be helpful for you when starting to build process automation in SharePoint 2010.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-6861315313023732339?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/6861315313023732339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=6861315313023732339' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/6861315313023732339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/6861315313023732339'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/08/part-5-custom-visio-services-reports.html' title='Part 5 – Custom Visio Services Reports with SharePoint 2010 Workflow'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-Nob5P3vU-o4/Tj8f8buipRI/AAAAAAAAAvY/0P2su0dNvdk/s72-c/clip_image002_thumb%25255B1%25255D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-5133700786917121481</id><published>2011-08-07T16:25:00.001-07:00</published><updated>2011-08-07T16:45:01.913-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lists'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Workflow'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='BCS'/><category scheme='http://www.blogger.com/atom/ns#' term='SSRS'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel Services'/><title type='text'>Part 4 – Using Business Connectivity Services (BCS) with SharePoint 2010 Workflow</title><content type='html'>&lt;p&gt;· &lt;a href="http://www.astaticstate.com/2011/07/part-1pattern-for-building-stateful.html"&gt;Part 1 - Pattern for Building Stateful Workflows with SharePoint Designer 2010&lt;/a&gt;     &lt;br /&gt;· &lt;a href="http://www.astaticstate.com/2011/07/part-2-custom-action-for-workflow.html"&gt;Part 2 - Custom Action for Workflow Initiation&lt;/a&gt;     &lt;br /&gt;· &lt;a href="http://www.astaticstate.com/2011/08/part-3-delays-for-workflow-initiation.html"&gt;Part 3 - Delays for Workflow Initiation Action&lt;/a&gt;     &lt;br /&gt;· &lt;a href="http://www.astaticstate.com/2011/08/part-4-using-business-connectivity.html"&gt;Part 4 - Using Business Connectivity Services (BCS) with SharePoint 2010 Workflow&lt;/a&gt;     &lt;br /&gt;· &lt;a href="http://www.astaticstate.com/2011/08/part-5-custom-visio-services-reports.html"&gt;Part 5 - Custom Visio Services Reports with SharePoint 2010 Workflow&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;If you have been reading this blog series closely I mentioned that I will be discussing how we can do reporting for our workflow solutions in SharePoint 2010.&lt;/p&gt;  &lt;p&gt;As you may know when you configure a workflow in SharePoint there is a Workflow History list that must be associated which will stored information about the execution of a workflow instance. I have typically viewed this as more of a log. It is not something to be used for reporting. Here is a quick reference about it and I suggest you read it - &lt;a href="http://technet.microsoft.com/en-us/library/ee662522.aspx"&gt;http://technet.microsoft.com/en-us/library/ee662522.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The reasons I do not use it for reporting is because:&lt;/p&gt;  &lt;p&gt;· This list can potentially store a lot of data from a lot of different workflows.&lt;/p&gt;  &lt;p&gt;· It will be purged after a period time. Even though you can disable a job to ensure logs are not deleted, doing this would disable the job for every workflow across an entire web application which is not good practice.&lt;/p&gt;  &lt;p&gt;· Personally I like it for its logging capability but I would not use it for a reporting capability.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Solution&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;My approach will be to store data in a SQL Server table using Business Connectivity Services (BCS). With SharePoint 2010 it is so easy to support this from a workflow without doing a ton of code. Now I can do inserts and updates operations to reporting tables and then build reports off of them using the either Excel Services, SSRS, etc.&lt;/p&gt;  &lt;p&gt;I am not going to go over the steps on how to create a SQL Table or how to create an external content type using BCS. What I will cover is how to use the external content type from a workflow and discuss one tricky configuration you may not know about.&lt;/p&gt;  &lt;p&gt;For this solution you need to:&lt;/p&gt;  &lt;p&gt;· Create any sort of SQL tables you need.&lt;/p&gt;  &lt;p&gt;· Create external content types to connect to those tables.&lt;/p&gt;  &lt;p&gt;· Create external lists on the site to use the external content types.&lt;/p&gt;  &lt;p&gt;· Finally I will cover how the workflow will call the external list as a proxy to make transactions against the SQL tables that you will use for reporting.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Insert a Record from a Workflow&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;There is really nothing special to this at all. Add a Create List Item action into my workflow that references the external list. In my case, the external list I created was called “Review Actions Table”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-qjy58_2cYfQ/Tj8e9WbAS4I/AAAAAAAAAuc/aklnINKZQwE/s1600-h/clip_image001%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://lh4.ggpht.com/-yQzKTeXPyvY/Tj8e9_B1eTI/AAAAAAAAAug/DrsYQ_OwGgM/clip_image001_thumb%25255B1%25255D.png?imgmax=800" width="501" height="52" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Note that I created a variable called ReviewActionID, where I store the SQL generated ID of the new item that was created. If you need to update this SQL record as part of a different workflow process, I recommend updating this value into a column on the item where the workflow is running against.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Updating a Record&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Now this is the tricky part. Let’s say later on in the same workflow process you want to update the same SQL record you just created. To accomplish this just add an update action like the following.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-NCtYEhZhoOU/Tj8e99tgqrI/AAAAAAAAAuk/rGcjwj2XfUc/s1600-h/clip_image002%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh4.ggpht.com/-QCd0xuaaxZE/Tj8e-Pgc3RI/AAAAAAAAAuo/pptI-ebKHfE/clip_image002_thumb%25255B1%25255D.png?imgmax=800" width="471" height="76" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The tricky part is the configuration of the update – look at the screen shot below. Notice how I have to select the BDC Identity Field to get the primary key value to perform the update. If you do not do this the update will fail (sorry do not have the error log handy).&lt;/p&gt;  &lt;p&gt;Initially I had set it to use the ID Field on the external content type thinking it would have the generated key from the SQL table as part of the original insert I did early. However that was not the case.&lt;/p&gt;  &lt;p&gt;Note you do not need to create this BDC Identity column; it is auto-generated for you.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-noUg30O-WjQ/Tj8e-KTrqnI/AAAAAAAAAus/2XfaVcZRBT0/s1600-h/clip_image003%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://lh4.ggpht.com/-Rbwvrilf_Rg/Tj8e-VdfRLI/AAAAAAAAAuw/Zylqno-0HDo/clip_image003_thumb%25255B1%25255D.png?imgmax=800" width="368" height="425" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;One more note, I had to do this for a SQL Server table with an auto-generated primary key. I have not tested this out for other scenarios like a web service or another DB platform.&lt;/p&gt;  &lt;p&gt;Finally let’s say I need to update an external list item on a record that was created prior to the workflow being started. Add an Update List Item action to the external list like the following. Notice here for the Field I use the ID column from the external content type. We do not have to do what we did earlier.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-1jfz9igWoDY/Tj8e-qEEkfI/AAAAAAAAAu0/uq8eTE79oMU/s1600-h/clip_image004%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://lh4.ggpht.com/-KK1wbXt9r94/Tj8e-6Tp5FI/AAAAAAAAAu4/Zs3w06v7wlU/clip_image004_thumb%25255B1%25255D.png?imgmax=800" width="374" height="432" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Conclusions&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Why do I get so excited about this? Now I am able to start dumping data out into SQL server to do reporting with SharePoint 2010 Business Intelligence solutions. I can create reports with Excel Services or SSRS. In this example I used SSRS using Report Builder 3.0 to create reports about the execution of my business process.&lt;/p&gt;  &lt;p&gt;For instance I created an SSRS report that shows the average duration of steps in the business process. I embedded the reporting into SharePoint and I was off and running.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-Fn7z8eo8Cj0/Tj8e_OXIvJI/AAAAAAAAAu8/SrJfrFkqgOM/s1600-h/clip_image006%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://lh3.ggpht.com/-9KT7ckPvaFE/Tj8e_uI9j6I/AAAAAAAAAvA/8Jv9i32sIzQ/clip_image006_thumb%25255B1%25255D.jpg?imgmax=800" width="347" height="234" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I then created another report that shows the duration by business process instance.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-__ihDizSzkI/Tj8e_xQY8-I/AAAAAAAAAvE/r_ndZTtu4bg/s1600-h/clip_image008%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://lh4.ggpht.com/-KVyti6jNq3s/Tj8fANUU0tI/AAAAAAAAAvI/kDvGdgVT8kI/clip_image008_thumb%25255B1%25255D.jpg?imgmax=800" width="376" height="254" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I even created another report that shows how employees perform.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-qWhgvgZZikw/Tj8fATzzUbI/AAAAAAAAAvM/aFOsVUnwcHY/s1600-h/clip_image009%25255B5%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image009" border="0" alt="clip_image009" src="http://lh3.ggpht.com/-INbi9nG8OIk/Tj8fAjKVVHI/AAAAAAAAAvQ/RAKJIHMy_tk/clip_image009_thumb%25255B2%25255D.png?imgmax=800" width="377" height="397" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I just embedded these reports into SharePoint 2010 and I was done. Now I can provide some real business insight into process execution.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-5133700786917121481?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/5133700786917121481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=5133700786917121481' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/5133700786917121481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/5133700786917121481'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/08/part-4-using-business-connectivity.html' title='Part 4 – Using Business Connectivity Services (BCS) with SharePoint 2010 Workflow'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-yQzKTeXPyvY/Tj8e9_B1eTI/AAAAAAAAAug/DrsYQ_OwGgM/s72-c/clip_image001_thumb%25255B1%25255D.png?imgmax=800' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-3084496924554829614</id><published>2011-08-07T16:23:00.001-07:00</published><updated>2011-08-07T16:43:36.119-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Workflow'/><title type='text'>Part 3 – Delays for Workflow Initiation Action</title><content type='html'>&lt;p&gt;· &lt;a href="http://www.astaticstate.com/2011/07/part-1pattern-for-building-stateful.html"&gt;Part 1 - Pattern for Building Stateful Workflows with SharePoint Designer 2010&lt;/a&gt;     &lt;br /&gt;· &lt;a href="http://www.astaticstate.com/2011/07/part-2-custom-action-for-workflow.html"&gt;Part 2 - Custom Action for Workflow Initiation&lt;/a&gt;     &lt;br /&gt;· &lt;a href="http://www.astaticstate.com/2011/08/part-3-delays-for-workflow-initiation.html"&gt;Part 3 - Delays for Workflow Initiation Action&lt;/a&gt;     &lt;br /&gt;· &lt;a href="http://www.astaticstate.com/2011/08/part-4-using-business-connectivity.html"&gt;Part 4 - Using Business Connectivity Services (BCS) with SharePoint 2010 Workflow&lt;/a&gt;     &lt;br /&gt;· &lt;a href="http://www.astaticstate.com/2011/08/part-5-custom-visio-services-reports.html"&gt;Part 5 - Custom Visio Services Reports with SharePoint 2010 Workflow&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;In the previous part of this blog series I provided an approach for chaining together a bunch of sequential workflows together so that I can create a “state like” workflow without having to use Visual Studio. However one thing I did not go over was a few configurations you will have to do to actually start working with data.&lt;/p&gt;  &lt;p&gt;One important issue I would run into with my approach was that workflows would start to trip over each other. For instance I have workflow A and workflow B associated to a list. In this case, workflow A would start workflow B. Every once and a while the workflows would fail for no apparent reason. Digging through the logs I would find errors like this which would not tell me much.&lt;/p&gt;  &lt;p&gt;&lt;i&gt;OWSTIMER.EXE (0x0A00) 0x0968 SharePoint Foundation Workflow Infrastructure 88xr Unexpected WinWF Internal Error, terminating workflow Id# 13531682-5bef-4194-aaf6-8cf32b31345d &lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;OWSTIMER.EXE (0x0A00) 0x0968 SharePoint Foundation Workflow Infrastructure 98d4 Unexpected System.ArgumentException: listItemKey at Microsoft.SharePoint.WorkflowActions.WaitForDocumentUnlockActivity.Initialize(WorkflowContext context, Guid listID, SPItemKey listItemKey) at Microsoft.SharePoint.WorkflowActions.WithKey.UpdateItemActivity.Execute(ActivityExecutionContext provider) at System.Workflow.ComponentModel.ActivityExecutor`1.Execute(T activity, ActivityExecutionContext executionContext) at System.Workflow.ComponentModel.ActivityExecutor`1.Execute(Activity activity, ActivityExecutionContext executionContext) at System.Workflow.ComponentModel.ActivityExecutorOperation.Run(IWorkflowCoreRuntime workflowCoreRuntime) at System.Workflow.Runtime.Scheduler.Run() &lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Solution&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The solution is simple; if you are going to use the approach that I outlined earlier in this series you will need to introduce some delays into your workflows.&lt;/p&gt;  &lt;p&gt;For instance in Workflow A, I put in the following delay before my custom action to initiate a workflow.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-zXPdJKxV1bQ/Tj8eVLkgplI/AAAAAAAAAtM/S17MCA_LT5A/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-pZCVe81Vv5E/Tj8eVZquAoI/AAAAAAAAAtQ/SyUAmFehlxs/image_thumb%25255B1%25255D.png?imgmax=800" width="649" height="74" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Then in Workflow B, I put another delay.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-yqgP71ztTfQ/Tj8eVl0YGqI/AAAAAAAAAtU/wJl7ylIqklo/s1600-h/clip_image001%25255B5%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://lh4.ggpht.com/-O3wS5_lzeSg/Tj8eVzWtjXI/AAAAAAAAAtY/QfhY4NpOEd0/clip_image001_thumb%25255B2%25255D.png?imgmax=800" width="346" height="110" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This way I am ensured that if there are any lagging transactions are completed against the list item that both workflows are working on.&lt;/p&gt;  &lt;p&gt;You will also have to configure the interval workflow timer job in Central Admin. The default is 5 minutes and I upped it to one minute in my development environment. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-m-VfBPxlbiE/Tj8eWJZe79I/AAAAAAAAAtc/FdMfFSz6c4A/s1600-h/clip_image003%25255B5%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://lh4.ggpht.com/-XyxnZ6fxCcE/Tj8eWeqP7jI/AAAAAAAAAtg/M8WyVdiOXSw/clip_image003_thumb%25255B2%25255D.jpg?imgmax=800" width="579" height="360" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There is no perfect configuration however you will need to make the correct configuration to make sure everything works well. You need to introduce enough delays and configure the workflow service to make sure you do not get these locking issues.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-3084496924554829614?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/3084496924554829614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=3084496924554829614' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/3084496924554829614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/3084496924554829614'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/08/part-3-delays-for-workflow-initiation.html' title='Part 3 – Delays for Workflow Initiation Action'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-pZCVe81Vv5E/Tj8eVZquAoI/AAAAAAAAAtQ/SyUAmFehlxs/s72-c/image_thumb%25255B1%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-7341597990441245277</id><published>2011-07-30T19:15:00.001-07:00</published><updated>2011-08-07T16:44:37.463-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010 Development'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Workflow'/><category scheme='http://www.blogger.com/atom/ns#' term='Sandbox Solutions'/><title type='text'>Part 2 – Custom Action for Workflow Initiation</title><content type='html'>&lt;p&gt;· &lt;a href="http://www.astaticstate.com/2011/07/part-1pattern-for-building-stateful.html"&gt;Part 1 - Pattern for Building Stateful Workflows with SharePoint Designer 2010&lt;/a&gt;     &lt;br /&gt;· &lt;a href="http://www.astaticstate.com/2011/07/part-2-custom-action-for-workflow.html"&gt;Part 2 - Custom Action for Workflow Initiation&lt;/a&gt;     &lt;br /&gt;· &lt;a href="http://www.astaticstate.com/2011/08/part-3-delays-for-workflow-initiation.html"&gt;Part 3 - Delays for Workflow Initiation Action&lt;/a&gt;     &lt;br /&gt;· &lt;a href="http://www.astaticstate.com/2011/08/part-4-using-business-connectivity.html"&gt;Part 4 - Using Business Connectivity Services (BCS) with SharePoint 2010 Workflow&lt;/a&gt;     &lt;br /&gt;· &lt;a href="http://www.astaticstate.com/2011/08/part-5-custom-visio-services-reports.html"&gt;Part 5 - Custom Visio Services Reports with SharePoint 2010 Workflow&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Part 2&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Building the Custom Action&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;In the previous part of this blog I explained my approach and in this part I am going to show you how I created two custom actions that is needed to support my approach. I am first going to show you the code solution I created and then dive a bit into why I made the solution as is. &lt;/p&gt;  &lt;p&gt;I can tell you honestly that I really wanted this solution to be a SharePoint 2010 Sandbox solution however I ran into a few challenges that prevented me from doing that. This forced me to build a full trust solution with Visual Studio 2010. There are basically two actions I needed to create. The first one is an action that can initiate another workflow. The second action I needed checks to see if 1 to N workflows are running on a list item, and if so, stop the running of that workflow.&lt;/p&gt;  &lt;p&gt;It is pretty well documented on how to create a custom action, deploy it and then use that action in SharePoint Designer. The following are some good references:&lt;/p&gt;  &lt;p&gt;· &lt;a href="http://blog.voltje.be/?p=144"&gt;http://blog.voltje.be/?p=144&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· &lt;a href="http://msmvps.com/blogs/sundar_narasiman/archive/2010/12/26/develop-custom-workflow-activity-for-sharepoint-2010-workflow.aspx"&gt;http://msmvps.com/blogs/sundar_narasiman/archive/2010/12/26/develop-custom-workflow-activity-for-sharepoint-2010-workflow.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Workflow Helper Class&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;First thing I did was create a simple helper class where I stored logic to initiate the workflow and to check to see if there are any existing workflows running. The ItemHasActiveWorkflows method is really straight forward as it is searching workflows that are running for the specific item. If it finds a workflow is running, it will return false. Why is this important? Well because a document or list item can only have one of a particular type running at a time. But since we broke the larger business process up into five smaller ones, we need to check to see if any of the five are running on the item. If any one of them is running, we need to block any new workflows from being started. This method will take a comma delimited list of workflow names that must be checked.&lt;/p&gt;  &lt;p&gt;The second method is StartWorkflow which will initiate a workflow on a specified item. This code is very straight forward.&lt;/p&gt; &lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; WorkflowHelper&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; siteCollectionUrl;&lt;br /&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; webUrl;&lt;br /&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; listName;&lt;br /&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; itemID;&lt;br /&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; workflowName;&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; WorkflowHelper(&lt;span class="kwrd"&gt;string&lt;/span&gt; siteCollectionUrl, &lt;span class="kwrd"&gt;string&lt;/span&gt; webUrl, &lt;span class="kwrd"&gt;string&lt;/span&gt; listName, &lt;span class="kwrd"&gt;int&lt;/span&gt; itemID)&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;this&lt;/span&gt;.siteCollectionUrl = siteCollectionUrl;&lt;br /&gt;        &lt;span class="kwrd"&gt;this&lt;/span&gt;.webUrl = webUrl;&lt;br /&gt;        &lt;span class="kwrd"&gt;this&lt;/span&gt;.listName = listName;&lt;br /&gt;        &lt;span class="kwrd"&gt;this&lt;/span&gt;.itemID = itemID;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; WorkflowHelper(&lt;span class="kwrd"&gt;string&lt;/span&gt; siteCollectionUrl, &lt;span class="kwrd"&gt;string&lt;/span&gt; webUrl, &lt;span class="kwrd"&gt;string&lt;/span&gt; listName, &lt;span class="kwrd"&gt;int&lt;/span&gt; itemID, &lt;span class="kwrd"&gt;string&lt;/span&gt; workflowName) : &lt;span class="kwrd"&gt;this&lt;/span&gt;(siteCollectionUrl, webUrl, listName, itemID)&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;this&lt;/span&gt;.workflowName = workflowName;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; ItemHasActiveWorkflows(&lt;span class="kwrd"&gt;string&lt;/span&gt; workflowNames)&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;string&lt;/span&gt;[] seperator = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;[] {&lt;span class="str"&gt;&amp;quot;,&amp;quot;&lt;/span&gt;};&lt;br /&gt;        &lt;span class="kwrd"&gt;string&lt;/span&gt;[] workflowNamesSplit = workflowNames.Split(seperator, StringSplitOptions.RemoveEmptyEntries);&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;//Get the site collection&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;using&lt;/span&gt; (SPSite site = &lt;span class="kwrd"&gt;new&lt;/span&gt; SPSite(siteCollectionUrl))&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="rem"&gt;//Get the web&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;using&lt;/span&gt; (SPWeb web = site.OpenWeb(webUrl))&lt;br /&gt;            {&lt;br /&gt;                SPList list = web.Lists[listName];&lt;br /&gt;                SPListItem workflowItem = list.GetItemById(itemID);&lt;br /&gt;&lt;br /&gt;                &lt;span class="rem"&gt;//Loop over the workflows to look for&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt; workflowName &lt;span class="kwrd"&gt;in&lt;/span&gt; workflowNamesSplit)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span class="rem"&gt;//Loop over the workflows on the item&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (SPWorkflow workflow &lt;span class="kwrd"&gt;in&lt;/span&gt; workflowItem.Workflows)&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span class="rem"&gt;//Check the state of the workflows to see if any are running&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;if&lt;/span&gt; (workflow.InternalState == SPWorkflowState.Running ||&lt;br /&gt;                            workflow.InternalState == SPWorkflowState.Expiring ||&lt;br /&gt;                            workflow.InternalState == SPWorkflowState.Faulting)&lt;br /&gt;                        {&lt;br /&gt;                            &lt;span class="kwrd"&gt;if&lt;/span&gt; (list.WorkflowAssociations[workflow.AssociationId].Name.ToLower() == workflowName.Trim().ToLower())&lt;br /&gt;                            {&lt;br /&gt;                                &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;                            }&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; StartWorkflow()&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="rem"&gt;//Open the site collection.  Cannot go across site collections in &lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;//sandbox so easier to just pull of workflow context&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;using&lt;/span&gt; (SPSite site = &lt;span class="kwrd"&gt;new&lt;/span&gt; SPSite(siteCollectionUrl))&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="rem"&gt;//Just open web because we cannot go across site collections&lt;/span&gt;&lt;br /&gt;            &lt;span class="rem"&gt;//with a sandbox solution.&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;using&lt;/span&gt; (SPWeb web = site.OpenWeb(webUrl))&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="rem"&gt;//Get the manager that will initiate the workflow&lt;/span&gt;&lt;br /&gt;                SPWorkflowManager workflowMgr = site.WorkflowManager;&lt;br /&gt;&lt;br /&gt;                &lt;span class="rem"&gt;//Get the available workflows on the list&lt;/span&gt;&lt;br /&gt;                SPWorkflowAssociationCollection workflowAssocs = web.Lists[listName].WorkflowAssociations;&lt;br /&gt;&lt;br /&gt;                &lt;span class="rem"&gt;//Get the list item that the workflow will be initiated on&lt;/span&gt;&lt;br /&gt;                SPListItem workflowItem = web.Lists[listName].GetItemById(itemID);&lt;br /&gt;&lt;br /&gt;                &lt;span class="rem"&gt;//Get the workflow that has been associated&lt;/span&gt;&lt;br /&gt;                SPWorkflowAssociation workflowAssoc = workflowAssocs.GetAssociationByName(workflowName, System.Threading.Thread.CurrentThread.CurrentCulture);&lt;br /&gt;&lt;br /&gt;                &lt;span class="rem"&gt;//Start the workflow&lt;/span&gt;&lt;br /&gt;                workflowMgr.StartWorkflow(workflowItem, workflowAssoc, workflowAssoc.AssociationData, &lt;span class="kwrd"&gt;true&lt;/span&gt;);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Start Workflow Action&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Next I created an action that would start a second workflow. I created the following code.&lt;/p&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; InitWorkflowAction : Activity&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;    &lt;span class="preproc"&gt;#region&lt;/span&gt; Properties&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; DependencyProperty SiteCollectionUrlProperty = DependencyProperty.Register(&lt;span class="str"&gt;&amp;quot;SiteCollectionUrl&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;string&lt;/span&gt;), &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(InitWorkflowAction));&lt;br /&gt;&lt;br /&gt;    [Description(&lt;span class="str"&gt;&amp;quot;Site Collection URL&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    [Category(&lt;span class="str"&gt;&amp;quot;Custom Workflow&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    [Browsable(&lt;span class="kwrd"&gt;true&lt;/span&gt;)]&lt;br /&gt;    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; SiteCollectionUrl&lt;br /&gt;    {&lt;br /&gt;        get&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; ((&lt;span class="kwrd"&gt;string&lt;/span&gt;)(&lt;span class="kwrd"&gt;base&lt;/span&gt;.GetValue(InitWorkflowAction.SiteCollectionUrlProperty)));&lt;br /&gt;        }&lt;br /&gt;        set&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;base&lt;/span&gt;.SetValue(InitWorkflowAction.SiteCollectionUrlProperty, &lt;span class="kwrd"&gt;value&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; DependencyProperty WebUrlProperty = DependencyProperty.Register(&lt;span class="str"&gt;&amp;quot;WebUrl&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;string&lt;/span&gt;), &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(InitWorkflowAction));&lt;br /&gt;&lt;br /&gt;    [Description(&lt;span class="str"&gt;&amp;quot;Web Url&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    [Category(&lt;span class="str"&gt;&amp;quot;Custom Workflow&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    [Browsable(&lt;span class="kwrd"&gt;true&lt;/span&gt;)]&lt;br /&gt;    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; WebUrl&lt;br /&gt;    {&lt;br /&gt;        get&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; ((&lt;span class="kwrd"&gt;string&lt;/span&gt;)(&lt;span class="kwrd"&gt;base&lt;/span&gt;.GetValue(InitWorkflowAction.WebUrlProperty)));&lt;br /&gt;        }&lt;br /&gt;        set&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;base&lt;/span&gt;.SetValue(InitWorkflowAction.WebUrlProperty, &lt;span class="kwrd"&gt;value&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; DependencyProperty ListNameProperty = DependencyProperty.Register(&lt;span class="str"&gt;&amp;quot;ListName&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;string&lt;/span&gt;), &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(InitWorkflowAction));&lt;br /&gt;&lt;br /&gt;    [Description(&lt;span class="str"&gt;&amp;quot;List Name&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    [Category(&lt;span class="str"&gt;&amp;quot;Custom Workflow&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    [Browsable(&lt;span class="kwrd"&gt;true&lt;/span&gt;)]&lt;br /&gt;    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ListName&lt;br /&gt;    {&lt;br /&gt;        get&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; ((&lt;span class="kwrd"&gt;string&lt;/span&gt;)(&lt;span class="kwrd"&gt;base&lt;/span&gt;.GetValue(InitWorkflowAction.ListNameProperty)));&lt;br /&gt;        }&lt;br /&gt;        set&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;base&lt;/span&gt;.SetValue(InitWorkflowAction.ListNameProperty, &lt;span class="kwrd"&gt;value&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; DependencyProperty WorkflowNameProperty = DependencyProperty.Register(&lt;span class="str"&gt;&amp;quot;WorkflowName&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;string&lt;/span&gt;), &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(InitWorkflowAction));&lt;br /&gt;&lt;br /&gt;    [Description(&lt;span class="str"&gt;&amp;quot;Workflow Name&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    [Category(&lt;span class="str"&gt;&amp;quot;Custom Workflow&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    [Browsable(&lt;span class="kwrd"&gt;true&lt;/span&gt;)]&lt;br /&gt;    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; WorkflowName&lt;br /&gt;    {&lt;br /&gt;        get&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; ((&lt;span class="kwrd"&gt;string&lt;/span&gt;)(&lt;span class="kwrd"&gt;base&lt;/span&gt;.GetValue(InitWorkflowAction.WorkflowNameProperty)));&lt;br /&gt;        }&lt;br /&gt;        set&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;base&lt;/span&gt;.SetValue(InitWorkflowAction.WorkflowNameProperty, &lt;span class="kwrd"&gt;value&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; DependencyProperty ItemIDProperty = DependencyProperty.Register(&lt;span class="str"&gt;&amp;quot;ItemID&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt;), &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(InitWorkflowAction));&lt;br /&gt;&lt;br /&gt;    [Description(&lt;span class="str"&gt;&amp;quot;Item ID&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    [Category(&lt;span class="str"&gt;&amp;quot;Custom Workflow&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    [Browsable(&lt;span class="kwrd"&gt;true&lt;/span&gt;)]&lt;br /&gt;    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; ItemID&lt;br /&gt;    {&lt;br /&gt;        get&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; ((&lt;span class="kwrd"&gt;int&lt;/span&gt;)(&lt;span class="kwrd"&gt;base&lt;/span&gt;.GetValue(InitWorkflowAction.ItemIDProperty)));&lt;br /&gt;        }&lt;br /&gt;        set&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;base&lt;/span&gt;.SetValue(InitWorkflowAction.ItemIDProperty, &lt;span class="kwrd"&gt;value&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="preproc"&gt;#endregion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="preproc"&gt;#region&lt;/span&gt; Methods&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="rem"&gt;//WorkflowHelper workflowHelper = new WorkflowHelper(this.SiteCollectionUrl, this.WebUrl, this.ListName, this.ItemID, this.WorkflowName);&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;//workflowHelper.StartWorkflow();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        WorkflowHelper workflowHelper = &lt;span class="kwrd"&gt;new&lt;/span&gt; WorkflowHelper(&lt;span class="kwrd"&gt;this&lt;/span&gt;.SiteCollectionUrl, &lt;span class="kwrd"&gt;this&lt;/span&gt;.WebUrl, &lt;span class="kwrd"&gt;this&lt;/span&gt;.ListName, &lt;span class="kwrd"&gt;this&lt;/span&gt;.ItemID, &lt;span class="kwrd"&gt;this&lt;/span&gt;.WorkflowName);&lt;br /&gt;        Thread thread = &lt;span class="kwrd"&gt;new&lt;/span&gt; Thread(&lt;span class="kwrd"&gt;new&lt;/span&gt; ThreadStart(workflowHelper.StartWorkflow));&lt;br /&gt;        thread.Start();&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; ActivityExecutionStatus.Closed;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="preproc"&gt;#endregion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;With the StartWorkflow method you see the code is straight forward but there some threading. You may be wondering why I have implemented threading? Well I was getting the below error message in the SharePoint logs when the workflow was initiated on the same thread. I did not find any information on why this was occurring but on a hunch I thought the workflow service was competing for the same resources. My solution was to move the call to StartWorkflow into a different thread and the problem was resolved.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;w3wp.exe (0x2BC4) 0x0A2C SharePoint Foundation Workflow Infrastructure xmfh Medium Workflow Compile Failed: Invalid token for impersonation - it cannot be duplicated.&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;w3wp.exe (0x2BC4) 0x0A2C SharePoint Foundation Workflow Infrastructure 72fs Unexpected RunWorkflow: Microsoft.SharePoint.SPException: Invalid token for impersonation - it cannot be duplicated. at Microsoft.SharePoint.Workflow.SPNoCodeXomlCompiler.SubCompiler.DoCompile(WorkflowCompilerParameters parameters, String xomlSource, String assemblyName, CompilationPacket&amp;amp; packet, DirectoryInfo&amp;amp; tempDir) at Microsoft.SharePoint.Workflow.SPNoCodeXomlCompiler.CompileBytes(Byte[] xomlBytes, Byte[] rulesBytes, Boolean doTestCompilation, String assemblyName, SPWeb web, Boolean forceNewAppDomain) at Microsoft.SharePoint.Workflow.SPNoCodeXomlCompiler.LoadXomlAssembly(SPWorkflowAssociation association, SPWeb web) at Microsoft.SharePoint.Workflow.SPWinOeHostServices.LoadDeclarativeAssembly(SPWorkflowAssociation association) at Microsoft.SharePoint.Workflow.SPWinOeHostServi...&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;w3wp.exe (0x2BC4) 0x0A2C SharePoint Foundation Workflow Infrastructure 72fs Unexpected ...ces.CreateInstance(SPWorkflow workflow) at Microsoft.SharePoint.Workflow.SPWinOeEngine.RunWorkflow(SPWorkflowHostService host, SPWorkflow workflow, Collection`1 events, TimeSpan timeOut) at Microsoft.SharePoint.Workflow.SPWorkflowManager.RunWorkflowElev(SPWorkflow workflow, Collection`1 events, SPWorkflowRunOptionsInternal runOptions)&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;0x0A2C SharePoint Foundation Workflow Infrastructure 98d8 Unexpected Microsoft.SharePoint.SPException: Invalid token for impersonation - it cannot be duplicated. at Microsoft.SharePoint.Workflow.SPNoCodeXomlCompiler.SubCompiler.DoCompile(WorkflowCompilerParameters parameters, String xomlSource, String assemblyName, CompilationPacket&amp;amp; packet, DirectoryInfo&amp;amp; tempDir) at Microsoft.SharePoint.Workflow.SPNoCodeXomlCompiler.CompileBytes(Byte[] xomlBytes, Byte[] rulesBytes, Boolean doTestCompilation, String assemblyName, SPWeb web, Boolean forceNewAppDomain) at Microsoft.SharePoint.Workflow.SPNoCodeXomlCompiler.LoadXomlAssembly(SPWorkflowAssociation association, SPWeb web) at Microsoft.SharePoint.Workflow.SPWinOeHostServices.LoadDeclarativeAssembly(SPWorkflowAssociation association) at Microsoft.SharePoint.Workflow.SPWinOeHostServices.CreateIns...&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;w3wp.exe (0x2BC4) 0x0A2C SharePoint Foundation Workflow Infrastructure 98d8 Unexpected ...tance(SPWorkflow workflow) at Microsoft.SharePoint.Workflow.SPWinOeEngine.RunWorkflow(SPWorkflowHostService host, SPWorkflow workflow, Collection`1 events, TimeSpan timeOut) at Microsoft.SharePoint.Workflow.SPWorkflowManager.RunWorkflowElev(SPWorkflow workflow, Collection`1 events, SPWorkflowRunOptionsInternal runOptions)&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Check Active Workflows Action&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Below is the code that will check to see if there is an action running on a workflow item. The code is straight forward and calls my helper class that I created earlier.&lt;/p&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; CheckActiveWorkflowsAction : Activity&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;    &lt;span class="preproc"&gt;#region&lt;/span&gt; Properties&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; DependencyProperty SiteCollectionUrlProperty = DependencyProperty.Register(&lt;span class="str"&gt;&amp;quot;SiteCollectionUrl&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;string&lt;/span&gt;), &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(CheckActiveWorkflowsAction));&lt;br /&gt;&lt;br /&gt;    [Description(&lt;span class="str"&gt;&amp;quot;Site Collection URL&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    [Category(&lt;span class="str"&gt;&amp;quot;Custom Workflow&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    [Browsable(&lt;span class="kwrd"&gt;true&lt;/span&gt;)]&lt;br /&gt;    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; SiteCollectionUrl&lt;br /&gt;    {&lt;br /&gt;        get&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; ((&lt;span class="kwrd"&gt;string&lt;/span&gt;)(&lt;span class="kwrd"&gt;base&lt;/span&gt;.GetValue(CheckActiveWorkflowsAction.SiteCollectionUrlProperty)));&lt;br /&gt;        }&lt;br /&gt;        set&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;base&lt;/span&gt;.SetValue(CheckActiveWorkflowsAction.SiteCollectionUrlProperty, &lt;span class="kwrd"&gt;value&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; DependencyProperty WebUrlProperty = DependencyProperty.Register(&lt;span class="str"&gt;&amp;quot;WebUrl&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;string&lt;/span&gt;), &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(CheckActiveWorkflowsAction));&lt;br /&gt;&lt;br /&gt;    [Description(&lt;span class="str"&gt;&amp;quot;Web Url&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    [Category(&lt;span class="str"&gt;&amp;quot;Custom Workflow&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    [Browsable(&lt;span class="kwrd"&gt;true&lt;/span&gt;)]&lt;br /&gt;    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; WebUrl&lt;br /&gt;    {&lt;br /&gt;        get&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; ((&lt;span class="kwrd"&gt;string&lt;/span&gt;)(&lt;span class="kwrd"&gt;base&lt;/span&gt;.GetValue(CheckActiveWorkflowsAction.WebUrlProperty)));&lt;br /&gt;        }&lt;br /&gt;        set&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;base&lt;/span&gt;.SetValue(CheckActiveWorkflowsAction.WebUrlProperty, &lt;span class="kwrd"&gt;value&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; DependencyProperty ListNameProperty = DependencyProperty.Register(&lt;span class="str"&gt;&amp;quot;ListName&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;string&lt;/span&gt;), &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(CheckActiveWorkflowsAction));&lt;br /&gt;&lt;br /&gt;    [Description(&lt;span class="str"&gt;&amp;quot;List Name&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    [Category(&lt;span class="str"&gt;&amp;quot;Custom Workflow&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    [Browsable(&lt;span class="kwrd"&gt;true&lt;/span&gt;)]&lt;br /&gt;    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ListName&lt;br /&gt;    {&lt;br /&gt;        get&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; ((&lt;span class="kwrd"&gt;string&lt;/span&gt;)(&lt;span class="kwrd"&gt;base&lt;/span&gt;.GetValue(CheckActiveWorkflowsAction.ListNameProperty)));&lt;br /&gt;        }&lt;br /&gt;        set&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;base&lt;/span&gt;.SetValue(CheckActiveWorkflowsAction.ListNameProperty, &lt;span class="kwrd"&gt;value&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; DependencyProperty ItemIDProperty = DependencyProperty.Register(&lt;span class="str"&gt;&amp;quot;ItemID&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt;), &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(CheckActiveWorkflowsAction));&lt;br /&gt;&lt;br /&gt;    [Description(&lt;span class="str"&gt;&amp;quot;Item ID&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    [Category(&lt;span class="str"&gt;&amp;quot;Custom Workflow&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    [Browsable(&lt;span class="kwrd"&gt;true&lt;/span&gt;)]&lt;br /&gt;    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; ItemID&lt;br /&gt;    {&lt;br /&gt;        get&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; ((&lt;span class="kwrd"&gt;int&lt;/span&gt;)(&lt;span class="kwrd"&gt;base&lt;/span&gt;.GetValue(CheckActiveWorkflowsAction.ItemIDProperty)));&lt;br /&gt;        }&lt;br /&gt;        set&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;base&lt;/span&gt;.SetValue(CheckActiveWorkflowsAction.ItemIDProperty, &lt;span class="kwrd"&gt;value&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; DependencyProperty HasActiveProperty = DependencyProperty.Register(&lt;span class="str"&gt;&amp;quot;HasActive&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;bool&lt;/span&gt;), &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(CheckActiveWorkflowsAction));&lt;br /&gt;&lt;br /&gt;    [Description(&lt;span class="str"&gt;&amp;quot;Has Active&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    [Category(&lt;span class="str"&gt;&amp;quot;Custom Workflow&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    [Browsable(&lt;span class="kwrd"&gt;true&lt;/span&gt;)]&lt;br /&gt;    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; HasActive&lt;br /&gt;    {&lt;br /&gt;        get&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; ((&lt;span class="kwrd"&gt;bool&lt;/span&gt;)(&lt;span class="kwrd"&gt;base&lt;/span&gt;.GetValue(CheckActiveWorkflowsAction.HasActiveProperty)));&lt;br /&gt;        }&lt;br /&gt;        set&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;base&lt;/span&gt;.SetValue(CheckActiveWorkflowsAction.HasActiveProperty, &lt;span class="kwrd"&gt;value&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; DependencyProperty WorkflowNamesProperty = DependencyProperty.Register(&lt;span class="str"&gt;&amp;quot;WorkflowNames&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;string&lt;/span&gt;), &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(CheckActiveWorkflowsAction));&lt;br /&gt;&lt;br /&gt;    [Description(&lt;span class="str"&gt;&amp;quot;Workfow Names&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    [Category(&lt;span class="str"&gt;&amp;quot;Custom Workflow&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    [Browsable(&lt;span class="kwrd"&gt;true&lt;/span&gt;)]&lt;br /&gt;    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; WorkflowNames&lt;br /&gt;    {&lt;br /&gt;        get&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; ((&lt;span class="kwrd"&gt;string&lt;/span&gt;)(&lt;span class="kwrd"&gt;base&lt;/span&gt;.GetValue(CheckActiveWorkflowsAction.WorkflowNamesProperty)));&lt;br /&gt;        }&lt;br /&gt;        set&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;base&lt;/span&gt;.SetValue(CheckActiveWorkflowsAction.WorkflowNamesProperty, &lt;span class="kwrd"&gt;value&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="preproc"&gt;#endregion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="preproc"&gt;#region&lt;/span&gt; Methods&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)&lt;br /&gt;    {&lt;br /&gt;        WorkflowHelper workflowHelper = &lt;span class="kwrd"&gt;new&lt;/span&gt; WorkflowHelper(&lt;span class="kwrd"&gt;this&lt;/span&gt;.SiteCollectionUrl, &lt;span class="kwrd"&gt;this&lt;/span&gt;.WebUrl, &lt;span class="kwrd"&gt;this&lt;/span&gt;.ListName, &lt;span class="kwrd"&gt;this&lt;/span&gt;.ItemID);&lt;br /&gt;        &lt;span class="kwrd"&gt;this&lt;/span&gt;.HasActive = workflowHelper.ItemHasActiveWorkflows(&lt;span class="kwrd"&gt;this&lt;/span&gt;.WorkflowNames);&lt;br /&gt;            &lt;br /&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; ActivityExecutionStatus.Closed;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="preproc"&gt;#endregion&lt;/span&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Deployment&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The deployment of this solution was pretty easy with Visual Studio 2010.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;· I created an empty SharePoint 2010 project.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;· Added the above code.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;· Added a Site Collection level Feature.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;· Added a SharePoint mapped folder called “Workflow”&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;· Create a new file called InitWorkflowAction.actions in the Workflow folder.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The InitWorkflowAction.actions file describes my custom actions and makes them available to design tools such as SharePoint Designer 2010 to create a declarative workflow. Information below is very straight forward. It defines the sentence users will fill in and what type of data will be consumed or returned from the methods I created earlier.&lt;/p&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;WorkflowInfo&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Actions&lt;/span&gt; &lt;span class="attr"&gt;Sequential&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;then&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Parallel&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;and&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Action&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Start Workflow&amp;quot;&lt;/span&gt;&lt;br /&gt;            &lt;span class="attr"&gt;Assembly&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;My.Activities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7cb64b163bd9c1db&amp;quot;&lt;/span&gt;&lt;br /&gt;            &lt;span class="attr"&gt;ClassName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;My.Activities.InitWorkflowAction&amp;quot;&lt;/span&gt;&lt;br /&gt;            &lt;span class="attr"&gt;AppliesTo&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;all&amp;quot;&lt;/span&gt;&lt;br /&gt;            &lt;span class="attr"&gt;Category&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Custom Workflow&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RuleDesigner&lt;/span&gt; &lt;span class="attr"&gt;Sentence&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Initiate workflow %4 on item %5 in list %3 in Web %2 in Site Collection %1&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FieldBind&lt;/span&gt; &lt;span class="attr"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SiteCollectionUrl&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Site Collection Url&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;DesignerType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TextBox&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FieldBind&lt;/span&gt; &lt;span class="attr"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;WebUrl&amp;quot;&lt;/span&gt; &lt;br /&gt;                   &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Web Url&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;DesignerType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TextBox&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FieldBind&lt;/span&gt; &lt;span class="attr"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ListName&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;List Name&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;3&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;DesignerType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TextBox&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FieldBind&lt;/span&gt; &lt;span class="attr"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;WorkflowName&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Workflow Name&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;4&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;DesignerType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TextBox&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FieldBind&lt;/span&gt; &lt;span class="attr"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ItemID&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Item ID&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;5&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;DesignerType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Integer&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;RuleDesigner&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Parameters&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Parameter&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SiteCollectionUrl&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.String, mscorlib&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Direction&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;In&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;DesignerType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TextBox&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Description&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Site Collection Url&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Parameter&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;WebUrl&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.String, mscorlib&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Direction&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;In&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;DesignerType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TextBox&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Description&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Web Url&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Parameter&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ListName&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.String, mscorlib&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Direction&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;In&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;DesignerType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TextBox&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Description&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;List Name&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Parameter&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;WorkflowName&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.String, mscorlib&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Direction&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;In&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;DesignerType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TextBox&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Description&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Workflow Name&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Parameter&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ItemID&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Int32, mscorlib&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Direction&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;In&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;DesignerType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Integer&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Description&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Item ID&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Parameters&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Action&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Action&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Check Active Workflow&amp;quot;&lt;/span&gt;&lt;br /&gt;            &lt;span class="attr"&gt;Assembly&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;My.Activities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7cb64b163bd9c1db&amp;quot;&lt;/span&gt;&lt;br /&gt;            &lt;span class="attr"&gt;ClassName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;My.Activities.CheckActiveWorkflowsAction&amp;quot;&lt;/span&gt;&lt;br /&gt;            &lt;span class="attr"&gt;AppliesTo&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;all&amp;quot;&lt;/span&gt;&lt;br /&gt;            &lt;span class="attr"&gt;Category&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Custom Workflow&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RuleDesigner&lt;/span&gt; &lt;span class="attr"&gt;Sentence&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Check if workflows %6 on item item %4 in list %3 in Web %2 in Site Collection %1 has a running workflow (Output to %5)&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FieldBind&lt;/span&gt; &lt;span class="attr"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SiteCollectionUrl&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Site Collection Url&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;DesignerType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TextBox&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FieldBind&lt;/span&gt; &lt;span class="attr"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;WebUrl&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Web Url&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;DesignerType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TextBox&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FieldBind&lt;/span&gt; &lt;span class="attr"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ListName&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;List Name&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;3&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;DesignerType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TextBox&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FieldBind&lt;/span&gt; &lt;span class="attr"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ItemID&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Item ID&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;4&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;DesignerType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Integer&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FieldBind&lt;/span&gt; &lt;span class="attr"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;HasActive&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Has Active&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;5&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;DesignerType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ParameterNames&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FieldBind&lt;/span&gt; &lt;span class="attr"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;WorkflowNames&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Comma delimited list of workflow names&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;6&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;DesignerType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TextBox&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;RuleDesigner&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Parameters&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Parameter&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SiteCollectionUrl&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.String, mscorlib&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Direction&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;In&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;DesignerType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TextBox&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Description&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Site Collection Url&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Parameter&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;WebUrl&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.String, mscorlib&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Direction&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;In&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;DesignerType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TextBox&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Description&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Web Url&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Parameter&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ListName&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.String, mscorlib&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Direction&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;In&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;DesignerType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TextBox&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Description&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;List Name&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Parameter&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ItemID&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Int32, mscorlib&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Direction&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;In&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;DesignerType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Integer&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Description&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Item ID&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Parameter&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;HasActive&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Boolean, mscorlib&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Direction&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;In&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;DesignerType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ParameterNames&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Description&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Has Active&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Parameter&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;WorkflowNames&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.String, mscorlib&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Direction&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;In&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;DesignerType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TextBox&amp;quot;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="attr"&gt;Description&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Comma delimited list of workflow names&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Parameters&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Action&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Actions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;WorkflowInfo&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Using Custom Actions in SharePoint Designer 2010&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Now I am going to show you how I used the custom actions in my workflow. Earlier in this series you saw that I had created five different SharePoint Visio 2010 workflow diagrams. I am going to skip documenting the steps on how to bring the Visio diagrams into SharePoint Designer as that is a pretty straight forward process.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Below is a screenshot of the Initiate Process workflow. The first Action is my custom action that checks to see if there is already a workflow running for the custom list item. You will notice that the sentence displayed here corresponds with the sentence in the InitWorkflowAction.actions file. Also note the first parameter is a comma delimited list of all the other workflows (Review,Manager Review,Resubmit Request,Complete Request). &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Next I take the value returned from my custom action and check to see if it Yes or No. If it is No, that means there are no running workflows and that I should initiate the Review Workflow. The third sentence in the diagram below captures this. I will initiate the Review workflow on the current item and send a notification email. Otherwise the workflow will not be started and the user will be notified.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-xqUu6wgm190/TjS6tXSUjoI/AAAAAAAAAsE/YTcvq-sc62w/s1600-h/image%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-mvDDM2t5dn8/TjS6tlhgiRI/AAAAAAAAAsI/lsqUPCj_bvE/image_thumb%25255B2%25255D.png?imgmax=800" width="734" height="543" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Note that for the configuration of this workflow, it is the only one that supports allowing the workflow to be started manually. All of the other workflows I have created have no checkboxes checked for the Start Options section. This reduces the potential for user errors when starting the workflow for the item. The reason why is that we always want users to start with the Initiate Process workflow and let the other workflows be started based on business rules.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-Eqv4EYWc6LI/TjS6t9j2zQI/AAAAAAAAAsM/-jb0o8sK6Aw/s1600-h/clip_image002%25255B5%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh3.ggpht.com/-4yYC-GYMXOI/TjS6uMYiH_I/AAAAAAAAAsQ/4X68LSCdcIk/clip_image002_thumb%25255B2%25255D.jpg?imgmax=800" width="752" height="551" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Next I have another workflow called Review that corresponds to the Visio diagram in the previous part of this series. Notice again I simply wire into the custom action StartWorkflow to start Manager Review, Complete Review or Resubmit Request.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-sRqVZ9F36DM/TjS6uRDbUOI/AAAAAAAAAsU/tle6Ib-44RY/s1600-h/clip_image004%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://lh4.ggpht.com/-5Q0MJOnHxM4/TjS6ulNdDZI/AAAAAAAAAsY/N_OgzCWISSE/clip_image004_thumb%25255B1%25255D.jpg?imgmax=800" width="735" height="534" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Below is the Manager Review workflow. As you can see if the Manager approves the Complete Request workflow will be called otherwise the Resubmit Request workflow will be called.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-LqjWMWUx2HM/TjS6uyp5VzI/AAAAAAAAAsc/mcJDs-zFOUI/s1600-h/clip_image006%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://lh5.ggpht.com/-fTsF_tCHqDk/TjS6vOiwBLI/AAAAAAAAAsg/5hoXd_mpHm0/clip_image006_thumb%25255B1%25255D.jpg?imgmax=800" width="728" height="529" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Next is the Resubmit Request workflow. The workflow checks to see if the user cancels the workflow. If they do, the item will be updated and an email will be sent. Otherwise, the item will go back to the Review workflow (for re-review).&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-vCfDQ0rosms/TjS6veTh5jI/AAAAAAAAAsk/xCd29CCqQMU/s1600-h/clip_image008%25255B5%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://lh3.ggpht.com/--QGOzzFBc7I/TjS6vsdgl-I/AAAAAAAAAso/7XTd9v9CVyQ/clip_image008_thumb%25255B2%25255D.jpg?imgmax=800" width="740" height="542" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Finally the Complete Request workflow is below. I have not done much with it at this time but more can be added.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-X5ce1pf--Dk/TjS6vxcbQaI/AAAAAAAAAss/gixgJlHW36Q/s1600-h/clip_image010%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image010" border="0" alt="clip_image010" src="http://lh6.ggpht.com/-MG7OweEYAvM/TjS6wG7Nk7I/AAAAAAAAAsw/f5VjaFrbRho/clip_image010_thumb%25255B1%25255D.jpg?imgmax=800" width="774" height="562" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So now once I validate and deploy my workflow I can initiate it on an item. Below is a screenshot of a user initiate the process for an item. Notice only the Initiate Process workflow is available.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-EwqheTLNB3U/TjS6wf5oGKI/AAAAAAAAAs0/W7UVW3n5W_w/s1600-h/clip_image012%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image012" border="0" alt="clip_image012" src="http://lh6.ggpht.com/-CZpcs8v3rjI/TjS6wsJD7oI/AAAAAAAAAs4/ZHIC3yP0KpE/clip_image012_thumb%25255B1%25255D.jpg?imgmax=800" width="766" height="556" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Once I have started the workflow I come back to the workflow status screen. Here you see the Review workflow is In Progress. Notice that the Initiate Process workflow is still available. Since the workflow is in progress I want to make sure that I cannot initiate the entire workflow again while it is current running.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-fueqbVTLZmg/TjS6w2E2BgI/AAAAAAAAAs8/ytlLxhJA4J0/s1600-h/clip_image014%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image014" border="0" alt="clip_image014" src="http://lh3.ggpht.com/-dfCxohqIHfA/TjS6xCAi2EI/AAAAAAAAAtA/2MyDpFryUV8/clip_image014_thumb%25255B1%25255D.jpg?imgmax=800" width="783" height="569" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Below is a screenshot of the completed workflow.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-tkvLkr9o_2w/TjS6xeLmv5I/AAAAAAAAAtE/y5m9mKK1VqM/s1600-h/clip_image016%25255B5%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image016" border="0" alt="clip_image016" src="http://lh6.ggpht.com/-qaLXYnHzm4A/TjS6xoMv0-I/AAAAAAAAAtI/t4p7LtfqLz8/clip_image016_thumb%25255B2%25255D.jpg?imgmax=800" width="790" height="579" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Now you can see I was able to chain together several workflows that as a whole make up a larger business process. Pretty neat.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Sandbox Solutions&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I alluded earlier that I really wanted to make this a sandbox solution. Why? Because I believe that you should always develop for the Sandbox first because it quick to deploy solutions, it is secure, ensures good performance and works well with Office365.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Here are some good resources on how to deploy actions into the SharePoint 2010 Sandbox:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;· &lt;a href="http://msdn.microsoft.com/en-us/library/ff798499.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff798499.aspx&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;· &lt;a href="http://msdn.microsoft.com/en-us/library/ff630175.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff630175.aspx&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;· &lt;a href="http://msdn.microsoft.com/en-us/library/ff798389.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff798389.aspx&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;· &lt;a href="http://www.wictorwilen.se/Post/Sandboxed-workflow-activities-in-SharePoint-2010.aspx"&gt;http://www.wictorwilen.se/Post/Sandboxed-workflow-activities-in-SharePoint-2010.aspx&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The process is a little different and the code above would change a tiny bit so that it is scoped to a Site Collection only. However fundamentally there is not much difference.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;When I deployed the custom actions and created the workflows I would get errors initiating the workflows. I went into the logs and found the following.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;SPUCWorkerProcessProxy.exe (0x1E70) 0x1EC0 SharePoint Foundation Workflow Infrastructure 72er Medium System.NullReferenceException: Object reference not set to an instance of an object. at Microsoft.SharePoint.Library.SPRequest.ClearAllVars(String bstrUrl) at Microsoft.SharePoint.SPListItem.PrepareItemForUpdate(SPWeb web, Boolean bMigration, Boolean&amp;amp; bAdd, Boolean&amp;amp; bPublish, Object&amp;amp; objAttachmentNames, Object&amp;amp; objAttachmentContents, Int32&amp;amp; parentFolderId) at Microsoft.SharePoint.SPListItem.UpdateInternal(Boolean bSystem, Boolean bPreserveItemVersion, Guid newGuidOnAdd, Boolean bMigration, Boolean bPublish, Boolean bNoVersion, Boolean bCheckOut, Boolean bCheckin, Boolean suppressAfterEvents, String filename) at Microsoft.SharePoint.SPListItem.Update() at Microsoft.SharePoint.Workflow.SPWinOEWSSService.CommitUpdateListItem(Transaction txn, Object[] transData)&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;SPUCWorkerProcessProxy.exe (0x1E70) 0x1EC0 SharePoint Foundation Workflow Infrastructure 72fe High Error in commiting pending workflow batch items: System.NullReferenceException: Object reference not set to an instance of an object. at Microsoft.SharePoint.Library.SPRequest.ClearAllVars(String bstrUrl) at Microsoft.SharePoint.SPListItem.PrepareItemForUpdate(SPWeb web, Boolean bMigration, Boolean&amp;amp; bAdd, Boolean&amp;amp; bPublish, Object&amp;amp; objAttachmentNames, Object&amp;amp; objAttachmentContents, Int32&amp;amp; parentFolderId) at Microsoft.SharePoint.SPListItem.UpdateInternal(Boolean bSystem, Boolean bPreserveItemVersion, Guid newGuidOnAdd, Boolean bMigration, Boolean bPublish, Boolean bNoVersion, Boolean bCheckOut, Boolean bCheckin, Boolean suppressAfterEvents, String filename) at Microsoft.SharePoint.SPListItem.Update() at Microsoft.SharePoint.Workflow.SPWinOEWSSService.CommitUpdateListItem...&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;SPUCWorkerProcessProxy.exe (0x1E70) 0x1EC0 SharePoint Foundation Workflow Infrastructure 72fe High ...(Transaction txn, Object[] transData) at Microsoft.SharePoint.Workflow.SPPendingWorkBatch.Commit(Transaction transaction, ICollection items)&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;SPUCWorkerProcessProxy.exe (0x1E70) 0x1EC0 SharePoint Foundation Workflow Infrastructure 88xr Unexpected WinWF Internal Error, terminating workflow Id# 8d547a01-bdb8-44ac-b066-586c12367dc0&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The information that was provided was not very good. Here are some observations I made.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;· Note that the error is in SPUCWorkerProcessProxy.exe and not w3wp.exe. This basically means the entire workflow is running inside the Sandbox service because it has a reference to an action that is deployed there.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;· I would only get this error the very first time the workflow run. From then on, it worked every time flawlessly. However if I stopped and restarted the Sandbox service manually, I would get the error again.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;· I would also not get the error if Workflow A started a very simple Workflow B. For instance if Workflow B was sending an email, no issues. However if Workflow B had an approval process there would be an error.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;After doing some research I came to the conclusion that this error occurs based on a combination of a few things.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;1. When you build a workflow in SharePoint Designer 2010 it is a declarative workflow, not a complied workflow. The workflow will be compiled the first time the workflow is initiated. This is why it always takes a long time to start a workflow the very first time.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;2. Sandbox solutions have a threshold of 20 seconds before it is determined the process too intensive and will stop the execution.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This combination would push me over the 20 seconds rule the very first time running the workflow. The solution would be to write some sort of script that could manually go through each workflow and initiating them so they would be compiled and ready to go when the user comes to manually start the workflow. I did not find that to be an acceptable solution because the Sandbox cache will be remove items from memory if they are not used often. This is why I did a full trust solution.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Next Part&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Hopefully this gave you a pretty good idea of how simple it is to achieve this vision I have. Now in the next part of this series I am going to extend the solution a little bit to support my reporting requirements using Visio Services.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-7341597990441245277?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/7341597990441245277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=7341597990441245277' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/7341597990441245277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/7341597990441245277'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/07/part-2-custom-action-for-workflow.html' title='Part 2 – Custom Action for Workflow Initiation'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-mvDDM2t5dn8/TjS6tlhgiRI/AAAAAAAAAsI/lsqUPCj_bvE/s72-c/image_thumb%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-704138870157504980</id><published>2011-07-30T12:46:00.001-07:00</published><updated>2011-08-07T16:44:10.415-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010 Development'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Workflow Foundation'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Visio Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Workflow'/><title type='text'>Part 1 – Pattern for Building Stateful Workflows with SharePoint Designer 2010</title><content type='html'>&lt;p&gt;· &lt;a href="http://www.astaticstate.com/2011/07/part-1pattern-for-building-stateful.html"&gt;Part 1 - Pattern for Building Stateful Workflows with SharePoint Designer 2010&lt;/a&gt;    &lt;br /&gt;· &lt;a href="http://www.astaticstate.com/2011/07/part-2-custom-action-for-workflow.html"&gt;Part 2 - Custom Action for Workflow Initiation&lt;/a&gt;    &lt;br /&gt;· &lt;a href="http://www.astaticstate.com/2011/08/part-3-delays-for-workflow-initiation.html"&gt;Part 3 - Delays for Workflow Initiation Action&lt;/a&gt;    &lt;br /&gt;· &lt;a href="http://www.astaticstate.com/2011/08/part-4-using-business-connectivity.html"&gt;Part 4 - Using Business Connectivity Services (BCS) with SharePoint 2010 Workflow&lt;/a&gt;    &lt;br /&gt;· &lt;a href="http://www.astaticstate.com/2011/08/part-5-custom-visio-services-reports.html"&gt;Part 5 - Custom Visio Services Reports with SharePoint 2010 Workflow&lt;/a&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;&lt;b&gt;Introduction     &lt;br /&gt;&lt;/b&gt;In the SharePoint 2007 days moderately complex workflow could not be achieved with SharePoint Designer 2007. Individuals would then try to build those workflows using Visual Studio 2007 and then run into a whole new set of complexities. In many cases individuals wanted to use visual tools to build automation inside of SharePoint 2007 only to find out that there were limitations. The end result was developers reverting back to adding event handlers to lists or writing web parts with a custom database.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;With SharePoint 2010 workflow tools have matured allowing us to do more complex business process automation. Most notably:&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;1. Visio 2010 is now a tool that can be used to visually design workflows definitions that can be pulled into SharePoint. It also provides the ability to do reporting and data visualization where graphics can be mapped to data. Then based on the value of that data, conditional logic can be applied to change visual element in Visio (like change something from green to red, or change the shape completely).&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;2. SharePoint Designer 2010 workflow design tool has significantly improved tremendously. There is Visio integration, InfoPath form integration (initiation, association and task forms), better workflow designer, more workflow fields to interact with, etc. It is almost night and day versus the previous version of SharePoint Designer.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;3. Visual Studio 2010 has changed tremendously providing workflow project templates which drastically reduce the level of effort to create workflow process.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;4. Workflow definitions can be moved between tools fairly easily only a few limitations.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;5. Workflow can be easily redeployed between dev, test and production.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;6. Workflow can now run at the site level instead of only being associated to a list item.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;&lt;b&gt;One Big Hurdle Left&lt;/b&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;At the end of the day this is all well and good but there still some holes. Specifically you cannot do state workflows in Visio and SharePoint Designer 2010. SharePoint Designer only supports sequential works. This basically means the flow goes top to down and cannot loop back within the workflow. Not having this capability can be limiting even for a simple workflow process. &lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;&lt;b&gt;The Resolution&lt;/b&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;Have some assumptions you must take think about with this solution:&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;1. Let me state first that my solution is pretty clean and simple. But I really only recommend this as a solution for those simple to moderately complex workflows where you just want to be able to achieve stateful workflows without having to do a bunch of custom code.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;2. Much of this solution is based on leveraging the OOB capabilities of SharePoint 2010.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;3. There is a lot room for improvement of this solution so please use this as a framework to start trying to build some stateful workflows. &lt;b&gt;I will NOT be supporting this solution moving forward&lt;/b&gt;. This is just a demonstration of showing you how you can achieve a great solution by using the SharePoint 2010 toolset.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;After do some brainstorming the following two things dawned on me:&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;1. &lt;b&gt;State is relative&lt;/b&gt; to the business process instance data; not the business process definition itself. What does that mean? It means you do not have to create a single process definition to manage an entire business process state. Still does not make sense? What I am saying is you do not have to create a single workflow diagram to automate a business process. Instead you can create multiple workflows and chain them together. All of these workflows will manage a single stateful item (record); like a SharePoint list item or document. I like this idea because in actuality state workflows are chained together sequential processes when it comes down to it. My goal is to come up with a pattern that will allow me to daisy chain together many sequential workflows that manage the state of a single item to go through a workflow. Doing this this will allow me to achieve my vision of building workflow in SharePoint Designer 2010 and Visio 2010.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;2. &lt;b&gt;The workflow diagram never looks the same as the automation workflow diagram&lt;/b&gt;. Visual workflow designer tools are positioned to allow business users to take their process diagrams (box, diamond and arrow diagrams) and quickly transform it into an executable that can run in some system. That is not really easy. The reality is that business person’s workflow diagram never, ever looks like the automation workflow diagram created in a workflow tool. This is because there will be tons of steps added into the diagram to support the actual automation. Using Visio Services in SharePoint 2010, I will be able to come up with a visual report.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;I believe I have actually come up with a pretty simple solution change solves these challenges. The following are the elements of this solution.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;· Use Visio 2010 to build up the initial workflow definition and then use the SharePoint Designer 2010 to connect the workflow to SharePoint 2010.   &lt;br /&gt;· Create custom workflow activity with Visual Studio 2010 that can initiate another workflow. Basically we need to create a simple .NET function that can take some parameters and then initiate a workflow. This will allow for us to chain workflows together.    &lt;br /&gt;· Use Visio 2010 for reporting by using its new capability to map to data. We can create a picture that the business user can understand and have it “light up” and report to a user about the current state of a business process execution.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;&lt;b&gt;Ok – Show Me What You Are Talking About&lt;/b&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;Is this still too complicated? Have I gotten a little nerdy on the workflow? Let’s put this into context. Below is a pretty simple review workflow by most standards.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;· There is a review step.   &lt;br /&gt;· If the item being reviewed is greater than $20K, a manager needs to review it.    &lt;br /&gt;· If a request is rejected by the reviewer or manager, the request should go back to the originator for resubmission.    &lt;br /&gt;· Only the requestor has the ability to cancel the request.    &lt;br /&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-eHf4cBME_fM/TjRfgpIaQtI/AAAAAAAAArE/aEhmni24-0c/s1600-h/image%25255B5%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-36sfUvcXKKU/TjRfg-MpKXI/AAAAAAAAArI/e4pOvDZwpzU/image_thumb%25255B3%25255D.png?imgmax=800" width="267" height="712" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;So you may say what is the big deal? Why did you write all that esoteric stuff about workflow for something as simple as this? Really? Look at the diagram below, the stuff I highlighted in red could not be achieved in a tool that only supports sequential workflow. Because there is a loop back to the initiator to allow them to resubmit this immediately becomes a state workflow.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-V8_J1HM5Nnk/TjRfhMdmd6I/AAAAAAAAArM/L4279kStdas/s1600-h/image%25255B11%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-8C1tHetiK78/TjRfhcPHB5I/AAAAAAAAArQ/2uEDNbkOAhE/image_thumb%25255B7%25255D.png?imgmax=800" width="271" height="723" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;As well, notice anything else about either of these diagrams? They are simple and what the business users understands. There is nothing in these diagrams that show emails being sent, task items being created, permissions being set, item metadata being updated, data being sent to a database for reporting, etc. If I were to take this diagram and try to model all those steps I can assure you it will become a clutter mess!!!&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;&lt;b&gt;Solution Design&lt;/b&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;I am excited to say my solution solves both of these problems!!! First I will be able to break this up into a bunch of connected workflows. Second I will be able to take the original diagram we draw and light it up based on where the workflow is.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;So how does the solution work? I will get to the real “how does this work in SharePoint 2010” shortly. First we need to break this workflow into multiple workflows. In the screenshot below you will see that I have broken the business process into five somewhat smaller workflows.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;· Initiate – This process will have the responsibility of starting the workflow and performing any activities need to get it going.   &lt;br /&gt;· Review – This is the part where the main reviewer reviews the request.    &lt;br /&gt;· Manager Review – Workflow that manages the workflow for the manager to review.    &lt;br /&gt;· Resubmit – Consolidates the logic for either resubmitting the request or canceling it.    &lt;br /&gt;· Complete – Will handle any operations needed to complete the workflow.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-fwL-MorJ0Co/TjRfhgqpJTI/AAAAAAAAArU/qnWeYIoadeQ/s1600-h/image%25255B17%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-T8kDuRqP1Dw/TjRfiOxVNxI/AAAAAAAAArY/Dx5NFAev394/image_thumb%25255B11%25255D.png?imgmax=800" width="280" height="745" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;When I was designing this solution I was able to test approach with many other more sophisticated workflow patterns (i.e. complex parallel processing or a spider diagram). I was always able to break up the workflow into a set of sequential workflows that could be coordinated with each other.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;&lt;b&gt;Building the SharePoint Workflows with Visio 2010&lt;/b&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;Many of the readers of this blog are aware that they can build SharePoint workflow in Visio 2010. For this solution I will use it to initially build the workflows above however I will not use it for the long term. One limitation is that I will have to build two custom actions in Visual Studio 2010. Custom actions are not supported in Visio 2010 but they are supported in SharePoint Designer 2010.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;&lt;b&gt;Initiate Process&lt;/b&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;Below is the initiate process. Not much going on here other than an email is being sent.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-p4ACVJgH84M/TjRfiYf20EI/AAAAAAAAArc/XvHbB-NOG-c/s1600-h/image%25255B21%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-TVM01lt00Ug/TjRfilsL9lI/AAAAAAAAArg/pFT3WC_RLB8/image_thumb%25255B13%25255D.png?imgmax=800" width="578" height="148" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;However there are several other things we will need to add when we move this into SharePoint Designer. For instance check to see if any of the other processes are currently running. We have to use a custom action to achieve this which cannot be modeled in Visio.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;&lt;b&gt;Review Process&lt;/b&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;Below is the review process. As you can see I have added some steps to update the state of the Review list item and send an email. Like before, I could not add the actions to initiate the other workflows but I have put in placeholders.   &lt;br /&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-FUX2H4RFuv0/TjRfi25waLI/AAAAAAAAArk/sG9qNlEz0nI/s1600-h/image%25255B27%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-FFGZAaI2pyE/TjRfi2yb0wI/AAAAAAAAAro/hcpFllE4xy8/image_thumb%25255B17%25255D.png?imgmax=800" width="220" height="680" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;&lt;b&gt;Manager Review&lt;/b&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;Next I have the manager review. Again I have added some steps to update the review item state, send some emails and put in a placeholder to initiate other workflows.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-6G3PGl4wJx0/TjRfjQV_ZkI/AAAAAAAAArs/ZkCCGiAtJeE/s1600-h/image%25255B32%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-witk3xGbKmM/TjRfjfSNnJI/AAAAAAAAArw/xPSaYq-Qu3M/image_thumb%25255B20%25255D.png?imgmax=800" width="225" height="532" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;&lt;b&gt;Resubmit Process&lt;/b&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;Below is the resubmit process. Again I have added actions that send emails and update the state of the record.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-zZHssDh7mHc/TjRfj4_Rj2I/AAAAAAAAAr0/FSABOVhYMUk/s1600-h/image%25255B38%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-OQPIirWMq-I/TjRfj8wMB9I/AAAAAAAAAr4/uKy-tI2c37k/image_thumb%25255B24%25255D.png?imgmax=800" width="210" height="731" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;&lt;b&gt;Complete Workflow&lt;/b&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;Finally we have the complete workflow; pretty self-explanatory.   &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-LLa61EX5p2I/TjRfkLeHzDI/AAAAAAAAAr8/feht50yTdXs/s1600-h/image%25255B42%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-2eY92vbivmA/TjRfkkvVSnI/AAAAAAAAAsA/WLgsvddzJkI/image_thumb%25255B26%25255D.png?imgmax=800" width="502" height="106" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;&lt;b&gt;What’s Next?&lt;/b&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;Well what we now need to do is bring these workflows into SharePoint Designer 2010 and use some custom actions that can initiate each workflow. In the next part of the series I am going to focus on how these custom actions were built.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-704138870157504980?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/704138870157504980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=704138870157504980' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/704138870157504980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/704138870157504980'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/07/part-1pattern-for-building-stateful.html' title='Part 1 – Pattern for Building Stateful Workflows with SharePoint Designer 2010'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-36sfUvcXKKU/TjRfg-MpKXI/AAAAAAAAArI/e4pOvDZwpzU/s72-c/image_thumb%25255B3%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-352314729884221611</id><published>2011-07-29T07:29:00.000-07:00</published><updated>2011-08-30T06:24:59.051-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office365'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><title type='text'>Office365 SLAs and Service Descriptions</title><content type='html'>Do you need to get your head wrapped around Office365 and what it provides? Honestly the best resources to read are the Service Level Agreements. For me, I focus a lot on SharePoint. When I read these documents I get a clear picture of what is exactly provided in SharePoint Online Services in the Office365 cloud.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Office 365 for Enterprise Service Descriptions - &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=13602"&gt;http://www.microsoft.com/download/en/details.aspx?id=13602&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;SharePoint Online for Office 365: Developer Guide - &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=17069"&gt;http://www.microsoft.com/download/en/details.aspx?id=17069&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;SharePoint Online planning guide for Office 365 for enterprises - &lt;a href="http://office.microsoft.com/en-us/sharepoint-online-enterprise-help/sharepoint-online-planning-guide-for-office-365-beta-for-enterprises-HA101988931.aspx"&gt;http://office.microsoft.com/en-us/sharepoint-online-enterprise-help/sharepoint-online-planning-guide-for-office-365-beta-for-enterprises-HA101988931.aspx&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Microsoft Office 365 Service Descriptions and Service Level Agreements for Dedicated Subscription Plans - &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=18128"&gt;http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=18128&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;SharePoint Online Learning Materials for IT Professionals - &lt;a href="http://sharepoint.microsoft.com/blog/Pages/BlogPost.aspx?pID=990"&gt;http://sharepoint.microsoft.com/blog/Pages/BlogPost.aspx?pID=990&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Microsoft Office 365 ITAR-Support Service and Network Descriptions - &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=23910"&gt;http://www.microsoft.com/download/en/details.aspx?id=23910&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-352314729884221611?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/352314729884221611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=352314729884221611' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/352314729884221611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/352314729884221611'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/07/office365-slas.html' title='Office365 SLAs and Service Descriptions'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-4344808685868873567</id><published>2011-06-25T18:59:00.000-07:00</published><updated>2011-06-25T19:01:05.535-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='WCM'/><title type='text'>SharePoint 2010 Content Deployments</title><content type='html'>I recently had to spin up very quickly on how to do content deployments. Luckily it was very easy skimming through these articles.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Plan content deployment (SharePoint Server 2010) - &lt;a href="http://technet.microsoft.com/en-us/library/cc263428.aspx"&gt;http://technet.microsoft.com/en-us/library/cc263428.aspx&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Content deployment overview (SharePoint Server 2010) - &lt;a href="http://technet.microsoft.com/en-us/library/ee721058.aspx"&gt;http://technet.microsoft.com/en-us/library/ee721058.aspx&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Design content deployment topology - &lt;a href="http://technet.microsoft.com/en-us/library/cc262004.aspx"&gt;http://technet.microsoft.com/en-us/library/cc262004.aspx&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Content Deployment in SharePoint Server 2010 - &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=22753"&gt;http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=22753&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Manage Quick Deploy jobs - &lt;a href="http://technet.microsoft.com/en-us/library/cc262560.aspx"&gt;http://technet.microsoft.com/en-us/library/cc262560.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;I am glad I read them too. In the “Content deployment overview (SharePoint Server 2010)” there are six considerations and the first gives you specific instruction on how to set up your destination site collection. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-4344808685868873567?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/4344808685868873567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=4344808685868873567' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/4344808685868873567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/4344808685868873567'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/06/sharepoint-2010-content-deployments.html' title='SharePoint 2010 Content Deployments'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-5495505565823984461</id><published>2011-05-21T15:37:00.001-07:00</published><updated>2011-05-21T16:39:58.942-07:00</updated><title type='text'>Deploy Branding Solution</title><content type='html'>&lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/introduction-to-sharepoint-2010.html"&gt;Part 1: Introduction to SharePoint 2010 Branding and WCM&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/branding-master-page.html"&gt;Part 2: Branding a Master Page.html&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/refining-branding-on-master-page.html"&gt;Part 3: Refining the Branding of a Master Page&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/adding-anonymous-support-to-master-page.html"&gt;Part 4: Adding Anonymous Support to Master Page&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/branding-sharepoint-2010-search.html"&gt;Part 5: Branding SharePoint 2010 Search&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/creating-page-layout.html"&gt;Part 6: Creating a Page Layout&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/customizing-content-query-web-parts.html"&gt;Part 7: Customizing Content Query Web Parts&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/deploy-branding-solution.html"&gt;Part 8: Deploy Branding Solution&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;Visual Studio Package&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;If you are an experienced SharePoint 2007 professional you will know that to do custom development in Visual Studio 2007 required a lot of manual work to build up a deployable package. This usually resulted in developers created half-packaged solutions where they had tons of manual steps to deploy a solution.&lt;/p&gt;  &lt;p&gt;With SharePoint 2010 the game has changed. Visual Studio 2010 is everything I ever wanted and I wish I was out doing consulting with it now because it is so easy to build a WSP and deploy it. On top of that, Sandbox Solutions make it every more easier to deploy solutions.&lt;/p&gt;  &lt;p&gt;In this section I am going to take a much of the code I created in this series using SharePoint Designer 2010 and pull it in to Visual Studio so that I can make a re-deployable solution.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Getting Started&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;To test this out I did the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Created a new web application. &lt;/li&gt;    &lt;li&gt;Created a team site, site collection. &lt;/li&gt;    &lt;li&gt;Added a FAST Search Center sub site. &lt;/li&gt;    &lt;li&gt;Turned on all publishing features at both the site collection and site levels. &lt;/li&gt;    &lt;li&gt;Modified the navigation to show the FAST sub site. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The result was the following.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_vc1OGKotMCU/Tdg-IxdUyOI/AAAAAAAAAqU/ZF4MlhymDy8/s1600-h/clip_image002%5B5%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh5.ggpht.com/_vc1OGKotMCU/Tdg-jRZflgI/AAAAAAAAAqY/EbksyTZAXzY/clip_image002_thumb%5B2%5D.jpg?imgmax=800" width="661" height="485" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Next I need to create a deployment package that will move all the stuff I have worked on into this new web application. There are a bunch of things I need to move into this deployment package.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Master Page and all the files referenced by it. This includes image and css files. &lt;/li&gt;    &lt;li&gt;Content types &lt;/li&gt;    &lt;li&gt;Page Layouts &lt;/li&gt;    &lt;li&gt;Content Query Web Part customizations &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;To get this started I simply opened up Visual Studio 2010 and created an empty SharePoint project. I also made this a Sandbox Solution.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Master Pages&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Setting up the Master Pages is the easier one; plus it would be the first to logically do. Back in SharePoint and Visual Studio 2007 we spend a whole bunch of time trying to recreate the SharePoint folder structure and get it all worked out in the various XML files. Visual Studio 2010 with SharePoint 2010 is going to save us a ridiculous amount of time.&lt;/p&gt;  &lt;p&gt;I took the following steps to set up the visual studio project.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;I added a new module called “_catalogs”. I removed the sample.txt file. &lt;/li&gt;    &lt;li&gt;Under the _catalogs module I created a folder called “masterpage”. In that folder I placed both of the master pages I had created earlier in SharePoint Designer. &lt;/li&gt;    &lt;li&gt;I then created another module called “Style Library”. I removed the sample.txt file. &lt;/li&gt;    &lt;li&gt;I created a folder called BrandingBlog and images to be the same as the folder structure that I had created in the master page. &lt;/li&gt;    &lt;li&gt;I then moved in all the css and images into the appropriate folders. &lt;/li&gt;    &lt;li&gt;Then under the Features folder, I renamed Feature1 to BrandingBlogMaster. I did this because I want my first feature of this deployment package to be deploying my master pages only. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_vc1OGKotMCU/Tdg-jqjHJkI/AAAAAAAAAqc/P6-pMrIfao4/s1600-h/clip_image003%5B4%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://lh4.ggpht.com/_vc1OGKotMCU/Tdg-j4FE_kI/AAAAAAAAAqg/cjut8_z6dXg/clip_image003_thumb%5B1%5D.png?imgmax=800" width="326" height="524" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Next I modified the Feature scope to be Site so that this is set at the site collection level. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg-kJPSZrI/AAAAAAAAAqk/ZWAbE15a6IM/s1600-h/clip_image005%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image005" border="0" alt="clip_image005" src="http://lh6.ggpht.com/_vc1OGKotMCU/Tdg-kdwAy1I/AAAAAAAAAqo/dWbfTMBuW3M/clip_image005_thumb%5B1%5D.jpg?imgmax=800" width="601" height="437" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Next I had to modify the Elements.xml file in the _catalogs module. &lt;/li&gt;    &lt;li&gt;I changed the module to have both the URL and Path set to “_catalogs/masterpage”. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Then I modified each of the File elements as you see below. Note that I set the Type to GhostableInLibrary .&lt;/p&gt; &lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Elements&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.microsoft.com/sharepoint/&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Module&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;_catalogs&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;_catalogs/masterpage&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Path&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;_catalogs/masterpage&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;BrandingBlog.master&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;BrandingBlog_searchcenter.master&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Module&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Elements&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Next I went to the Style Library module and modified the Elements.xml file in a similar fashion. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Elements&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.microsoft.com/sharepoint/&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Module&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Style Library&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Style Library/BrandingBlog&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Path&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Style Library/BrandingBlog&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;style.css&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/splitter.gif&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/sidebar_bckg.gif&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/picture.jpg&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/li.gif&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/bckg.jpg&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/content.gif&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/footer_bckg.gif&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/head_bckg.jpg&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/menu_bckg.gif&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Module&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Elements&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Now this is done, it is really simple to deploy.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;I right clicked the solution and selected to build it. Even though there is no compiled code it is just a habit of mine. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Next I right clicked the solution and selected Package. This will generate a WSP package which in this case would be BrandingBlog.wsp. Since I am doing a debug build, the BrandingBlog.wsp file will be generated in the Debug folder. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Next I went to the Site Collection &amp;gt;&amp;gt; Site Settings &amp;gt;&amp;gt; Solutions to deploy my WSP into the Sandbox. I uploaded and activated it. This subsequently but all my files into the Master Pages gallery and into the Style Library folder. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Next I web to the Style Library &amp;gt;&amp;gt; BrandingBlog folder and checked in all the files in the directory. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Next I went to Site Settings &amp;gt;&amp;gt; Master Pages and changed the top site to use the BrandingBlog.master file. The following is the result. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_vc1OGKotMCU/Tdg-khMKToI/AAAAAAAAAqs/Bj-jzwGqvhc/s1600-h/clip_image002%5B6%5D%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002[6]" border="0" alt="clip_image002[6]" src="http://lh6.ggpht.com/_vc1OGKotMCU/Tdg-lJb5tJI/AAAAAAAAAqw/umzJDJ-kblI/clip_image002%5B6%5D_thumb%5B1%5D.jpg?imgmax=800" width="566" height="411" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Next I went to the FAST Search Center site and set the master page to be BrandingBlog_searchcenter.master. Below is the branded FAST Search Center. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg-lSe95_I/AAAAAAAAAq0/LTKC0Hk9Od8/s1600-h/clip_image004%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://lh5.ggpht.com/_vc1OGKotMCU/Tdg-l6cZzyI/AAAAAAAAAq4/39le52LE7XY/clip_image004_thumb%5B1%5D.jpg?imgmax=800" width="573" height="417" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Man that was a little too easy.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;But I will be honest, there were a few challenges I ran into when deploying the rest of the solution.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Deploying the Rest of the Solution&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Now I do have some lessons learned in regards to the deployment of the rest of the solution – which I knew was going to run into. Let’s go ahead and discuss them out before we get started.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Content Type GUIDs Lessons Learned&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;If you are going to use Content Types and plan on doing a re-deployment, it is best to get those content types in Visual Studio and create a WSP package as soon as possible. This is because all the content types and columns have their own unique GUIDs which are generated when you build them in the UI. All of my Page Layouts are tied to those GUIDs. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So why does that cause me heart burn in this situation? Well it is common practice for UI designer to actually do a bunch of the work in SharePoint Designer 2010, and then pull them out and give to a developer. It would be good if both the designer and the developer are using the same GUIDs. Plus the GUIDs will be the same between development and production environments making deployments smoother.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Content Query Web Parts and Managed Metadata Columns Lessons Learned&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I somewhat anticipated that there would run into some bumps with re-deploying content query web parts with managed metadata columns. If you have been reading along with this blog series, you will see I was able to get a pretty decent solution put together. Remember my goal is to create a solution that can be deployed to the Sandbox. Here is what I learned.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Content Query Web Parts that are pre-configured into Page Layouts will require some extra manual steps when redeployed across environments. This is mostly because there are several GUIDs that get tied into the configuration of the web part. So in this example I pre-configured content query web parts on my custom page layouts to show related articles and confidential visualization. When the page layouts are redeployed someone will have to go into SharePoint Designer and manually reconfigure the web parts. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Content Query Web Parts that use Management Metadata columns with multiple values require some extra work. For instance, the Technology and Enterprise Keyword columns I have are only available when I select the pages library as the Source. If I try to select the first two options neither of those two columns are available. The net affect it the GUID from the pages library that will be in the content query web part configuration will be different across environments. The resolution is again, I have to reconfigure that web part once it has been re-deployed. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;The Microsoft.SharePoint.Taxonomy namespace is not available in the Sandbox. Why is that important to this particular solution? Well my vision was a 100% re-deployable solution in the sandbox. To achieve that vision I would want to add some code in the Feature activation event to generate to managed metadata that would be mapped back to my content types. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Another lesson learned was the managed metadata column defined declaratively in a Feature does not have the ability to map existing term sets. The resolution is to add some code to the Feature activation to map the column to pre-existing term sets in the destination environment. That code is pretty well defined but it again requires access to the Microsoft.SharePoint.Taxonomy namespace which is not supported in the Sandbox. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;What are the ramifications of all this? Why am I trying to figure out these boundaries? Well if you are looking ahead to using Office365 we are pretty much contained to working with the Sandbox. There will be opportunities to get custom code deployed in dedicate Office365 but again there is a process to go through and best to build to the Sandbox.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Knowing what I have learned, I will be taking the following actions moving forward:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Managed Metadata – I am not going to give up on. There are major redeeming benefits of using them. So there are some simple manual steps that will be done which I will outline. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Content Query Web Parts – I will go through reconfiguration of them when they are embedded into page layouts. However I am going to consider writing simple web parts in the future using LINQ to SharePoint. This way I have much more flexibility to scale later and that will work in the Sandbox. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Adding Other Components&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;In the first part of this Visual Studio deployment I set up the project to deploy out the master page and associated files really quickly. In this part, I am going to capture how I pulled in all of the other components of this solution and changes I had to make based on the lessons learned. Specifically I will be adding:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Columns and Content Type Definitions &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Page Layout &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Content Query Web Part &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Custom Content Query Web Part Styles &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Below is a screenshot of the updated solution with all the added files. I will discuss each of these additions.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg-mN4qw7I/AAAAAAAAAq8/L20AGJh1tPc/s1600-h/clip_image005%5B4%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image005" border="0" alt="clip_image005" src="http://lh5.ggpht.com/_vc1OGKotMCU/Tdg-meLDSgI/AAAAAAAAArA/EP_TaW-VcSk/clip_image005_thumb%5B1%5D.png?imgmax=800" width="378" height="642" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Columns and Content Type Definitions&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;First I created a new Feature for deploying my content types called BrandingBlogContentTypes. I decided to put this into a separate Feature because I like to keep data definitions separate from functionality; just like with apps and SQL. Basic steps to create are:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Right clicked Features and added a new Feature called BrandingBlogContentTypes. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Changed the scope of BrandingBlogContentTypes to Site. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Right clicked the project and added content type. As part of the configuration you will be asked what your content type will inherit from. In this blog, my custom Technology Article content type inherits from Article Page, so I selected that. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Then I went to the elements.xml and added columns and content type definitions. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Below is the code that created for my Technology Article content type and column definitions. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;First I added both the Confidentiality and Technology columns which will use managed metadata. Note that the type is TaxonomyFieldType and TaxonomyFieldTypeMulti. Reminder to generate new GUIDs. Otherwise this is the same as we did in SharePoint 2007. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;A content type will be generated for you and you will need to add your columns to it. As you can see it took the GUID off SharePoint and then appended 00 plus new GUID. That simple little feature makes my day J &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Next I added the Confidentiality and Technology columns. Same as in the SharePoint 2007 days. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Next you see I added some strange columns called TaxCatchAll, TaxCatchAllLabel, TaxKeywordTaxHTField. If you do not add these four hidden columns, your managed metadata columns will not work in a list or library. I figured this out by exporting the library definition in my development environment plus confirmed it on some readings out on web. These all get added behind the scenes for you when you create content types through the SharePoint Site Collection Admin. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Next I added TaxKeyword to bring in the existing Enterprise Keywords column. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Finally I added AverageRating and RatingCount so the ratings would be part of my content type definition. You have to add these two columns even though it is presented to the user as single field. Both are used in the calculation of the presentation.&lt;/p&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Elements&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.microsoft.com/sharepoint/&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{C578CFD4-4A0A-4E38-B057-0A602704B317}&amp;quot;&lt;/span&gt;&lt;br /&gt;         &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Confidentiality&amp;quot;&lt;/span&gt;&lt;br /&gt;         &lt;span class="attr"&gt;StaticName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Confidentiality&amp;quot;&lt;/span&gt;&lt;br /&gt;         &lt;span class="attr"&gt;DisplayName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Confidentiality&amp;quot;&lt;/span&gt;&lt;br /&gt;         &lt;span class="attr"&gt;Group&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;BrandingBlog&amp;quot;&lt;/span&gt;&lt;br /&gt;         &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TaxonomyFieldType&amp;quot;&lt;/span&gt;&lt;br /&gt;         &lt;span class="attr"&gt;ShowField&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Term1033&amp;quot;&lt;/span&gt;&lt;br /&gt;         &lt;span class="attr"&gt;EnforceUniqueValues&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;FALSE&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{F3F1CD61-ACE3-40D1-8F4D-F6618FC09E23}&amp;quot;&lt;/span&gt;&lt;br /&gt;         &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Technology&amp;quot;&lt;/span&gt;&lt;br /&gt;         &lt;span class="attr"&gt;StaticName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Technology&amp;quot;&lt;/span&gt;&lt;br /&gt;         &lt;span class="attr"&gt;DisplayName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Technology&amp;quot;&lt;/span&gt;&lt;br /&gt;         &lt;span class="attr"&gt;Group&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;BrandingBlog&amp;quot;&lt;/span&gt;&lt;br /&gt;         &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TaxonomyFieldTypeMulti&amp;quot;&lt;/span&gt;&lt;br /&gt;         &lt;span class="attr"&gt;ShowField&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Term1033&amp;quot;&lt;/span&gt;&lt;br /&gt;         &lt;span class="attr"&gt;EnforceUniqueValues&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;FALSE&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;span class="rem"&gt;&amp;lt;!-- Parent ContentType: Article Page (0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF3900242457EFB8B24247815D688C526CD44D) --&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ContentType&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF3900242457EFB8B24247815D688C526CD44D00a88b4089676141a2baada81b07a8c125&amp;quot;&lt;/span&gt;&lt;br /&gt;               &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Technology Article&amp;quot;&lt;/span&gt;&lt;br /&gt;               &lt;span class="attr"&gt;Group&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;BrandingBlog&amp;quot;&lt;/span&gt;&lt;br /&gt;               &lt;span class="attr"&gt;Description&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Technology Article for Wiki.&amp;quot;&lt;/span&gt;&lt;br /&gt;               &lt;span class="attr"&gt;Inherits&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TRUE&amp;quot;&lt;/span&gt;&lt;br /&gt;               &lt;span class="attr"&gt;Version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FieldRefs&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FieldRef&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{C578CFD4-4A0A-4E38-B057-0A602704B317}&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Confidentiality&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FieldRef&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{F3F1CD61-ACE3-40D1-8F4D-F6618FC09E23}&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Technology&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FieldRef&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{f3b0adf9-c1a2-4b02-920d-943fba4b3611}&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TaxCatchAll&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Hidden&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TRUE&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FieldRef&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{8f6b6dd8-9357-4019-8172-966fcd502ed2}&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TaxCatchAllLabel&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Hidden&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TRUE&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FieldRef&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{1390a86a-23da-45f0-8efe-ef36edadfb39}&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TaxKeywordTaxHTField&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Hidden&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TRUE&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FieldRef&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{23f27201-bee3-471e-b2e7-b64fd8b7ca38}&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TaxKeyword&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FieldRef&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{5a14d1ab-1513-48c7-97b3-657a5ba6c742}&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;AverageRating&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FieldRef&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{b1996002-9167-45e5-a4df-b2c41c6723c7}&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;RatingCount&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;FieldRefs&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ContentType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Elements&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;With that, I am done with create the content types.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Page Layout Definitions&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Next I needed to bring over the Page Layout I had created for the Technology Article.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;I went to my development environment and exported the Technology Article. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;I added TechnologyArticle.aspx to the _catalogs &amp;gt;&amp;gt; masterpage folder. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Then in the page layout I removed both of the content query web part configurations based on one of the limitations captured earlier. I will reconfigure it later. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;I modified the Confidentiality and Technology GUIDs Taxonomy:TaxonomyFieldControl to match the GUIDs I had defined in my content type Feature. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Next I modified the elements.xml. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I made the following changes to the existing elements.xml which already had the master pages. This is because master pages and page layouts reside in the same directory.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;I moved the TechnologyArticle.aspx File tag to be with the master pages. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;I made it GhostableInLibrary. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;I added a property to make sure it is a Page Layout content type entry. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I added a property that maps the Page Layout to the content type that I had just created. Notice the GUID matches.&lt;/p&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Elements&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.microsoft.com/sharepoint/&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Module&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;_catalogs&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;_catalogs/masterpage&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Path&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;_catalogs/masterpage&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;BrandingBlog.master&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;BrandingBlog_searchcenter.master&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TechnologyArticle.aspx&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Property&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ContentType&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;$Resources:cmscore,contenttype_pagelayout_name;&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Property&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;PublishingAssociatedContentType&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;;#Technology Article;#0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF3900242457EFB8B24247815D688C526CD44D00a88b4089676141a2baada81b07a8c125;#&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Module&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Elements&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Content Query Web Part Definition&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Next I needed to bring in my custom content query web part definition.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;I created a new folder called “wp” under _catalogs. Then I went to the web part library of my development environment, downloaded the Content_Query_Branding_Blog.webpart file and added to the wp folder of my project. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Next I modified the Module entry in the elements.xml file to be following. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Note do not forget to add the Property for group. Otherwise the web part will not appear. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Elements&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.microsoft.com/sharepoint/&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Module&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;_catalogs&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;_catalogs/masterpage&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Path&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;_catalogs/masterpage&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;BrandingBlog.master&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;BrandingBlog_searchcenter.master&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TechnologyArticle.aspx&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Property&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ContentType&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;$Resources:cmscore,contenttype_pagelayout_name;&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Property&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;PublishingAssociatedContentType&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;;#Technology Article;#0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF3900242457EFB8B24247815D688C526CD44D00a88b4089676141a2baada81b07a8c125;#&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Module&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Module&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;_catalogs&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;_catalogs/wp&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Path&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;_catalogs/wp&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Content_Query_Branding_Blog.webpart&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Property&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Group&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Branding Blog&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Module&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Elements&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Content Query Web Part Styles Definition&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The last thing I need to move over is the ItemStyle_BrandingBlog.xsl I created for the content query web part.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;First I added a folder called “XSL Style Sheets” under Style Library. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;I then exported ItemStyle_BrandingBlog.xsl from my development environment and added to XSL Style Sheets folder. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Then I modified the existing elements.xml file. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;I just added a new Module entry for the XSL Style Sheets folder. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Added ItemStyle_BrandingBlog.xsl file. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Elements&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.microsoft.com/sharepoint/&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Module&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Style Library&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Style Library/BrandingBlog&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Path&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Style Library/BrandingBlog&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;style.css&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/splitter.gif&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/sidebar_bckg.gif&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/picture.jpg&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/li.gif&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/bckg.jpg&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/content.gif&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/footer_bckg.gif&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/head_bckg.jpg&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/menu_bckg.gif&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Module&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Module&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Style Library&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Style Library/XSL Style Sheets&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Path&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Style Library/XSL Style Sheets&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ItemStyle_BrandingBlog.xsl&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Module&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Elements&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Manual Deployments Steps&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Now you can see how easy it is to create a package with all these files and then deployed. Given some of the lessons I learned, I will have to perform a few simple manual steps to get everything running after activation. I know perfectly well that I could add some custom code to the Feature activation, change to custom web parts with LINQ and even use different column types. However I wanted to push through the solution as is because I wanted to keep this as a Sandbox solution.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Earlier I showed how to deploy the master page. Now we have added several other things to this deployment package. Here are a couple extra steps that you will need to do. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Again build and package the solution in Visual Studio. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;The upload the WSP into the Sandbox solutions. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Go to the Style Library &amp;gt;&amp;gt; XSL Style Sheets and check in ItemStyle_BrandingBlog.xsl. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Go to Site Settings &amp;gt;&amp;gt; Site Columns and then modify the both the Confidentiality and Technology columns to the appropriate Term Set. As well for Technology you will have to check the Allow Multiple Values checkbox. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Open up SharePoint Designer &amp;gt;&amp;gt; Page Layouts &amp;gt;&amp;gt; TechnologyArticle.aspx and remove the existing content query web parts. Then add back the two content query web parts using the same steps defined earlier in this blog. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Go the pages library and add the Technology Article content type so users can create those types of pages. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;In the grand scheme of things, I really did not find that these few manual steps that big of deal given the advantages of using the Sandbox and giving me the possibility of deploying to the Office365 cloud.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Conclusions&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This has been a fun experience but glad I am done typing this up. I really hope this is helpful to get you started on doing branding and web content management in SharePoint 2010.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;References&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The following are all the references I used to help me along the way.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://www.wrox.com/WileyCDA/WroxTitle/Professional-SharePoint-2010-Branding-and-User-Interface-Design.productCd-0470584645.html"&gt;http://www.wrox.com/WileyCDA/WroxTitle/Professional-SharePoint-2010-Branding-and-User-Interface-Design.productCd-0470584645.html&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://startermasterpages.codeplex.com/"&gt;http://startermasterpages.codeplex.com/&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://blog.drisgill.com/2010/09/converting-custom-sharepoint-2010.html"&gt;http://blog.drisgill.com/2010/09/converting-custom-sharepoint-2010.html&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://geeksthenewblack.wordpress.com/2010/10/29/show-rating-stars-in-the-content-query-web-part/"&gt;http://geeksthenewblack.wordpress.com/2010/10/29/show-rating-stars-in-the-content-query-web-part/&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://social.technet.microsoft.com/Forums/en-US/sharepoint2010programming/thread/32a20575-d362-426f-b7e3-d286902b9c84"&gt;http://social.technet.microsoft.com/Forums/en-US/sharepoint2010programming/thread/32a20575-d362-426f-b7e3-d286902b9c84&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/gg615454.aspx"&gt;http://msdn.microsoft.com/en-us/library/gg615454.aspx&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee537860.aspx"&gt;http://msdn.microsoft.com/en-us/library/ee537860.aspx&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/gg615456.aspx"&gt;http://msdn.microsoft.com/en-us/library/gg615456.aspx&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://www.wictorwilen.se/Post/How-to-provision-SharePoint-2010-Managed-Metadata-columns.aspx"&gt;http://www.wictorwilen.se/Post/How-to-provision-SharePoint-2010-Managed-Metadata-columns.aspx&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://www.sharepointconfig.com/2011/03/the-complete-guide-to-provisioning-sharepoint-2010-managed-metadata-fields/"&gt;http://www.sharepointconfig.com/2011/03/the-complete-guide-to-provisioning-sharepoint-2010-managed-metadata-fields/&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en/sharepoint2010general/thread/bdb16db9-979c-4bd8-b31f-cdb2f45c8484"&gt;http://social.msdn.microsoft.com/Forums/en/sharepoint2010general/thread/bdb16db9-979c-4bd8-b31f-cdb2f45c8484&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://social.technet.microsoft.com/Forums/en-US/sharepoint2010programming/thread/cd781725-d8d8-4e16-80d9-792477681d54"&gt;http://social.technet.microsoft.com/Forums/en-US/sharepoint2010programming/thread/cd781725-d8d8-4e16-80d9-792477681d54&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://www.wictorwilen.se/Post/How-to-provision-SharePoint-2010-Rating-columns-in-Content-Types.aspx"&gt;http://www.wictorwilen.se/Post/How-to-provision-SharePoint-2010-Rating-columns-in-Content-Types.aspx&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/sharepoint2010general/thread/a704a915-fd09-4934-aab8-8b5bfda4b0fb"&gt;http://social.msdn.microsoft.com/Forums/en-US/sharepoint2010general/thread/a704a915-fd09-4934-aab8-8b5bfda4b0fb&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-5495505565823984461?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/5495505565823984461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=5495505565823984461' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/5495505565823984461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/5495505565823984461'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/05/deploy-branding-solution.html' title='Deploy Branding Solution'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_vc1OGKotMCU/Tdg-jRZflgI/AAAAAAAAAqY/EbksyTZAXzY/s72-c/clip_image002_thumb%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-8215196169746483188</id><published>2011-05-21T15:26:00.001-07:00</published><updated>2011-05-21T16:40:45.608-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Branding'/><category scheme='http://www.blogger.com/atom/ns#' term='WCM'/><title type='text'>Customizing Content Query Web Parts</title><content type='html'>&lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/introduction-to-sharepoint-2010.html"&gt;Part 1: Introduction to SharePoint 2010 Branding and WCM&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/branding-master-page.html"&gt;Part 2: Branding a Master Page.html&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/refining-branding-on-master-page.html"&gt;Part 3: Refining the Branding of a Master Page&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/adding-anonymous-support-to-master-page.html"&gt;Part 4: Adding Anonymous Support to Master Page&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/branding-sharepoint-2010-search.html"&gt;Part 5: Branding SharePoint 2010 Search&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/creating-page-layout.html"&gt;Part 6: Creating a Page Layout&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/customizing-content-query-web-parts.html"&gt;Part 7: Customizing Content Query Web Parts&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/deploy-branding-solution.html"&gt;Part 8: Deploy Branding Solution&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;Content Query Web Parts&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;I have to say the game has changed with content query web parts. When trying to work with them in SharePoint 2007 you ended up having to do a ton of work just so a custom field from a content type. Now it really very simple to go in and start working with content query web parts all inside of SharePoint Designer. In this example I am going to:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create a content query web part that is going to show me the most popular articles that are related to an article that I created. &lt;/li&gt;    &lt;li&gt;I will do some “conditional formatting” to display a confidentiality warning to the user based on the metadata associated to the article. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;Approach&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;As I alluded creating your own xsl for content query web parts is much easier with SharePoint Designer 2010. To access and modify the style sheets select All Files in the Navigation. Then drill down to Style Library &amp;gt;&amp;gt; XSL Style Sheets. There are three style sheets that come out of the box ContentQuery.xsl, Header.xsl and ItemStyle.xsl. The one you will need to work with the most of the time is ItemStyle.xsl.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg71W4xUaI/AAAAAAAAAok/Qtx38VQEmGg/s1600-h/clip_image002%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh4.ggpht.com/_vc1OGKotMCU/Tdg71m3daBI/AAAAAAAAAoo/5nLPfxNks5M/clip_image002_thumb%5B1%5D.jpg?imgmax=800" width="722" height="360" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Next question you may have is how to create new xsl entries for the content query web part? Well I have found the simplest approach is pretty simple.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;I open up ItemStyle.xsl. &lt;/li&gt;    &lt;li&gt;I copy ones of the existing xsl templates. Specifically, I copy a full &amp;lt;xsl:template&amp;gt; and add it to the very bottom. &lt;/li&gt;    &lt;li&gt;Then you need to modify the template tag and replace XXX values &amp;lt;xsl:template name=&amp;quot;XXX&amp;quot; match=&amp;quot;Row[@Style='XXX']&amp;quot; mode=&amp;quot;itemstyle&amp;quot;&amp;gt;. It is important that both values are identical. As well, they need to be unique to the xsl file. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;That’s it. I am not going to give a full lesson here on all the cool things you can do once you are in there. I leave that up to you as a creative solution developer.&lt;/p&gt;  &lt;p&gt;When doing this write up I refined my thoughts a little bit on how to do content query web parts. Specifically I think it is not best to the ItemStyle.xsl directly. Why? Well when you make a change to the ItemStyle.xsl (as I outlined above) you will get a warning saying “Saving your changes will customize this page so that is no longer based on the site definition. Do you want to continue?”&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg71wcD8RI/AAAAAAAAAos/oaZnXFJxfbM/s1600-h/clip_image003%5B4%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://lh6.ggpht.com/_vc1OGKotMCU/Tdg72PARxFI/AAAAAAAAAow/UtMOzoKDkxs/clip_image003_thumb%5B1%5D.png?imgmax=800" width="382" height="125" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So you make this change you are customizing (unghosting) the ItemStyle.xsl which may not always be the best thing if you are planning for an Upgrade. YES YOU SHOULD BE THINKING ABOUT THE NEXT VERSION OF SHAREPOINT! Look at the forest; not the tree in front of you. Customized pages had to be dealt with when upgrading from SharePoint 2003 to 2007 as well as SharePoint 2007 to 2010. My response officially is it always “depends” but I try to avoid customizing (unghosting) as much as I can.&lt;/p&gt;  &lt;p&gt;Knowing this I believe a best practice will be to create your own content query web parts that point to a custom ItemStyle.xsl file. Then your customizations will be managed separately and will not interfere with upgrades to OOB features. The solution is so easy as well; it is a no brainer. Let me walk through it.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;First I took the existing ItemStyle.xsl in SharePoint Designer and copy pasted it within the same directory. I named it ItemStyle_BrandingBlog.xsl. &lt;/li&gt;    &lt;li&gt;Next I went into it and stripped out all of the existing &amp;lt;xsl:template&amp;gt; tags and all the content within them. If those need to be used, I will use the OOB content query web part. Then saved it. &lt;/li&gt;    &lt;li&gt;Next I just added an out of the box content query web part onto a web part page. &lt;/li&gt;    &lt;li&gt;I made zero changes to the content query web part and exported the web part configuration. I saved the file locally. I named it Content_Query_Branding_Blog.webpart. &lt;/li&gt;    &lt;li&gt;Next I opened the Content_Query_Branding_Blog.webpart (which is nothing more than a XML configuration file for the content query web part). &lt;/li&gt;    &lt;li&gt;I modified the ItemXslLink to point to my new ItemStyle_BrandingBlog.xsl. &amp;lt;property name=&amp;quot;ItemXslLink&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;/Style Library/XSL Style Sheets/ItemStyle_BrandingBlog.xsl&amp;lt;/property&amp;gt; &lt;/li&gt;    &lt;li&gt;I modified the Title to &amp;lt;property name=&amp;quot;Title&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;Branding Blog Content Query&amp;lt;/property&amp;gt; &lt;/li&gt;    &lt;li&gt;Next I went to Site Settings &amp;gt;&amp;gt; Web Parts Gallery &amp;gt;&amp;gt; and then upload the Content_Query_Branding_Blog.webpart. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Done.&lt;/p&gt;  &lt;p&gt;Now you have created your own XSL style sheet and you have created a content query web part configuration that uses that style sheet. We will later automate this as part of a WSP deployment.&lt;/p&gt;  &lt;p&gt;Now let’s jump into the configuration of the two web parts that I need to create for my technology article publishing page.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Related Articles Content Query Web Part&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;As you may recall I need to support the ability show related technology articles. So I want to query for all articles that are related to the one being viewed.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Step 1 – Create the XSL for Content Query Web Part&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The first thing I need to do is create a view of data that will show the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The title of the article &lt;/li&gt;    &lt;li&gt;The rating of the article &lt;/li&gt;    &lt;li&gt;The last modified date &lt;/li&gt;    &lt;li&gt;The first 300 characters from the article &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;To accomplish I wrote the following xsl in the ItemStyle_BrandingBlog.xsl that I created in the previous step. I did all of this in SharePoint Designer 2010.&lt;/p&gt; &lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:stylesheet&lt;/span&gt; &lt;br /&gt;  &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;br /&gt;  &lt;span class="attr"&gt;exclude-result-prefixes&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;x d xsl msxsl cmswrt&amp;quot;&lt;/span&gt;&lt;br /&gt;  &lt;span class="attr"&gt;xmlns:x&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt; &lt;br /&gt;  &lt;span class="attr"&gt;xmlns:d&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.microsoft.com/sharepoint/dsp&amp;quot;&lt;/span&gt; &lt;br /&gt;  &lt;span class="attr"&gt;xmlns:cmswrt&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.microsoft.com/WebParts/v3/Publishing/runtime&amp;quot;&lt;/span&gt;&lt;br /&gt;  &lt;span class="attr"&gt;xmlns:ddwrt&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.microsoft.com/WebParts/v2/DataView/runtime&amp;quot;&lt;/span&gt;&lt;br /&gt;  &lt;span class="attr"&gt;xmlns:xsl&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;xmlns:msxsl&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:param&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ItemsHaveStreams&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:value-of&lt;/span&gt; &lt;span class="attr"&gt;select&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;'False'&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:param&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:variable&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;OnClickTargetAttribute&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;select&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;string('javascript:this.target=&amp;amp;quot;_blank&amp;amp;quot;')&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:variable&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ImageWidth&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:variable&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ImageHeight&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:template&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TitleDateAndRatings&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;match&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Row[@Style='TitleDateAndRatings']&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;mode&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;itemstyle&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:variable&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SafeLinkUrl&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:call-template&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;OuterTemplate.GetSafeLink&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:with-param&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;UrlColumnName&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;select&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;'LinkUrl'&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:call-template&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:variable&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:variable&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;DisplayTitle&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:call-template&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;OuterTemplate.GetTitle&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:with-param&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Title&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;select&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@Title&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:with-param&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;UrlColumnName&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;select&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;'LinkUrl'&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:call-template&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:variable&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:call-template&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;OuterTemplate.CallPresenceStatusIconTemplate&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;500px&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;colspan&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;3&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;hr&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;300px&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{$SafeLinkUrl}&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt; &lt;span class="attr"&gt;test&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;$ItemsHaveStreams = 'True'&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:attribute&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;onclick&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:value-of&lt;/span&gt; &lt;span class="attr"&gt;select&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@OnClickForWebRendering&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:attribute&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt; &lt;span class="attr"&gt;test&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;$ItemsHaveStreams != 'True' and @OpenInNewWindow = 'True'&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:attribute&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;onclick&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:value-of&lt;/span&gt; &lt;span class="attr"&gt;disable-output-escaping&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;yes&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;select&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;$OnClickTargetAttribute&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:attribute&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:value-of&lt;/span&gt; &lt;span class="attr"&gt;select&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;$DisplayTitle&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;nowrap&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;nowrap&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;100px&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt; &lt;span class="attr"&gt;test&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@Ratings &amp;amp;gt;= 4.75&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ms-currentRating&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;img&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;/_layouts/Images/Ratings.png&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ms-rating_5&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;alt&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Current average rating is 5 stars.&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt; &lt;span class="attr"&gt;test&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@Ratings &amp;amp;gt;= 4.25 and @Ratings &amp;amp;lt; 4.75&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ms-currentRating&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;img&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;/_layouts/Images/Ratings.png&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ms-rating_4_5&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;alt&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Current average rating is 4.5 stars.&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt; &lt;span class="attr"&gt;test&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@Ratings &amp;amp;gt;= 3.75 and @Ratings &amp;amp;lt; 4.25&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ms-currentRating&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;img&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;/_layouts/Images/Ratings.png&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ms-rating_4&amp;quot;&lt;/span&gt;  &lt;span class="attr"&gt;alt&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Current average rating is 4 stars.&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt; &lt;span class="attr"&gt;test&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@Ratings &amp;amp;gt;= 3.25 and @Ratings &amp;amp;lt; 3.75&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ms-currentRating&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;img&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;/_layouts/Images/Ratings.png&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ms-rating_3_5&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;alt&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Current average rating is 3.5 stars.&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt; &lt;span class="attr"&gt;test&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@Ratings &amp;amp;gt;= 2.75 and @Ratings &amp;amp;lt; 3.25&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ms-currentRating&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;img&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;/_layouts/Images/Ratings.png&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ms-rating_3&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;alt&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Current average rating is 3 stars.&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt; &lt;span class="attr"&gt;test&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@Ratings &amp;amp;gt;= 2.25 and @Ratings &amp;amp;lt; 2.75&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ms-currentRating&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;img&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;/_layouts/Images/Ratings.png&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ms-rating_2_5&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;alt&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Current average rating is 2.5 stars.&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt; &lt;span class="attr"&gt;test&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@Ratings &amp;amp;gt;= 1.75 and @Ratings &amp;amp;lt; 2.25&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ms-currentRating&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;img&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;/_layouts/Images/Ratings.png&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ms-rating_2&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;alt&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Current average rating is 2 stars.&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt; &lt;span class="attr"&gt;test&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@Ratings &amp;amp;gt;= 1.25 and @Ratings &amp;amp;lt; 1.75&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ms-currentRating&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;img&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;/_layouts/Images/Ratings.png&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ms-rating_1_5&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;alt&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Current average rating is 1.5 stars.&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt; &lt;span class="attr"&gt;test&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@Ratings &amp;amp;lt; 1.25&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ms-currentRating&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;img&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;/_layouts/Images/Ratings.png&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ms-rating_1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;alt&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Current average rating is 1 star.&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;nowrap&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;nowrap&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;100px&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:value-of&lt;/span&gt; &lt;span class="attr"&gt;select&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ddwrt:FormatDateTime(string(@Date), 1033, 'M/d/yyy h:mm tt')&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;colspan&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;3&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;500px&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:value-of&lt;/span&gt; &lt;span class="attr"&gt;select&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;substring(@Description, 1, 300)&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;disable-output-escaping&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;yes&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;...&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;         &lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:template&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:stylesheet&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Let me discuss several of things I did to accomplishing this:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;First I created a little HTML table that will control the format of the data. Then I started to add in fields. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;The link title is printed here - &amp;lt;xsl:value-of select=&amp;quot;$DisplayTitle&amp;quot;/&amp;gt; I simply took an example from the out of the box ItemStyle.xsl. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Next I needed to print the star ratings. I would have never figured this out until I found this article by accident - &lt;a href="http://geeksthenewblack.wordpress.com/2010/10/29/show-rating-stars-in-the-content-query-web-part/"&gt;blog&lt;/a&gt;. This smart person showed how to do it and I just had to make a few minor changes for myself. Basically it looks at the rating value tied to the page rating. Then using styles it will print the appropriate star image. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Next I needed to print the last modified date. Here is the code that accomplished that &amp;lt;xsl:value-of select=&amp;quot;ddwrt:FormatDateTime(string(@Date), 1033, 'M/d/yyy h:mm tt')&amp;quot; /&amp;gt;. One thing to note is I had to add this namespace to the main xsl tag xmlns:ddwrt=&lt;a href="http://schemas.microsoft.com/WebParts/v2/DataView/runtime"&gt;http://schemas.microsoft.com/WebParts/v2/DataView/runtime&lt;/a&gt;. If you forget to do this, you will get errors. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Finally print the description I used the following line of code - &amp;lt;xsl:value-of select=&amp;quot;substring(@Description, 1, 300)&amp;quot; disable-output-escaping=&amp;quot;yes&amp;quot; /&amp;gt;. In it I only print the first 300 characters. Plus I using the disable-output-escaping attributed to remove the embedded HTML in the article. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Step 2 – Test It&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I saved my work and the next thing I did was test it to make sure the formatting looked good. To accomplish this I just went to a web part page. Here is a view of it with some test data in there. You can see I am getting the article title, start rating, a nicely formatted date and the article content. Now I just need to configure this into my Page Layout.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_vc1OGKotMCU/Tdg72Rrff8I/AAAAAAAAAo0/OJ1sLPVK4Yw/s1600-h/clip_image002%5B5%5D%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002[5]" border="0" alt="clip_image002[5]" src="http://lh4.ggpht.com/_vc1OGKotMCU/Tdg72urdaSI/AAAAAAAAAo4/HhdeSQY8Yk8/clip_image002%5B5%5D_thumb%5B1%5D.jpg?imgmax=800" width="647" height="470" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Step 3 – Add and Configure the Content Query Web Part to the Page Layout&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The last step is to configure this web part into the page layout. When I do this, now every page provisioned using this layout will have this web part pre-configured. What I did was:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Go back to my page layout. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Added a new row for Related Articles. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Open up the split view. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Then I will select Insert tab on the ribbon. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Then select the web part I deployed in the previous section. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_vc1OGKotMCU/Tdg73NMB6HI/AAAAAAAAAo8/yzJmVdobjGs/s1600-h/clip_image004%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://lh4.ggpht.com/_vc1OGKotMCU/Tdg73Rt2VsI/AAAAAAAAApA/F29SepTPsQc/clip_image004_thumb%5B1%5D.jpg?imgmax=800" width="690" height="421" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Next I right click on the web part and select Web Part Properties which will open the same web part configuration panel I would use in the SharePoint UI.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg73tk8XlI/AAAAAAAAApE/Zs3s9BKxMUE/s1600-h/clip_image006%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://lh4.ggpht.com/_vc1OGKotMCU/Tdg735-w6RI/AAAAAAAAApI/Jl9Ow2kFchg/clip_image006_thumb%5B1%5D.jpg?imgmax=800" width="687" height="499" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I make the following configurations to the content query web part.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;First I set up the query, pretty basics stuff. I set it to go against the pages library and only retrieve the Technology Article type.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_vc1OGKotMCU/Tdg74PzT6-I/AAAAAAAAApM/EQwJoN8ojbs/s1600-h/clip_image007%5B4%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image007" border="0" alt="clip_image007" src="http://lh5.ggpht.com/_vc1OGKotMCU/Tdg74r4CFOI/AAAAAAAAApQ/bKRbae6hDA4/clip_image007_thumb%5B1%5D.png?imgmax=800" width="337" height="553" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Next I set up the Filters for the query. I only want to get articles that match on both technology and keywords. I also want to make sure to not get the same article.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;For both the Technology and Enterprise Keywords I use [PageFieldValue:XXX] to retrieve metadata values from the article as part of the query. I will also note that if you have values in the URL querystring, you can use [PageQueryString:XXX] to access those values to use in the Filters.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;To ensure I do not have the article itself appear in the query, I exclude it by the Title of the article which is a unique value for me.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg74u6AyEI/AAAAAAAAApU/9Ng-fz88PCE/s1600-h/clip_image008%5B5%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg749oP7sI/AAAAAAAAApY/kqx1ZyncFwc/clip_image008_thumb%5B2%5D.png?imgmax=800" width="321" height="531" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Next I set it up to sort by star ratings.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Then in the Styles section I select TitleAndDateRatings style I created in ItemStyle_BrandingBlog.xsl.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_vc1OGKotMCU/Tdg75Dq0zII/AAAAAAAAApc/pze-ET4PQ8c/s1600-h/clip_image009%5B4%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image009" border="0" alt="clip_image009" src="http://lh4.ggpht.com/_vc1OGKotMCU/Tdg75aDufcI/AAAAAAAAApg/ujptDrxuW2I/clip_image009_thumb%5B1%5D.png?imgmax=800" width="335" height="550" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The last part of the configuration is to set up the fields in the Technology Article to feed into the TitleAndDateRatings style.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_vc1OGKotMCU/Tdg75iP9LiI/AAAAAAAAApk/gGvhFmnCyOY/s1600-h/clip_image010%5B5%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image010" border="0" alt="clip_image010" src="http://lh5.ggpht.com/_vc1OGKotMCU/Tdg755EBACI/AAAAAAAAApo/I3i-K7pUai0/clip_image010_thumb%5B2%5D.png?imgmax=800" width="326" height="539" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I also set the Chrome to None to hide the web part header.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Now that is done I have the below results. I provisioned a Technology Article page, set the Technology and Keywords value. When I saved the article, the content query web part I pre-configured into the page layout will now be visible.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_vc1OGKotMCU/Tdg76ckEW1I/AAAAAAAAAps/E6BOVKB37uc/s1600-h/clip_image012%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image012" border="0" alt="clip_image012" src="http://lh5.ggpht.com/_vc1OGKotMCU/Tdg76oPStaI/AAAAAAAAApw/0g6DJlm6awE/clip_image012_thumb%5B1%5D.jpg?imgmax=800" width="677" height="492" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;One important note it is not possible to change the configuration of the web part in the provisioned web page (like above). So if I went to edit the web page, I would not have the ability to edit the web part. If you want to support changing the web part configuration after page provisioning you will need to add a web part zone into the page layout and then put the web part into that zone. This can all be done in SharePoint Designer.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Just remember if you put a web part zone into the page layout, this will allow users to put in web parts in an ad-hoc fashion. So there is a real trade-off you have to consider. In my case, I actually used a web part zone at first, I trained users, and they still did not listen and started to add their own web parts. I ended up removing all the web part zones from the page layouts. This becomes pretty important in a real controlled publishing scenario.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Another note you should be aware of is if you make a change to the web part configuration in the page layout those configurations will not be pushed into provisioned pages either. This behavior is different that adding new fields or changing the presentation of the page layout which will change provisioned pages. This behavior makes sense and is expected; though all is not lost. If you really need to make a web part configuration change to all the provisioned pages, you can write some code to iterate through the pages and web parts to make changes. That is beyond the scope of my article but the SharePoint API supports it.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Confidentiality Web Part&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The next thing I wanted to accomplish is create some sort of simple solution where I could visually indicate to the user that the data on the article is confidential. The environment I am deploying to does not have Sandbox Solutions enabled so writing a web part was not an option. To accomplish this, I was able to write a content query web part style.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Please note that this solution is not really secure. Page level security can be implemented but still users can accidently copy and paste content and email the information by accident. Web pages cannot be locked down with Information Rights management either. So a user can still copy and paste the information and email. The only real way to ensure this information is not sent out is to create a document library, configure information rights management in that library, load content into that library and then reference a link to the locked down content from the publishing page.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Step 1 – Create the XSL for Content Query Web Part&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I followed the same steps and created a template in ItemStyle_BrandingBlog.xsl. The logic of this one is pretty simple. I basically have an If statement that checks to see what level of confidentiality the article has and then show visual indicator.&lt;/p&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:template&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Confidential&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;match&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Row[@Style='Confidential']&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;mode&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;itemstyle&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt; &lt;span class="attr"&gt;width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;100%&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;50px&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt; &lt;span class="attr"&gt;test&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@Conf = 'Confidential'&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;background-color:red; color:black; text-align:center; font-size:large&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:value-of&lt;/span&gt; &lt;span class="attr"&gt;select&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@Conf&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt; &lt;span class="attr"&gt;test&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@Conf = 'NDA'&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;background-color:yellow; color:black; text-align:center; font-size:large&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:value-of&lt;/span&gt; &lt;span class="attr"&gt;select&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;@Conf&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:if&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:template&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Step 2 – Test It&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Then I test it with the web page I already configured.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Step 3 – Add and Configure the Content Query Web Part to the Page Layout&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Then just like the last time, I opened the page layout in SharePoint designer and inserted the web part into the top of the page. I right clicked the web part and selected web part properties.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I set it query for the Technology Article type.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_vc1OGKotMCU/Tdg77F15ZWI/AAAAAAAAAp0/EOmy7afD9tA/s1600-h/clip_image001%5B4%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg77uM8wGI/AAAAAAAAAp4/ZUw5ipuiyqI/clip_image001_thumb%5B1%5D.png?imgmax=800" width="312" height="512" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;For the parameters I set it to only find articles based on the unique title.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_vc1OGKotMCU/Tdg7-pj3bII/AAAAAAAAAp8/G74TVI-PsAw/s1600-h/clip_image002%5B4%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg7-0c7HsI/AAAAAAAAAqA/plhkO_-TKF4/clip_image002_thumb%5B1%5D.png?imgmax=800" width="308" height="505" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;For the presentation I set it to use the new Confidential style.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_vc1OGKotMCU/Tdg7_O63PZI/AAAAAAAAAqE/G1G45zhnwFY/s1600-h/clip_image003%5B5%5D%5B3%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image003[5]" border="0" alt="clip_image003[5]" src="http://lh6.ggpht.com/_vc1OGKotMCU/Tdg7_WF4kzI/AAAAAAAAAqI/zz5AB4aKmqo/clip_image003%5B5%5D_thumb%5B1%5D.png?imgmax=800" width="324" height="532" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I then provisioned a page, set the confidentiality and I had the following result. As you can see a big red banner is displayed to the user indicating that the content on this page should be created as confidential.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_vc1OGKotMCU/Tdg7_vZWFPI/AAAAAAAAAqM/DOLnyM86JyA/s1600-h/clip_image005%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image005" border="0" alt="clip_image005" src="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg7_503JhI/AAAAAAAAAqQ/PARklknFuco/clip_image005_thumb%5B1%5D.jpg?imgmax=800" width="689" height="501" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Conclusions&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This pretty much concludes my exploration into creating custom content query web parts with SharePoint Designer 2010. I do recognize that if the queries for data become more complex, I recommend creating custom web parts and use LINQ to SharePoint to get out the data and present it. However I really like this solution because I was able to accomplish this without having to write a ton of complex code. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Next&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;We are going to explore how to redeploy this entire solution using Visual Studio.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-8215196169746483188?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/8215196169746483188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=8215196169746483188' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/8215196169746483188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/8215196169746483188'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/05/customizing-content-query-web-parts.html' title='Customizing Content Query Web Parts'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_vc1OGKotMCU/Tdg71m3daBI/AAAAAAAAAoo/5nLPfxNks5M/s72-c/clip_image002_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-862282494392778917</id><published>2011-05-21T15:19:00.001-07:00</published><updated>2011-05-21T16:37:49.551-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Branding'/><category scheme='http://www.blogger.com/atom/ns#' term='WCM'/><title type='text'>Creating a Page Layout</title><content type='html'>&lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/introduction-to-sharepoint-2010.html"&gt;Part 1: Introduction to SharePoint 2010 Branding and WCM&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/branding-master-page.html"&gt;Part 2: Branding a Master Page.html&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/refining-branding-on-master-page.html"&gt;Part 3: Refining the Branding of a Master Page&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/adding-anonymous-support-to-master-page.html"&gt;Part 4: Adding Anonymous Support to Master Page&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/branding-sharepoint-2010-search.html"&gt;Part 5: Branding SharePoint 2010 Search&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/creating-page-layout.html"&gt;Part 6: Creating a Page Layout&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/customizing-content-query-web-parts.html"&gt;Part 7: Customizing Content Query Web Parts&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/deploy-branding-solution.html"&gt;Part 8: Deploy Branding Solution&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;Page Layouts&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The next thing you will need to do as part of any major web content management project is create Page Layouts. Again, I am not going to provide a robust definition on what a Page Layout is because it is pretty well defined in books and on MSDN. What I am going to do in this example is create a simple content type and then create a page layout for the content type.&lt;/p&gt;  &lt;p&gt;In this example I am going to create a Technology Article Page which will inherit from the out of the box Article Page. I will am going to add a couple custom fields to this content type like Confidentiality and Technology. I will later use these to do some fun stuff with content query web parts.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;1 – Create a Content Type&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Like I said the first thing I am going to do is create a content type based on the Article Page content type and add some of my own fields. For both Confidentiality and Technology, I am going to use the managed metadata service and term storm.&lt;/p&gt;  &lt;p&gt;So first I created some terms:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_vc1OGKotMCU/Tdg6P0C1saI/AAAAAAAAAns/i9N5DyIkuic/s1600-h/clip_image001%5B4%5D%5B3%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image001[4]" border="0" alt="clip_image001[4]" src="http://lh5.ggpht.com/_vc1OGKotMCU/Tdg6QQ4j1xI/AAAAAAAAAnw/h4YPuckKYQs/clip_image001%5B4%5D_thumb%5B1%5D.png?imgmax=800" width="474" height="439" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Then I created my new Technology Article content type which inherits from Article Page. Below is a screenshot of the new content type.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg6QkI8SHI/AAAAAAAAAn0/AYxnPiHIIag/s1600-h/clip_image003%5B4%5D%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image003[4]" border="0" alt="clip_image003[4]" src="http://lh6.ggpht.com/_vc1OGKotMCU/Tdg6REu5JYI/AAAAAAAAAn4/fk0jFrEdtik/clip_image003%5B4%5D_thumb%5B1%5D.jpg?imgmax=800" width="659" height="479" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Then you I created Confidentiality and Technology columns using the managed metadata. I also added the Enterprise Keywords column which allows for folksonomy tagging to be applied to my article. As well I have added Rating (0-5). Here is a screenshot of all the columns.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_vc1OGKotMCU/Tdg6Rf8I6VI/AAAAAAAAAn8/DsoKo9jejZU/s1600-h/clip_image005%5B4%5D%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image005[4]" border="0" alt="clip_image005[4]" src="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg6R0-H94I/AAAAAAAAAoA/D030Auiwa9U/clip_image005%5B4%5D_thumb%5B2%5D.jpg?imgmax=800" width="648" height="475" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2 – Create Page Layout&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;To create a new Page Layout:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Open SharePoint Designer 2010 and go to Page Layouts. &lt;/li&gt;    &lt;li&gt;In the ribbon select new Page Layout. &lt;/li&gt;    &lt;li&gt;Select the Technology Article content type. I will subsequently be taken to a page where I will be editing the page in advanced mode. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Now all I need to do is start adding in controls and HTML to build up the page layout. As you can see below, I have turned on the split view and the branding from the master page is being applied. Towards the bottom of the split view you notice the PlaceHolderMain outlined in light purple. That is where all the modifications will be made. You may not recall but this corresponds back to the Master Page. So when a page is rendered in SharePoint, both the Master Page and Page Layout are merged together to create the web page that is ultimately rendered.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_vc1OGKotMCU/Tdg6ZUBOuwI/AAAAAAAAAoE/9nNq67Tt4Ik/s1600-h/clip_image007%5B4%5D%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image007[4]" border="0" alt="clip_image007[4]" src="http://lh5.ggpht.com/_vc1OGKotMCU/Tdg6Z_3BytI/AAAAAAAAAoI/ZRzDDIFeQOw/clip_image007%5B4%5D_thumb%5B1%5D.jpg?imgmax=800" width="639" height="464" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Within this screen I was able to compose a web page using the fields I have available to me from my content type. Here is the resulting screen that I created. Looks pretty basic but I have pulled in some core data fields, I am displaying managed metadata, and I am displaying the rating for the article.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_vc1OGKotMCU/Tdg6aJW7i9I/AAAAAAAAAoM/3MaN8HLWGKM/s1600-h/clip_image009%5B4%5D%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image009[4]" border="0" alt="clip_image009[4]" src="http://lh6.ggpht.com/_vc1OGKotMCU/Tdg6aYs0HZI/AAAAAAAAAoQ/jDdorItqx9w/clip_image009%5B4%5D_thumb%5B1%5D.jpg?imgmax=800" width="640" height="465" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here is a view of that same article in edit mode.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_vc1OGKotMCU/Tdg6ax34PII/AAAAAAAAAoU/W01hZkCG024/s1600-h/clip_image011%5B4%5D%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image011[4]" border="0" alt="clip_image011[4]" src="http://lh4.ggpht.com/_vc1OGKotMCU/Tdg6bS5mi8I/AAAAAAAAAoY/fCJ_GR_CEbs/clip_image011%5B4%5D_thumb%5B1%5D.jpg?imgmax=800" width="646" height="469" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now to achieve this I did have to do several things in SharePoint Designer 2010.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_vc1OGKotMCU/Tdg6bgl9Z7I/AAAAAAAAAoc/o8BE6QGQDgQ/s1600-h/clip_image013%5B4%5D%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image013[4]" border="0" alt="clip_image013[4]" src="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg6b5erWtI/AAAAAAAAAog/K4CMkkgMLIc/clip_image013%5B4%5D_thumb%5B1%5D.jpg?imgmax=800" width="646" height="469" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The process for creating the page was simple. First I created a HTML layout with some CSS embedded page layout to control the presentation. I put in a HTML table and then started dragging and dropping fields into the table. Now there are a couple little things you should know.&lt;/p&gt;  &lt;p&gt;Metadata fields will not work when you drop them in. You need to add the following to the top of the page which will then allow the managed metadata fields to render on the page layout.&lt;/p&gt; &lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="asp"&gt;&amp;lt;%@ Register Tagprefix=&amp;quot;Taxonomy&amp;quot; Namespace=&amp;quot;Microsoft.SharePoint.Taxonomy&amp;quot; Assembly=&amp;quot;Microsoft.SharePoint.Taxonomy, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; %&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The Rating (0-5) control will not work either unless the following is registered at the very of the page layout.&lt;/p&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="asp"&gt;&amp;lt;%@ Register Tagprefix=&amp;quot;SharePointPortalControls&amp;quot; Namespace=&amp;quot;Microsoft.SharePoint.Portal.WebControls&amp;quot; Assembly=&amp;quot;Microsoft.SharePoint.Portal, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; %&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;To display the created and modified date you will need to again add the following registration to the top of the page layout.&lt;/p&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="asp"&gt;&amp;lt;%@ Register Tagprefix=&amp;quot;SharePoint&amp;quot; Namespace=&amp;quot;Microsoft.SharePoint.WebControls&amp;quot; Assembly=&amp;quot;Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; %&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Lastly you may have noticed that the big wave logo is missing from this page layout. This is because I made a decision that the wave branding was taking up too much real-estate for an article. A little trick I did was adding some CSS to the page layout to hide it. I like this approach because I really want this logo to be part of the master page but just for this particular page layout I do not want to display it.&lt;/p&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Content&lt;/span&gt; &lt;span class="attr"&gt;ContentPlaceholderID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;PlaceHolderAdditionalPageHead&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;style&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        #logo { display: none; }&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:Content&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Page Layout Code&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The following is the resulting code I created for the page layout.&lt;/p&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="asp"&gt;&amp;lt;%@ Page language=&amp;quot;C#&amp;quot;   Inherits=&amp;quot;Microsoft.SharePoint.Publishing.PublishingLayoutPage,Microsoft.SharePoint.Publishing,Version=14.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c&amp;quot; meta:progid=&amp;quot;SharePoint.WebPartPage.Document&amp;quot; meta:webpartpageexpansion=&amp;quot;full&amp;quot; %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="asp"&gt;&amp;lt;%@ Register Tagprefix=&amp;quot;SharePointWebControls&amp;quot; Namespace=&amp;quot;Microsoft.SharePoint.WebControls&amp;quot; Assembly=&amp;quot;Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; %&amp;gt;&lt;/span&gt; &lt;span class="asp"&gt;&amp;lt;%@ Register Tagprefix=&amp;quot;WebPartPages&amp;quot; Namespace=&amp;quot;Microsoft.SharePoint.WebPartPages&amp;quot; Assembly=&amp;quot;Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; %&amp;gt;&lt;/span&gt; &lt;span class="asp"&gt;&amp;lt;%@ Register Tagprefix=&amp;quot;PublishingWebControls&amp;quot; Namespace=&amp;quot;Microsoft.SharePoint.Publishing.WebControls&amp;quot; Assembly=&amp;quot;Microsoft.SharePoint.Publishing, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; %&amp;gt;&lt;/span&gt; &lt;span class="asp"&gt;&amp;lt;%@ Register Tagprefix=&amp;quot;PublishingNavigation&amp;quot; Namespace=&amp;quot;Microsoft.SharePoint.Publishing.Navigation&amp;quot; Assembly=&amp;quot;Microsoft.SharePoint.Publishing, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="asp"&gt;&amp;lt;%@ Register Tagprefix=&amp;quot;Taxonomy&amp;quot; Namespace=&amp;quot;Microsoft.SharePoint.Taxonomy&amp;quot; Assembly=&amp;quot;Microsoft.SharePoint.Taxonomy, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="asp"&gt;&amp;lt;%@ Register Tagprefix=&amp;quot;SharePointPortalControls&amp;quot; Namespace=&amp;quot;Microsoft.SharePoint.Portal.WebControls&amp;quot; Assembly=&amp;quot;Microsoft.SharePoint.Portal, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="asp"&gt;&amp;lt;%@ Register Tagprefix=&amp;quot;SharePoint&amp;quot; Namespace=&amp;quot;Microsoft.SharePoint.WebControls&amp;quot; Assembly=&amp;quot;Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Content&lt;/span&gt; &lt;span class="attr"&gt;ContentPlaceholderID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;PlaceHolderAdditionalPageHead&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;style&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        #logo {&lt;br /&gt;            display: none;&lt;br /&gt;        }&lt;br /&gt;        .TechArticleTitle {&lt;br /&gt;            font-weight:bold;&lt;br /&gt;            vertical-align:top;&lt;br /&gt;            width: 10%;&lt;br /&gt;            padding-right: 10px;&lt;br /&gt;            padding-left: 10px;&lt;br /&gt;        }&lt;br /&gt;        .TechArticleValue {&lt;br /&gt;            vertical-align:top;&lt;br /&gt;        }&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:Content&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Content&lt;/span&gt; &lt;span class="attr"&gt;ContentPlaceholderID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;PlaceHolderPageTitle&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    Technology Article - &lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SharePointWebControls:FieldValue&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;PageTitle&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;FieldName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Title&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:Content&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Content&lt;/span&gt; &lt;span class="attr"&gt;ContentPlaceholderID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;PlaceHolderMain&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TechArticleTitle&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Title:&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TechArticleValue&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SharePointWebControls:TextField&lt;/span&gt; &lt;span class="attr"&gt;FieldName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;fa564e0f-0c70-4ab9-b863-0177e6ddd247&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;SharePointWebControls:TextField&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TechArticleTitle&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Modified:&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TechArticleValue&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;nowrap&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SharePoint:FieldValue&lt;/span&gt; &lt;span class="attr"&gt;FieldName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Modified&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;modified&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;ControlMode&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;display&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TechArticleValue&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;nowrap&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SharePointPortalControls:AverageRatingFieldControl&lt;/span&gt; &lt;span class="attr"&gt;FieldName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;5a14d1ab-1513-48c7-97b3-657a5ba6c742&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;SharePointPortalControls:AverageRatingFieldControl&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TechArticleTitle&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Created:&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TechArticleValue&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;nowrap&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SharePoint:FieldValue&lt;/span&gt; &lt;span class="attr"&gt;FieldName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Created&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;created&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;ControlMode&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;display&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TechArticleTitle&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Confidentiality:&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TechArticleValue&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;colspan&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;3&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Taxonomy:TaxonomyFieldControl&lt;/span&gt; &lt;span class="attr"&gt;FieldName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;a472e313-fd5f-4423-89b3-bdd721461eac&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Taxonomy:TaxonomyFieldControl&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TechArticleTitle&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Technology:&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TechArticleValue&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;colspan&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;3&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Taxonomy:TaxonomyFieldControl&lt;/span&gt; &lt;span class="attr"&gt;FieldName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;9129feba-3b4a-4dd7-82cc-0822730d16c8&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Taxonomy:TaxonomyFieldControl&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TechArticleTitle&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Keywords:&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TechArticleValue&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;colspan&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;3&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Taxonomy:TaxonomyFieldControl&lt;/span&gt; &lt;span class="attr"&gt;FieldName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;23f27201-bee3-471e-b2e7-b64fd8b7ca38&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Taxonomy:TaxonomyFieldControl&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TechArticleTitle&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Article:&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TechArticleValue&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;colspan&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;4&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;PublishingWebControls:RichHtmlField&lt;/span&gt; &lt;span class="attr"&gt;FieldName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;f55c4d88-1f2e-4ad9-aaa8-819af4ee7ee8&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;PublishingWebControls:RichHtmlField&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;    &lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:Content&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Conclusions&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;With that I hope that I have demonstrated how quick and easy it is to create some page layouts with data coming off my content types. I really think this is just such an awesome way and easy way to do web content management.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;In the next part of this series I am going to further extend this page layout with content query web parts.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Next&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;We are going to explore content query web parts and how to integrate them with the page layout we just created.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-862282494392778917?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/862282494392778917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=862282494392778917' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/862282494392778917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/862282494392778917'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/05/creating-page-layout.html' title='Creating a Page Layout'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_vc1OGKotMCU/Tdg6QQ4j1xI/AAAAAAAAAnw/h4YPuckKYQs/s72-c/clip_image001%5B4%5D_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-6075640604063120953</id><published>2011-05-21T15:07:00.001-07:00</published><updated>2011-05-21T16:37:20.663-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Branding'/><title type='text'>Branding SharePoint 2010 Search</title><content type='html'>&lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/introduction-to-sharepoint-2010.html"&gt;Part 1: Introduction to SharePoint 2010 Branding and WCM&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/branding-master-page.html"&gt;Part 2: Branding a Master Page.html&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/refining-branding-on-master-page.html"&gt;Part 3: Refining the Branding of a Master Page&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/adding-anonymous-support-to-master-page.html"&gt;Part 4: Adding Anonymous Support to Master Page&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/branding-sharepoint-2010-search.html"&gt;Part 5: Branding SharePoint 2010 Search&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/creating-page-layout.html"&gt;Part 6: Creating a Page Layout&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/customizing-content-query-web-parts.html"&gt;Part 7: Customizing Content Query Web Parts&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/deploy-branding-solution.html"&gt;Part 8: Deploy Branding Solution&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;Search Template&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Another thing you will quickly run into is when doing your custom branding is the Search Centers will not show your branding. In this case, I have FAST installed on my development machine. So I went ahead and created a FAST Search center and I had the following.&lt;/p&gt;  &lt;p&gt;First thing you may try is go to the Site Actions &amp;gt;&amp;gt; Site Settings &amp;gt;&amp;gt; Site Features and turn on Publishing just like you did for other sub sites. But doing this will not make the FAST site show your custom branding.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_vc1OGKotMCU/Tdg3lauWi2I/AAAAAAAAAnE/criV41O3YO0/s1600-h/clip_image002%5B5%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh5.ggpht.com/_vc1OGKotMCU/Tdg3lpDO1QI/AAAAAAAAAnI/lh1mIUOpTww/clip_image002_thumb%5B2%5D.jpg?imgmax=800" width="618" height="454" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Then when you go look at the Site Settings &amp;gt;&amp;gt; Master Pages you will notice that Site Master Page is set to minimal.master. You can try to try to set it to use your custom master page by selecting “Inherit site master page from the parent site”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_vc1OGKotMCU/Tdg3l0P-xNI/AAAAAAAAAnM/duCYGZb6IJE/s1600-h/clip_image004%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg3mZiB68I/AAAAAAAAAnQ/M-_fzzPGm9M/clip_image004_thumb%5B1%5D.jpg?imgmax=800" width="630" height="458" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;However you will get is a screen that looks like the following. Yes your branding came through but where is the search box?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_vc1OGKotMCU/Tdg3mrLf4uI/AAAAAAAAAnU/4LSXtSDnX4o/s1600-h/clip_image006%5B6%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg3mrTcFZI/AAAAAAAAAnY/x_qrht2bndg/clip_image006_thumb%5B3%5D.jpg?imgmax=800" width="632" height="467" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can do a lot more reading on the topic on why the search text box did not appear. At the end of the day the Search Center templates were coded to work best with the minimal.master template. Recently I took the approach of trying to make a copy of minimal.master and then apply my HTML template to it. It was a lot of work and I could not get it perfect. However this brilliant guy wrote a blog about this - &lt;a href="http://blog.drisgill.com/2010/09/converting-custom-sharepoint-2010.html"&gt;http://blog.drisgill.com/2010/09/converting-custom-sharepoint-2010.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I followed his steps exactly. I made a copy of my master page, applied all the changes specified in the blog and I got the following results in five minutes. With that I now have a perfectly branded FAST search center site.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_vc1OGKotMCU/Tdg3m3Y5eBI/AAAAAAAAAnc/rhqmmuX5I5s/s1600-h/clip_image008%5B5%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://lh4.ggpht.com/_vc1OGKotMCU/Tdg3nO1DF5I/AAAAAAAAAng/vwGSQclyPgQ/clip_image008_thumb%5B2%5D.jpg?imgmax=800" width="632" height="464" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_vc1OGKotMCU/Tdg3nXrgSxI/AAAAAAAAAnk/TclOnUaxGH4/s1600-h/clip_image010%5B5%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image010" border="0" alt="clip_image010" src="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg3nmRM6vI/AAAAAAAAAno/jkz6gleArO8/clip_image010_thumb%5B2%5D.jpg?imgmax=800" width="630" height="462" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Next&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Next we are going to work on creating some custom page layouts to be deployed with this master page.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-6075640604063120953?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/6075640604063120953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=6075640604063120953' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/6075640604063120953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/6075640604063120953'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/05/branding-sharepoint-2010-search.html' title='Branding SharePoint 2010 Search'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_vc1OGKotMCU/Tdg3lpDO1QI/AAAAAAAAAnI/lh1mIUOpTww/s72-c/clip_image002_thumb%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-396251690040659118</id><published>2011-05-21T15:04:00.001-07:00</published><updated>2011-05-21T16:38:57.391-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ribbon'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Branding'/><title type='text'>Adding Anonymous Support to Master Page</title><content type='html'>&lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/introduction-to-sharepoint-2010.html"&gt;Part 1: Introduction to SharePoint 2010 Branding and WCM&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/branding-master-page.html"&gt;Part 2: Branding a Master Page.html&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/refining-branding-on-master-page.html"&gt;Part 3: Refining the Branding of a Master Page&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/adding-anonymous-support-to-master-page.html"&gt;Part 4: Adding Anonymous Support to Master Page&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/branding-sharepoint-2010-search.html"&gt;Part 5: Branding SharePoint 2010 Search&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/creating-page-layout.html"&gt;Part 6: Creating a Page Layout&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/customizing-content-query-web-parts.html"&gt;Part 7: Customizing Content Query Web Parts&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/deploy-branding-solution.html"&gt;Part 8: Deploy Branding Solution&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;Create Anonymous Site&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;One of the next things I wanted to do is play with having an anonymous site because I know there is a little extra work I need to do master page to handle this correctly. To quickly do this on my dev machine:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;I extended my web application to have a new internet zone; making sure to allow anonymous access. &lt;/li&gt;    &lt;li&gt;Then I went to the site via the new url for the zone I just created. I was prompted for a password even though I had anonymous set up. So I needed to do a few other things. &lt;/li&gt;    &lt;li&gt;I then went to Site Actions &amp;gt;&amp;gt; Site Permissions &amp;gt;&amp;gt; in the ribbon I selected the Anonymous Access button &amp;gt;&amp;gt; and selected Entire Site for anonymous access. &lt;/li&gt;    &lt;li&gt;I then closed the browser. Then I went Start &amp;gt;&amp;gt; Run As &amp;gt;&amp;gt; typed in the url for the new zone I created. &lt;/li&gt;    &lt;li&gt;NOTE – make sure you check in your Master Page! Otherwise you will see an unbranded website. I did this by mistake because I was logged in as an Administrator on my development machine but going to the SharePoint site as an anonymous user. Anonymous users cannot see anything that has not been checked in and published. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Below is the result. It still looks the same other than the ribbon at the top has a lot less stuff. At this point the ribbon really does not do much good for an anonymous user and the first request is can this be hidden for anonymous users?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_vc1OGKotMCU/Tdg2-EUziCI/AAAAAAAAAms/g4KmA3AyiU0/s1600-h/clip_image002%5B5%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh4.ggpht.com/_vc1OGKotMCU/Tdg2-XcijbI/AAAAAAAAAmw/at1iQbsEBjg/clip_image002_thumb%5B2%5D.jpg?imgmax=800" width="569" height="417" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There have been several approaches written about this on the internet. The most simple and clean solution is to add some CSS to the master page to handle this. So I will add the asp:LoginView control into the master page. Any code that I added within the &amp;lt;AnonymousTemplate&amp;gt; will only appear when the user is logged in anonymously. So what I did was add the link to the login page within the &amp;lt;AnonymousTemplate&amp;gt; tags. This way a user will see a link to login when they are anonymous and then not see the link anymore after that.&lt;/p&gt;  &lt;p&gt;Below I have added it into the master page with my top navigation. You can put it where ever you want to.&lt;/p&gt; &lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;&amp;lt;!-- header --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;header&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;s4-notdlg&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;menu&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;menu_list&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;          &lt;br /&gt;     &lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:LoginView&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;LoginView&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;AnonymousTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;/_layouts/authenticate.aspx&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;User Login&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sign In&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;style&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        #s4-ribbonrow {display: none;}&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;AnonymousTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;     &lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:LoginView&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;     &lt;br /&gt;            &lt;span class="rem"&gt;&amp;lt;!-- top navigation area --&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;s4-notdlg&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="rem"&gt;&amp;lt;!-- top navigation publishing data source --&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;PublishingNavigation:PortalSiteMapDataSource&lt;/span&gt;&lt;br /&gt;                    &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;topSiteMap&amp;quot;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="attr"&gt;EnableViewState&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="attr"&gt;SiteMapProvider&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;GlobalNavigation&amp;quot;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="attr"&gt;StartFromCurrentNode&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="attr"&gt;StartingNodeOffset&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="attr"&gt;ShowStartingNode&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="attr"&gt;TrimNonCurrentTypes&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Heading&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;br /&gt;                &lt;span class="rem"&gt;&amp;lt;!-- top navigation menu (set to use the new Simple Rendering) --&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SharePoint:AspMenu&lt;/span&gt;&lt;br /&gt;                  &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TopNavigationMenuV4&amp;quot;&lt;/span&gt;&lt;br /&gt;                  &lt;span class="attr"&gt;EncodeTitle&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;br /&gt;                  &lt;span class="attr"&gt;Runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;br /&gt;                  &lt;span class="attr"&gt;EnableViewState&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;br /&gt;                  &lt;span class="attr"&gt;DataSourceID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;topSiteMap&amp;quot;&lt;/span&gt;&lt;br /&gt;                  &lt;span class="attr"&gt;AccessKey&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;&amp;lt;%$Resources:wss,navigation_accesskey%&amp;gt;&amp;quot;&lt;/span&gt;&lt;br /&gt;                  &lt;span class="attr"&gt;UseSimpleRendering&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;br /&gt;                  &lt;span class="attr"&gt;UseSeparateCss&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;br /&gt;                  &lt;span class="attr"&gt;Orientation&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Horizontal&amp;quot;&lt;/span&gt;&lt;br /&gt;                  &lt;span class="attr"&gt;StaticDisplayLevels&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;br /&gt;                  &lt;span class="attr"&gt;MaximumDynamicDisplayLevels&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;br /&gt;                  &lt;span class="attr"&gt;SkipLinkText&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;&amp;quot;&lt;/span&gt;&lt;br /&gt;                  &lt;span class="attr"&gt;CssClass&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;s4-tn&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;SharePoint:AspMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Then when I went back to the site, this is what I now see. I now see a link called Sign In. &lt;br /&gt;  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_vc1OGKotMCU/Tdg2-5SJm7I/AAAAAAAAAm0/jHt429qkutU/s1600-h/clip_image002%5B6%5D%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002[6]" border="0" alt="clip_image002[6]" src="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg2_PMOqII/AAAAAAAAAm4/bO6mXGcucjg/clip_image002%5B6%5D_thumb%5B1%5D.jpg?imgmax=800" width="541" height="393" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Then after I press the Sign In link and log in, the ribbon is displayed again and that Sign In link is hidden from view. Pretty cool.&lt;a href="http://lh6.ggpht.com/_vc1OGKotMCU/Tdg2_mwrMeI/AAAAAAAAAm8/Nzd63z6XoDU/s1600-h/clip_image004%5B4%5D%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004[4]" border="0" alt="clip_image004[4]" src="http://lh5.ggpht.com/_vc1OGKotMCU/Tdg3ANj0jQI/AAAAAAAAAnA/wsZvMNZTG90/clip_image004%5B4%5D_thumb%5B1%5D.jpg?imgmax=800" width="551" height="401" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Next&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;In the next article we are going to look at adding the master page template to search.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-396251690040659118?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/396251690040659118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=396251690040659118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/396251690040659118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/396251690040659118'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/05/adding-anonymous-support-to-master-page.html' title='Adding Anonymous Support to Master Page'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_vc1OGKotMCU/Tdg2-XcijbI/AAAAAAAAAmw/at1iQbsEBjg/s72-c/clip_image002_thumb%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-1141621611480986150</id><published>2011-05-21T14:58:00.001-07:00</published><updated>2011-05-21T16:48:26.785-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ribbon'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Branding'/><title type='text'>Refining the Branding on the Master Page</title><content type='html'>&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/introduction-to-sharepoint-2010.html"&gt;Part 1: Introduction to SharePoint 2010 Branding and WCM&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/branding-master-page.html"&gt;Part 2: Branding a Master Page.html&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/refining-branding-on-master-page.html"&gt;Part 3: Refining the Branding of a Master Page&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/adding-anonymous-support-to-master-page.html"&gt;Part 4: Adding Anonymous Support to Master Page&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/branding-sharepoint-2010-search.html"&gt;Part 5: Branding SharePoint 2010 Search&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/creating-page-layout.html"&gt;Part 6: Creating a Page Layout&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/customizing-content-query-web-parts.html"&gt;Part 7: Customizing Content Query Web Parts&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/deploy-branding-solution.html"&gt;Part 8: Deploy Branding Solution&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;In the previous blog we created the master page. Now we need to refine it with the CSS. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;5 – Refine CSS&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;What I found out as part of my learning process is that is pretty much impossible to get it perfect on the first try because you will need to get the CSS of the HTML Template working with the SharePoint CSS. It is a very iterative process. In this section I will document several of the sort of things I found out that will help you get the CSS working.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So if you followed along in the last section, you will know we have a screen like this. There are several things you will immediately see an issue – like:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Where is the scroll bar?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The right border is gone?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Etc.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg1f28X8ZI/AAAAAAAAAlM/3YEl7f03Dys/s1600-h/clip_image002%5B5%5D.jpg"&gt;&lt;img style="BACKGROUND-IMAGE: none; BORDER-RIGHT-WIDTH: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh6.ggpht.com/_vc1OGKotMCU/Tdg1gK911CI/AAAAAAAAAlQ/TidzeBid8zU/clip_image002_thumb%5B2%5D.jpg?imgmax=800" width="560" height="412" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Before we go off trying to fix things, I found the best way to investigate issues with CSS is to us Internet Explorer. Just go to Tools &amp;gt;&amp;gt; Developer Tools. What I do a lot is:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Press the “Select Element by Click” button. This freezes the screen and then allows me to mouse over areas of the screen. It will highlight CSS with a blue box around it. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;I think click on an area of interest, and the DOM tree goes directly to the place. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;I then even have the ability to tweak the CSS style on the right to see if making a change will give me the intended result. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;For what I need to do, I find this to be the perfect tool.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg1gQGF0fI/AAAAAAAAAlU/0W2hCr1DjkM/s1600-h/clip_image004%5B4%5D.jpg"&gt;&lt;img style="BACKGROUND-IMAGE: none; BORDER-RIGHT-WIDTH: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://lh5.ggpht.com/_vc1OGKotMCU/Tdg1gqo-MgI/AAAAAAAAAlY/Bvoy_Wq3lCo/clip_image004_thumb%5B1%5D.jpg?imgmax=800" width="566" height="411" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;It is going to be hard for me to document each and every little change I made to the CSS and Master Page to show you how I got it to work. As well, I mentioned this is not production ready so I bet there are other potential things that would have to be worked out. What I will cover is some major ones I had to do and will hopefully help you when you need to do this for your web site.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Here is the original CSS I have for my HTML template. We will be making several changes to it. I am providing this for comparison purposes.&lt;/p&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;pre class="csharpcode"&gt;body { margin:40px; font-size:0.9em; line-height:14px; font-family:Tahoma, Arial; font-size:11px; border:1px solid #000; background: url(images/bckg.jpg) repeat-x #0A8FDE; }&lt;br /&gt;a { color:#10639a; text-decoration:none;}&lt;br /&gt;a:hover { text-decoration:underline;}&lt;br /&gt;p { padding: 0 10px 5px 10px; }&lt;br /&gt;h1 { font-family: "Myriad Pro", "Trebuchet MS", Arial; margin:0; padding:10px 0 0 10px; text-transform:uppercase; font-size:18px; color:#10639a; }&lt;br /&gt;&lt;br /&gt;#header { background:url(images/header_bckg.jpg) no-repeat top right #0EA5FE;}&lt;br /&gt;#logo { padding:50px 60px 0 40px; height:130px; background:url(images/head_bckg.jpg) no-repeat #0EA5FE; }&lt;br /&gt;#logo a{ font-family: "Myriad Pro", "Trebuchet MS", Arial; color:#fff; text-decoration:none; font-weight:bold; font-size:20px; text-transform:uppercase; letter-spacing:5px; }&lt;br /&gt;#logo_text { float:right; width:200px; font-size:10px; color:#fff; line-height:12px; padding-top:5px;  }&lt;br /&gt;#menu { background: url(images/menu_bckg.gif) repeat-x #fff; height:40px; padding-top:10px;}&lt;br /&gt;#menu_list {width:600px; margin:0 auto;}&lt;br /&gt;#menu a { display:block; color:#000000; float:left; font-size:14px; text-transform:uppercase; font-weight:bold; text-decoration:none; margin:0 20px; padding-top:12px; font-family: "Myriad Pro", "Trebuchet MS", Arial;}&lt;br /&gt;#menu a:hover{ color:#078DE2;}&lt;br /&gt;.splitter { display:block; float:left;}&lt;br /&gt;.item img { background-color:#FFFFFF; padding:6px; border:1px solid #d0d0d0;}&lt;br /&gt;.item a { display:block; float:left; font-size:12px; color:#bd131d;}&lt;br /&gt;.description { display:block; float:right; width:220px; padding: 10px 20px 30px 0; line-height:12px;}&lt;br /&gt;p.additional { margin:0 10px; color:#9c9c9c; font-size:10px; line-height:12px; border-top:1px solid #bdbdbd; padding: 10px 0; font-weight:normal;}&lt;br /&gt;&lt;br /&gt;#text { margin: 0 292px 0 0; background:url(images/content.gif); padding:10px;}&lt;br /&gt;#text li {list-style:none; padding-left:20px; background:url(images/li.gif) no-repeat 0px 4px;line-height:18px;}&lt;br /&gt;#sidebar { float:right; width:245px; padding: 20px 20px 0 30px; font-size:10px; }&lt;br /&gt;#sidebar a{ font-weight:bold; }&lt;br /&gt;#sidebar h1 { font-family: "Myriad Pro", "Trebuchet MS", Arial; margin:0; padding:0 0 20px 0; text-transform:uppercase; color:#000;}&lt;br /&gt;&lt;br /&gt;#main { float:left; background:url(images/sidebar_bckg.gif) no-repeat top right #fff; }&lt;br /&gt;#footer {font-family: "Myriad Pro", "Trebuchet MS", Arial; background:url(images/footer_bckg.gif) repeat-x #000; height:55px; clear:both;  }&lt;br /&gt;#left_footer { float:left; padding:20px 0 0 30px; color:#fff; font-size:12px;}&lt;br /&gt;#left_footer a { color:#fff;}&lt;br /&gt;#left_footer a:hover { text-decoration:none;}&lt;br /&gt;#right_footer { float:right;  padding:20px 30px 0 0; color:#fff;  font-size:12px; text-align:right;}&lt;br /&gt;#right_footer a { color:#fff;}&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Now I will document my notes on what I had to do to get this template completely working.&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Moved the CSS that was in the master page to my HTML template CSS file to consolidate things. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Removed &amp;lt;div id="main"&amp;gt; from the master page and from the CSS file. It was basically loading in an image that I did not need. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Removed the #text li from the CSS because it was interfering with application pages and is not needed for what I am doing. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;In the HTML template CSS, I removed the margin 40px from the body attribute. Now I have back the scroll bar and now the page is taking up the screen. However I do not have the nice borders on the left and right. Still more work to be done.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_vc1OGKotMCU/Tdg1g-fhUqI/AAAAAAAAAlc/2vF_6U2Out4/s1600-h/clip_image002%5B6%5D%5B4%5D.jpg"&gt;&lt;img style="BACKGROUND-IMAGE: none; BORDER-RIGHT-WIDTH: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px" title="clip_image002[6]" border="0" alt="clip_image002[6]" src="http://lh6.ggpht.com/_vc1OGKotMCU/Tdg1hJ813uI/AAAAAAAAAlg/ysH4Pfkjcu4/clip_image002%5B6%5D_thumb%5B2%5D.jpg?imgmax=800" width="574" height="422" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Next I created a new CSS style that controls the width of the page (masterPageWidth) and then placed the div tag in the master page so it covers all the content place holders. Now we have our nice left and right hand side borders.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_vc1OGKotMCU/Tdg1hps6nkI/AAAAAAAAAlk/nSYnL0Y3h-s/s1600-h/clip_image004%5B5%5D%5B3%5D.jpg"&gt;&lt;img style="BACKGROUND-IMAGE: none; BORDER-RIGHT-WIDTH: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px" title="clip_image004[5]" border="0" alt="clip_image004[5]" src="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg1iPDKviI/AAAAAAAAAlo/CO9Aj64rRHI/clip_image004%5B5%5D_thumb%5B1%5D.jpg?imgmax=800" width="578" height="420" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Next you may be wondering what the heck is that big blue area on the right all about in the screenshot above? Using the IE &amp;gt;&amp;gt; Tools &amp;gt;&amp;gt; Developers tools I quickly found out that the CSS for my HTML template had a #text tag with a margin setting that was causing that. I removed it and this starting to look a lot better – see below.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_vc1OGKotMCU/Tdg1iGhZ-_I/AAAAAAAAAls/C-r-i0iSVPQ/s1600-h/clip_image006%5B4%5D.jpg"&gt;&lt;img style="BACKGROUND-IMAGE: none; BORDER-RIGHT-WIDTH: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://lh4.ggpht.com/_vc1OGKotMCU/Tdg1iUCmvrI/AAAAAAAAAlw/uc7imS_-lrw/clip_image006_thumb%5B1%5D.jpg?imgmax=800" width="586" height="426" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Next I need to make some modifications to show the search box and the tagging controls better. It is much easier now to place them given I have the CSS worked. I simply went back to the master page and added a HTML table to right justify it and make it appear on the same line.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I also added a breadcrumb control which is was part of the SP 2007 by added &amp;lt;asp:SiteMapPath runat="server"/&amp;gt; to the master page. I also added some CSS to make it present well.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_vc1OGKotMCU/Tdg1jW8z9gI/AAAAAAAAAl0/VnLnY_esRUM/s1600-h/clip_image008%5B5%5D.jpg"&gt;&lt;img style="BACKGROUND-IMAGE: none; BORDER-RIGHT-WIDTH: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://lh5.ggpht.com/_vc1OGKotMCU/Tdg1jkqKqtI/AAAAAAAAAl4/XsVE93dDEto/clip_image008_thumb%5B2%5D.jpg?imgmax=800" width="610" height="447" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Next issue I ran into was with the dialog boxes as you can see in the screenshot below. As you can see it is way too large. I had a good idea this had to do with the new CSS style I called (masterPageWidth). Well the SharePoint 2010 Branding Wrox book pointed me in right direction here. I added some CSS to override some of changes I was making. Specifically I added styles for ms-dialog which solved my problem pretty quickly.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_vc1OGKotMCU/Tdg1kjIlubI/AAAAAAAAAl8/fPCQGHVbtQw/s1600-h/clip_image010%5B4%5D.jpg"&gt;&lt;img style="BACKGROUND-IMAGE: none; BORDER-RIGHT-WIDTH: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px" title="clip_image010" border="0" alt="clip_image010" src="http://lh4.ggpht.com/_vc1OGKotMCU/Tdg1lpoBYdI/AAAAAAAAAmA/lCkCIImhtao/clip_image010_thumb%5B1%5D.jpg?imgmax=800" width="611" height="444" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Another interesting thing I ran into when clicking around I found the following issue in the below screenshot. When I went to manage the Approvers user group; look at this. Apparently the entire background is not being pushed down. The reason why is I added some CSS into the master page (way back in the beginning of this blog) that will show the left hand navigation when it is needed. It is needed for user administration. I was able to resolve the problem by again using the handy dandy IE Developer tool. First, I overrode s4-leftpanel and set the background to white. Second, I modified the masterPageWidth attribute that I added to have a white background as well.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_vc1OGKotMCU/Tdg1lsfb2eI/AAAAAAAAAmE/j7e1yAq70sk/s1600-h/clip_image012%5B4%5D.jpg"&gt;&lt;img style="BACKGROUND-IMAGE: none; BORDER-RIGHT-WIDTH: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px" title="clip_image012" border="0" alt="clip_image012" src="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg1mNw-8AI/AAAAAAAAAmI/AAYQyrTLl9c/clip_image012_thumb%5B1%5D.jpg?imgmax=800" width="610" height="443" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Another thing you may have noticed is in the top I have created sub site. However if you were to click into them, none of them would have the branding. All you need to do in the sub site is go to Site Setting &amp;gt;&amp;gt; Manage Site Features &amp;gt;&amp;gt; activate SharePoint Server Publishing and the branding will be pulled through. Now you can see that the sub site branding is coming through nice and clean.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg1mhjYIdI/AAAAAAAAAmM/MUWdn5FQSbU/s1600-h/clip_image014%5B5%5D.jpg"&gt;&lt;img style="BACKGROUND-IMAGE: none; BORDER-RIGHT-WIDTH: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px" title="clip_image014" border="0" alt="clip_image014" src="http://lh4.ggpht.com/_vc1OGKotMCU/Tdg1myxU9iI/AAAAAAAAAmQ/aMiKCzbE5cg/clip_image014_thumb%5B2%5D.jpg?imgmax=800" width="623" height="457" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Then I decided to click around some more in my basic site with almost no content. Most everything was working.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Then I decided to add a blog site template. I turned on publishing and found this issue. I used the IE Developer tool and found ms-blogRightZone was the problem. I overrode in my CSS file to have a white background but again it was not perfect. A longer term solution would be that I am going to have to make the blog text area thinner so the ms-blogRightZone does not float off too far to the right.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg1nMqKb4I/AAAAAAAAAmU/PlKlflAs-pw/s1600-h/clip_image016%5B5%5D.jpg"&gt;&lt;img style="BACKGROUND-IMAGE: none; BORDER-RIGHT-WIDTH: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px" title="clip_image016" border="0" alt="clip_image016" src="http://lh5.ggpht.com/_vc1OGKotMCU/Tdg1nbGX8kI/AAAAAAAAAmY/KJy4P6MM8d0/clip_image016_thumb%5B2%5D.jpg?imgmax=800" width="621" height="457" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Final Code&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Here is the final master page code that I created.&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;&amp;lt;!-- =====  Start Scrolling Body Area ============================================================ --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;&amp;lt;!-- these two div id's are used to setup the main scrolling page area, they should stay if you are sticking the ribbon to the top --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="s4-workspace"&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="s4-nosetwidth"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;  &lt;span class="rem"&gt;&amp;lt;!-- NOTE: s4-nosetwidth is used when you are setting a fixed page width in css, remove for 100% --&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="s4-bodyContainer"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class="rem"&gt;&amp;lt;!-- id="mso_contentdiv" required, helps SharePoint put the web part editing pane in the main body on the right, you can move the ID if needed --&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="MSO_ContentDiv"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;            &lt;span class="rem"&gt;&amp;lt;!-- control width --&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="masterPageWidth"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;br /&gt;                &lt;span class="rem"&gt;&amp;lt;!-- header --&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="header"&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="s4-notdlg"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="menu"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="menu_list"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="rem"&gt;&amp;lt;!-- top navigation area --&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="s4-notdlg"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span class="rem"&gt;&amp;lt;!-- top navigation publishing data source --&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;PublishingNavigation:PortalSiteMapDataSource&lt;/span&gt;&lt;br /&gt;                                    &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="topSiteMap"&lt;/span&gt;&lt;br /&gt;                                    &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;br /&gt;                                    &lt;span class="attr"&gt;EnableViewState&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt;&lt;br /&gt;                                    &lt;span class="attr"&gt;SiteMapProvider&lt;/span&gt;&lt;span class="kwrd"&gt;="GlobalNavigation"&lt;/span&gt;&lt;br /&gt;                                    &lt;span class="attr"&gt;StartFromCurrentNode&lt;/span&gt;&lt;span class="kwrd"&gt;="true"&lt;/span&gt;&lt;br /&gt;                                    &lt;span class="attr"&gt;StartingNodeOffset&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt;&lt;br /&gt;                                    &lt;span class="attr"&gt;ShowStartingNode&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt;&lt;br /&gt;                                    &lt;span class="attr"&gt;TrimNonCurrentTypes&lt;/span&gt;&lt;span class="kwrd"&gt;="Heading"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;br /&gt;                                &lt;span class="rem"&gt;&amp;lt;!-- top navigation menu (set to use the new Simple Rendering) --&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SharePoint:AspMenu&lt;/span&gt;&lt;br /&gt;                                  &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="TopNavigationMenuV4"&lt;/span&gt;&lt;br /&gt;                                  &lt;span class="attr"&gt;EncodeTitle&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt;&lt;br /&gt;                                  &lt;span class="attr"&gt;Runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;br /&gt;                                  &lt;span class="attr"&gt;EnableViewState&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt;&lt;br /&gt;                                  &lt;span class="attr"&gt;DataSourceID&lt;/span&gt;&lt;span class="kwrd"&gt;="topSiteMap"&lt;/span&gt;&lt;br /&gt;                                  &lt;span class="attr"&gt;AccessKey&lt;/span&gt;&lt;span class="kwrd"&gt;="&amp;lt;%$Resources:wss,navigation_accesskey%&amp;gt;"&lt;/span&gt;&lt;br /&gt;                                  &lt;span class="attr"&gt;UseSimpleRendering&lt;/span&gt;&lt;span class="kwrd"&gt;="true"&lt;/span&gt;&lt;br /&gt;                                  &lt;span class="attr"&gt;UseSeparateCss&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt;&lt;br /&gt;                                  &lt;span class="attr"&gt;Orientation&lt;/span&gt;&lt;span class="kwrd"&gt;="Horizontal"&lt;/span&gt;&lt;br /&gt;                                  &lt;span class="attr"&gt;StaticDisplayLevels&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt;&lt;br /&gt;                                  &lt;span class="attr"&gt;MaximumDynamicDisplayLevels&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt;&lt;br /&gt;                                  &lt;span class="attr"&gt;SkipLinkText&lt;/span&gt;&lt;span class="kwrd"&gt;=""&lt;/span&gt;&lt;br /&gt;                                  &lt;span class="attr"&gt;CssClass&lt;/span&gt;&lt;span class="kwrd"&gt;="s4-tn"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;SharePoint:AspMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="logo"&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="s4-notdlg"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="logo_text"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;="/SitePages/Home.aspx"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Branding Blog&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                        Lorem ipsum dolor sit amet, consectetuer&lt;br /&gt;                        adipiscing elit. Pellentesque lobortis nibh&lt;br /&gt;                        eu mauris. Morbi arcu tortor, auctor et,&lt;br /&gt;                        facilisis nec, egestas sit amet, enim.&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;                &lt;span class="rem"&gt;&amp;lt;!-- page editing status bar --&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="s4-notdlg"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="s4-statusbarcontainer"&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="s4-notdlg"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="pageStatusBar"&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="s4-status-s1"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;                &lt;span class="rem"&gt;&amp;lt;!-- styles needed to have left nav to the left of the main area --&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="s4-leftpanel"&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="s4-notdlg"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="rem"&gt;&amp;lt;!-- The quick launch bar / left navigation --&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ContentPlaceHolder&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="PlaceHolderLeftNavBar"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;style&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/css"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            /* hide the left nav and titles for pages that don't override the left nav bar */        &lt;br /&gt;                            #s4-leftpanel {&lt;br /&gt;                                display: none;&lt;br /&gt;                            }&lt;br /&gt;                            .s4-ca {&lt;br /&gt;                                margin-left:0px;&lt;br /&gt;                            }&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:ContentPlaceHolder&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;br /&gt;                    &lt;span class="rem"&gt;&amp;lt;!-- The small menu attached Quick Launch bar. Used only on very specific pages --&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ContentPlaceHolder&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="PlaceHolderLeftActions"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt; &lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="rem"&gt;&amp;lt;!--end header --&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;br /&gt;                &lt;span class="rem"&gt;&amp;lt;!-- main --&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="text"&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="rem"&gt;&amp;lt;!-- s4-ca is the main body div --&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="s4-ca"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt; &lt;span class="attr"&gt;width&lt;/span&gt;&lt;span class="kwrd"&gt;="100%"&lt;/span&gt;  &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="s4-notdlg"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;width&lt;/span&gt;&lt;span class="kwrd"&gt;="90%"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="breadcrumb"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:SiteMapPath&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;align&lt;/span&gt;&lt;span class="kwrd"&gt;="right"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                    &lt;span class="rem"&gt;&amp;lt;!-- search box loads from delegate, style with CSS --&amp;gt;&lt;/span&gt;&lt;br /&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="s4-notdlg"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ContentPlaceHolder&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="PlaceHolderSearchArea"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SharePoint:DelegateControl&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;ControlId&lt;/span&gt;&lt;span class="kwrd"&gt;="SmallSearchInputBox"&lt;/span&gt; &lt;span class="attr"&gt;Version&lt;/span&gt;&lt;span class="kwrd"&gt;="4"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                                        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:ContentPlaceHolder&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;nowrap&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="s4-notdlg"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                        &lt;span class="rem"&gt;&amp;lt;!-- links for I like it and Tags and Notes --&amp;gt;&lt;/span&gt;&lt;br /&gt;                                        &lt;span class="rem"&gt;&amp;lt;!-- use ControlID="GlobalSiteLink3" for larger icons or remove this line entirely for no icons --&amp;gt;&lt;/span&gt;&lt;br /&gt;                                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SharePoint:DelegateControl&lt;/span&gt; &lt;span class="attr"&gt;ControlId&lt;/span&gt;&lt;span class="kwrd"&gt;="GlobalSiteLink3-mini"&lt;/span&gt; &lt;span class="attr"&gt;Scope&lt;/span&gt;&lt;span class="kwrd"&gt;="Farm"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="s4-notdlg"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="rem"&gt;&amp;lt;!-- page title --&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ContentPlaceHolder&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="PlaceHolderPageTitleInTitleArea"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;        &lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;br /&gt;                        &lt;span class="rem"&gt;&amp;lt;!-- place a table around this to handle funky markup in _Layouts/areacachesettings.aspx (if you want) --&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ContentPlaceHolder&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="PlaceHolderPageDescription"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="rem"&gt;&amp;lt;!-- page content loads from the pages and pages layout --&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ContentPlaceHolder&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="PlaceHolderMain"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="rem"&gt;&amp;lt;!-- end main --&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;br /&gt;                &lt;span class="rem"&gt;&amp;lt;!-- footer --&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="footer"&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="s4-notdlg"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="left_footer"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;span class="attr"&gt;&amp;amp;copy;&lt;/span&gt; Copyright 2008 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;b&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Russo&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;b&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="right_footer"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="rem"&gt;&amp;lt;!-- Please do not change or delete this link. Read the license! Thanks. :-) --&amp;gt;&lt;/span&gt;&lt;br /&gt;                        Design by &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.realitysoftware.ca"&lt;/span&gt; &lt;span class="attr"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;="Website Design"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;strong&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Reality Software&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;strong&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="rem"&gt;&amp;lt;!-- end footer --&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;br /&gt;                &lt;span class="rem"&gt;&amp;lt;!-- the developer dashboard can be turned on by administrators and shows debuging and performance info for the page --&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="DeveloperDashboard"&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="ms-developerdashboard"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SharePoint:DeveloperDashboard&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;&amp;lt;!-- =====  End scrolling body area with these two previous div's ================================================ --&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Here is the final CSS that I modified through the process:&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt; &lt;/p&gt;&lt;pre class="csharpcode"&gt;body { font-size:0.9em; line-height:14px; font-family:Tahoma, Arial; font-size:11px; border:1px solid #000; background: url(images/bckg.jpg) repeat-x #0A8FDE; }&lt;br /&gt;a { color:#10639a; text-decoration:none;}&lt;br /&gt;a:hover { text-decoration:underline;}&lt;br /&gt;p { padding: 0 10px 5px 10px; }&lt;br /&gt;h1 { font-family: "Myriad Pro", "Trebuchet MS", Arial; margin:0; padding:10px 0 0 10px; text-transform:uppercase; font-size:18px; color:#10639a; }&lt;br /&gt;&lt;br /&gt;#header { background:url(images/header_bckg.jpg) no-repeat top right #0EA5FE;}&lt;br /&gt;#logo { padding:50px 60px 0 40px; height:130px; background:url(images/head_bckg.jpg) no-repeat #0EA5FE; }&lt;br /&gt;#logo a{ font-family: "Myriad Pro", "Trebuchet MS", Arial; color:#fff; text-decoration:none; font-weight:bold; font-size:20px; text-transform:uppercase; letter-spacing:5px; }&lt;br /&gt;#logo_text { float:right; width:200px; font-size:10px; color:#fff; line-height:12px; padding-top:5px;  }&lt;br /&gt;#menu { background: url(images/menu_bckg.gif) repeat-x #fff; height:40px; padding-top:10px;}&lt;br /&gt;#menu_list {width:600px; margin:0 auto;}&lt;br /&gt;#menu a { display:block; color:#000000; float:left; font-size:14px; text-transform:uppercase; font-weight:bold; text-decoration:none; margin:0 20px; padding-top:12px; font-family: "Myriad Pro", "Trebuchet MS", Arial;}&lt;br /&gt;#menu a:hover{ color:#078DE2;}&lt;br /&gt;.splitter { display:block; float:left;}&lt;br /&gt;.item img { background-color:#FFFFFF; padding:6px; border:1px solid #d0d0d0;}&lt;br /&gt;.item a { display:block; float:left; font-size:12px; color:#bd131d;}&lt;br /&gt;.description { display:block; float:right; width:220px; padding: 10px 20px 30px 0; line-height:12px;}&lt;br /&gt;p.additional { margin:0 10px; color:#9c9c9c; font-size:10px; line-height:12px; border-top:1px solid #bdbdbd; padding: 10px 0; font-weight:normal;}&lt;br /&gt;&lt;br /&gt;#text { margin: 0 0 0 0; background:url(images/content.gif); padding:10px; }&lt;br /&gt;#sidebar { float:right; width:245px; padding: 20px 20px 0 30px; font-size:10px; }&lt;br /&gt;#sidebar a{ font-weight:bold; }&lt;br /&gt;#sidebar h1 { font-family: "Myriad Pro", "Trebuchet MS", Arial; margin:0; padding:0 0 20px 0; text-transform:uppercase; color:#000;}&lt;br /&gt;&lt;br /&gt;#footer {font-family: "Myriad Pro", "Trebuchet MS", Arial; background:url(images/footer_bckg.gif) repeat-x #000; height:55px; clear:both;  }&lt;br /&gt;#left_footer { float:left; padding:20px 0 0 30px; color:#fff; font-size:12px;}&lt;br /&gt;#left_footer a { color:#fff;}&lt;br /&gt;#left_footer a:hover { text-decoration:none;}&lt;br /&gt;#right_footer { float:right;  padding:20px 30px 0 0; color:#fff;  font-size:12px; text-align:right;}&lt;br /&gt;#right_footer a { color:#fff;}&lt;br /&gt;&lt;br /&gt;/* Control Page Width */&lt;br /&gt;.masterPageWidth { width: 960px; margin: auto; background-color:white; }&lt;br /&gt;#breadcrumb { font-family: "Myriad Pro", "Trebuchet MS", Arial; margin:0; text-transform:uppercase; font-size:18px; color:#10639a; }&lt;br /&gt;/* fix scrolling on list pages */&lt;br /&gt;#s4-bodyContainer { position: relative; }&lt;br /&gt;/* hide body scrolling (SharePoint will handle) */&lt;br /&gt;body { height:100%; overflow:hidden; width:100%; }&lt;br /&gt;/* popout breadcrumb menu needs background color for firefox */&lt;br /&gt;.s4-breadcrumb-menu { background:#F2F2F2; }&lt;br /&gt;/* if you want to change the left nav width, change this and the margin-left in .s4-ca */&lt;br /&gt;body #s4-leftpanel { /* width:155px; */ }    &lt;br /&gt;/* body area normally has a white background */&lt;br /&gt;.s4-ca { background:transparent none repeat scroll 0 0; /* margin-left:155px; */ }&lt;br /&gt;/*Fix some issues with the dialog boxes*/&lt;br /&gt;.ms-dialog .masterPageWidth { width:auto !important; }&lt;br /&gt;.ms-dialog body { background-color: white; background-image: none; }&lt;br /&gt;/* make the background white*/&lt;br /&gt;#s4-leftpanel { background-color:white; }&lt;br /&gt;/* right zone override for the blog*/&lt;br /&gt;.ms-blogRightZone { background-color:white; }&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Conclusions&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;You can probably click around in a bunch more places and find more issues with my template. All of them should be easy to fix with some CSS changes. &lt;b&gt;This is why I said I am not building a production ready branding implementation but this will show you how to start one.&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;I&lt;/b&gt;&lt;b&gt;nteresting Note&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;This is the second time I have done this template; and the third time I have done some real branding into SharePoint. One interesting thing that I did not encounter this time around was the double vertical scrollbar appearing. I cannot replicate the scenario right now but it is worth noting. Below is a somewhat related thing I ran into earlier. You may recall I lost the vertical scroll bar completely (screenshot below). Notice how the scroll bar is directly tied to the ribbon. In this case I had some CSS in the HTML template that was pushing the ribbon off the screen which subsequently pushed the scrollbar off to the right making it inaccessible.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_vc1OGKotMCU/Tdg1nn0EhnI/AAAAAAAAAmc/luhLCr76wSw/s1600-h/clip_image002%5B8%5D%5B3%5D.jpg"&gt;&lt;img style="BACKGROUND-IMAGE: none; BORDER-RIGHT-WIDTH: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px" title="clip_image002[8]" border="0" alt="clip_image002[8]" src="http://lh6.ggpht.com/_vc1OGKotMCU/Tdg1ns4beBI/AAAAAAAAAmg/tibk9EPizGE/clip_image002%5B8%5D_thumb%5B1%5D.jpg?imgmax=800" width="519" height="171" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;One interesting thing to take note of is the screenshot below. This is a screen shot after I fixed my custom CSS to show the ribbon correctly. You may not have ever noticed but in SharePoint 2010 the scrollbar does not go all the way up; it stops at the ribbon. SharePoint 2010 takes over the way the scrollbar is displayed to ensure that top ribbon is always displayable to the user. When implementing your custom templates and CSS you will have to make modifications to accommodate this.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_vc1OGKotMCU/Tdg1n-4Z8VI/AAAAAAAAAmk/0cNlYFCN5pE/s1600-h/clip_image003%5B4%5D.png"&gt;&lt;img style="BACKGROUND-IMAGE: none; BORDER-RIGHT-WIDTH: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://lh4.ggpht.com/_vc1OGKotMCU/Tdg1oEU3FRI/AAAAAAAAAmo/K4S4Rpp4W-Q/clip_image003_thumb%5B1%5D.png?imgmax=800" width="284" height="499" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Next&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;We are going to explore making anonymous pages work with the master page.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2157078164517103759-1141621611480986150?l=www.astaticstate.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.astaticstate.com/feeds/1141621611480986150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2157078164517103759&amp;postID=1141621611480986150' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/1141621611480986150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2157078164517103759/posts/default/1141621611480986150'/><link rel='alternate' type='text/html' href='http://www.astaticstate.com/2011/05/refining-branding-on-master-page.html' title='Refining the Branding on the Master Page'/><author><name>Jason Apergis</name><uri>http://www.blogger.com/profile/01817509015412502702</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_vc1OGKotMCU/Tdg1gK911CI/AAAAAAAAAlQ/TidzeBid8zU/s72-c/clip_image002_thumb%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2157078164517103759.post-7704098903315135690</id><published>2011-05-21T14:40:00.001-07:00</published><updated>2011-05-21T16:31:57.798-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Branding'/><title type='text'>Branding a Master Page</title><content type='html'>&lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/introduction-to-sharepoint-2010.html"&gt;Part 1: Introduction to SharePoint 2010 Branding and WCM&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/branding-master-page.html"&gt;Part 2: Branding a Master Page.html&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.astaticstate.com/2011/05/refining-branding-on-master-page.ht
