<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.rightpoint.com/community/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Viewpoint</title><link>http://www.rightpoint.com/community/blogs/viewpoint/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Debug Build: 31106.3070)</generator><item><title>Words and Meanings</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/02/01/words-and-meanings.aspx</link><pubDate>Wed, 01 Feb 2012 18:05:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2927</guid><dc:creator>cquillen</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.rightpoint.com/community/blogs/viewpoint/rsscomments.aspx?PostID=2927</wfw:commentRss><comments>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/02/01/words-and-meanings.aspx#comments</comments><description>&lt;p class="MsoNormal"&gt;Last Tuesday I attended a Meetup
event hosted by David Damaree, of the Chicago-based typography firm Typekit,
where he spoke about &amp;ldquo;Naming Things.&amp;quot; The hour focused on the role of naming
and domain modeling in making good software and good design. He went through
good and bad examples from branding, user experience and code. Sounded pretty
awesome but sadly, we mostly just got to hear about the difficulties Typekit
had establishing naming conventions on their own website, and how hard it was
to decide which definition of &amp;ldquo;Font&amp;rdquo; to use. And while that &lt;i&gt;is&lt;/i&gt; tricky,
since it can mean many things; a metal type character of a single size and
style; a digital file of a character set; a database object bla bla bla&amp;hellip; I
know, I stopped listening too, and I&amp;rsquo;m a petty big fan of typography. &lt;/p&gt;
&lt;p class="MsoNormal"&gt;So the
talk wasn&amp;rsquo;t so great, but alas, what I did find interesting was his use of the
Magritte painting &amp;ldquo;Ceci n&amp;rsquo;est pas une pipe&amp;rdquo; to illustrate how words mean
different things to different people. While the picture of a pipe isn&amp;rsquo;t actually
a pipe (I love you Magritte) and the letters P-I-P-E also isn&amp;rsquo;t actually a
pipe, it does differentiate that from a cigar.&amp;nbsp;So when you say &amp;ldquo;pipe&amp;rdquo;
while people will hopefully know that is not a cigar, you also don&amp;rsquo;t want them
to expect a different sort of pipe:&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/1.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/1.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;People&amp;rsquo;s perception of what you are talking about when you say &amp;ldquo;pipe&amp;rdquo; will change depending on their understanding of the word, so what is important is to define a word and then establish consistency.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;What really drove the point home
for me though was the phrasing of the invitation. the event would have drinks
and appitizers provided by Groupon, I pictured domestic beer, cheap wine and
maybe some cocktails along with some passed hors d&amp;rsquo;oeuvres, when actually they
meant a few liter bottles of diet coke and a pile of empty pizza boxes.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/2.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/2.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Ah ha! Words mean different things
to different people, you say? I see your point, sir, I see your point.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2927" width="1" height="1"&gt;</description><enclosure url="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.00.29.27/2.gif" length="4134" type="image/gif" /></item><item><title>Business Intelligence in Retail. Insights you can count on.</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/01/24/business-intelligence-in-retail-insights-you-can-count-on.aspx</link><pubDate>Tue, 24 Jan 2012 18:28:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2926</guid><dc:creator>Marcello Benati</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.rightpoint.com/community/blogs/viewpoint/rsscomments.aspx?PostID=2926</wfw:commentRss><comments>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/01/24/business-intelligence-in-retail-insights-you-can-count-on.aspx#comments</comments><description>&lt;p&gt;BI for retail will be defined by the retailers who have figured out how to maximize customer satisfaction and profitability through the right combination of quality products, friendly and efficient service, unique value, a differentiated shopping experience, and a business model that truly serves the communities they serve -- locally and globally. &lt;/p&gt;
&lt;p&gt;How will this be accomplished? It begins with an in depth understanding of the customers and then linking that insight into every decision that is made, from merchandising to marketing to distribution to store operations to finance, so that retailers can predict how to best serve their customers&amp;#39; ever-changing needs and desires.&lt;/p&gt;
&lt;p&gt;Our strategy for the future of retail BI provides for that very scenario, through our experience in designing intelligence platforms and our solutions for customer, merchandise, operations, and performance intelligence that are combined in a toolset designed to equip retailers to become truly innovative.&lt;/p&gt;
&lt;p&gt;A solution seeking to use customer behavioral data to make better merchandising or marketing decisions needs to interface with sales transaction systems, loyalty systems, in-house credit systems, coupon redemption systems, catalog and Internet customer data systems, and so forth. &lt;/p&gt;
&lt;p&gt;A system that recommends optimized price changes should interface with the price management system, the item master, the system that generates labels, etc.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;The Retailers that are Realizing the Most Benefits from BI&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Retailers that are realizing the most significant returns on their investments are those that take a purposeful, pragmatic approach to establishing an intelligence platform upon which to base all other BI solutions. &lt;/p&gt;
&lt;p&gt;A single, reliable demand forecast, for instance, can also be used in merchandising, marketing, logistics, store operations, call center staffing, etc., for operational benefit.BI that remains segmented by functional area can provide some value, but retailers can realize a much larger return by building the foundation upon which the rest of the house will stand. This is true of both top-tier and midmarket retailers, regardless of segment. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Specific Areas in Which Retailers can Benefit Most Include:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="text-decoration:underline;"&gt;Merchandising&lt;/span&gt;&lt;/b&gt;-- This is clearly the most important area of a retailer&amp;#39;s business and an area where retailers are beginning to exploit the full value of BI. Analysis of past performance, combined with plans and forecasts of trends future customer behavior, leads to more accurate initial allocations of merchandise across channels and stores. &lt;/p&gt;
&lt;p&gt;Assortment and size optimization that are based on customer demand patterns ensure that the correct assortments, size, and case-pack distributions get sent to the correct stores. Daily price, promotion, and markdown optimization ensures that items are priced for optimal profitability, both preseason and in season. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Space automation and optimization&lt;/b&gt; ensure departmental sales and profit per square foot are maximized, and products are given the correct inventory and space on the shelf or on the rack. Optimized fulfillment ensures that products are allocated or replenished based on demand. Accurate analysis also results in a more efficient use of manpower in picking, packing, and shipping the first wave of product, while minimizing additional, costly payroll expenses to facilitate transfers between stores, vendor returns, changing signage and labels for markdowns, and otherwise correcting mistakes. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Marketing--&lt;/b&gt; By understanding customers better -- whether by profiling, segmenting, gauging propensity to respond, or using market basket analysis -- retailers can create better-defined targeted campaigns, reducing expenses (printing, paper, postage) while increasing response rates, revenues, and gross margins. Also, as retailers gain a better understanding of their customers&amp;#39; buying behavior, this analysis can then be used to create more effective merchandising plans for the next season. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Operations --&lt;/b&gt; Understanding and predicting changes in demand -- by hour, by day, by location, by promotion, by price change-- means that the store floors, the catalog call centers, and the fleet crews delivering replenishment orders from the DC to the store are all appropriately staffed. This understanding also leads to optimal productivity since store-level human capital costs can be scheduled better and managed more efficiently. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;The Integrated Solution&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;It is important to note that a good BI solution will be able to integrate with any other system and platform. That said different BI solutions need to interface with different operational systems for different purposes. &lt;/p&gt;
&lt;p&gt;A solution seeking to use customer behavioral data to make better merchandising or marketing decisions needs to interface with sales transaction systems, loyalty systems, in-house credit systems, coupon redemption systems, catalog and Internet customer data systems, and so forth. A system that recommends optimized price changes should interface with the price management system, the item master, the system that generates labels, etc. &lt;/p&gt;
&lt;p&gt;There must be a closed-loop interface between the operational systems that retailers rely upon to conduct day-to-day business and the BI systems that help them conduct that business more efficiently and profitably.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2926" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/ROI/default.aspx">ROI</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/data+mining/default.aspx">data mining</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Business+Intelligence/default.aspx">Business Intelligence</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/intelligence/default.aspx">intelligence</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/commerce/default.aspx">commerce</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Businessss+Intelligence/default.aspx">Businessss Intelligence</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Productivity/default.aspx">Productivity</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Planning/default.aspx">Planning</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Culture/default.aspx">Culture</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Retail/default.aspx">Retail</category></item><item><title>SharePoint Saturday Austin Wrap Up</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/01/24/sharepoint-saturday-austin-wrap-up.aspx</link><pubDate>Tue, 24 Jan 2012 14:59:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2924</guid><dc:creator>Kim Frehe</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.rightpoint.com/community/blogs/viewpoint/rsscomments.aspx?PostID=2924</wfw:commentRss><comments>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/01/24/sharepoint-saturday-austin-wrap-up.aspx#comments</comments><description>&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;Update on February 3, 2012: I have added&amp;nbsp;the Introduction to&amp;nbsp;Content Query Web Part that I presented at this event.&amp;nbsp; Click on the &amp;quot;Attachment&amp;quot; above this text.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;----------------------------------------------------------------&lt;/span&gt;&lt;/span&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;strong&gt;SharePoint Saturday Austin (#SPSAusTx)&amp;nbsp;was a fantastic event!&lt;/strong&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;In the last year I have been to 8 SharePoint events and I have to say this was the best that I have&amp;nbsp;been to, and not just because this was my first time being a presenter &lt;/span&gt;&lt;span style="font-family:Wingdings;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;&lt;span style="mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;J&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;. &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;I am&amp;nbsp;an extremely&amp;nbsp;strong supporter of these free community events and have written about &lt;a target="_blank" href="http://www.rightpoint.com/community/blogs/viewpoint/archive/2011/11/14/why-absolutely-everyone-should-attend-a-sharepoint-saturday-my-top-five-reasons.aspx" title="my top 5 reasons you should attend a SharePoint Saturday"&gt;my top 5 reasons you should attend a SharePoint Saturday&lt;/a&gt;.&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;I&amp;rsquo;ll try not to be long winded&amp;hellip;so in honor of the Women of SharePoint Panel held at this event&amp;hellip;I&amp;rsquo;ll bullet point the reasons why (not in any particular order, they are all #1&amp;rsquo;s):&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;The Facility&lt;/b&gt; &amp;ndash; The AT&amp;amp;T Conference Center was beautiful, clean and well organized.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The sleeping rooms were fantastic and the meeting rooms were the perfect size to accommodate the large number of attendees.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;The Food&lt;/b&gt; &amp;ndash; The smorgasbord included healthy alternatives, Texas treats, sandwich stuff, salads, soups, yummy desserts way too much to mention everything.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;It was beautifully presented and I believe the best buffet I&amp;rsquo;ve ever had.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;The Weather&lt;/b&gt; &amp;ndash; yes, it really stank that some of the best speakers got snowed in but it was 7 degrees when I left Chicago and 70 when I got to Austin, so that makes it on this list, sorry Christian Buckly (@buckleyplanet)&amp;nbsp;and Dux Raymond Sy&amp;nbsp;(@meetdux) you&amp;nbsp;were missed and I look forward to seeing you at the next event!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;The Organization&lt;/b&gt; &amp;ndash; Jim Bob Howard (@jbhoward) and Matthew Lathrop (@MatthewRAX) did a fantastic job period!&amp;nbsp; When you add the last minute&amp;nbsp;pulling-in resources to replace the speakers that Snowpocalypse kept away, it was just amazing.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;They claimed there were other issues, but they hid them well because I can&amp;rsquo;t think of anything that wasn&amp;rsquo;t right.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;The Entertainment&lt;/b&gt; - Austin is a great town with some great entertainment&amp;hellip;when you add a bunch of SharePoint geeks in there&amp;hellip;I just can&amp;rsquo;t think of anything better!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;The Networking / Social Aspects&lt;/b&gt; &amp;ndash; There was a great assortment of presenters and attendees. &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;I can&amp;rsquo;t tell you how awesome it is to have a beer and talk SharePoint and not have your friends look at you like you&amp;rsquo;re a geek&amp;hellip;yes, I KNOW that makes me a geek&amp;hellip;but I will happily admit I&amp;rsquo;m a huge SharePoint geek and talking about it is just FUN for me! &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;The Speaker Dinner&lt;/b&gt; &amp;ndash; It was my first one, so I don&amp;rsquo;t have anything to compare it to, but the more experienced speakers said it was a good one too!&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;We were bussed to Salt Lick BBQ which was fantastic!&amp;nbsp; I was&amp;nbsp;thrilled to meet a Microsoft MVP Legend, Bill English (@MinnesotaBill) who promised to come speak at our Chicago User Group one day.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;The Women of SharePoint Women&amp;rsquo;s panel&lt;/b&gt; &amp;ndash; I had the honor of sitting next to 5 amazing women to answer some thought-provoking questions about being a Woman in a Male-Dominated technology industry.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;I believe every SharePoint Saturday would benefit from having some kind of Panel Discussion, not just a women&amp;rsquo;s or leadership panel, but any kind of panel.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;It was really interesting to see and hear different answers/perspectives to the same question.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-size:small;"&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&amp;nbsp;&amp;nbsp; -&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;The panel included myself (@chomp1313), Nedra Allmond (@NedraAllmond), Marcy Kellar (@Marcy Kellar), Mistry Rodriguez, and Tiffany Songvilay (@OfficeOverEasy).&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;span style="font-size:small;"&gt;&lt;span style="font-size:small;"&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&amp;nbsp;&amp;nbsp; -&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;Suzanne George (@SPGenie) did a fantastic job of moderating, in spite of the Chuck Norris joke.&amp;nbsp;&amp;nbsp; We had some great interactions with a wonderful audience!&lt;/span&gt;&lt;/p&gt;
&lt;span style="font-size:small;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-size:small;"&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Note:&lt;span style="mso-spacerun:yes;"&gt; &lt;/span&gt;the bullet point reference at the beginning of this post is referring to the fact that women have a tendency to want to over-explain in long emails ;-)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;The Presenters&lt;/b&gt; &amp;ndash; As always, the presenters were top notch.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;There was a great mix of experienced presenters and new presenters, like me.&amp;nbsp; I really love how supportive the community is of each other.&amp;nbsp; We all work for different companies doing various things.&amp;nbsp; Some companies may even compete against each other, but there is none of that here and I love it!&amp;nbsp; This community is truly unique in the way that we all support and help each other.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;The Attendees&lt;/b&gt; &amp;ndash; The attendees at this event are always such a good mix of users / providers at every level.&amp;nbsp; These great conversations between sessions, at lunch and at SharePint&amp;nbsp;remind me a few key points about SharePoint in general:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&amp;nbsp;&amp;nbsp; -&amp;nbsp; No one knows everything about every aspect of SharePoint&amp;hellip;I believe it is impossible - we all need to specialize in a few key areas and rely on others to specialize in others. That&amp;#39;s why we all work so well together.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&amp;nbsp;&amp;nbsp; -&amp;nbsp; What seems easy to you is not easy to someone else with different experiences and vice versa&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&amp;nbsp;&amp;nbsp; -&amp;nbsp; There are still people that are just starting out in SharePoint&amp;hellip;remember them, they are important&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&amp;nbsp;&amp;nbsp; -&amp;nbsp; There are several different ways to reach the same goal in SharePoint, the way you succeed depends on process and the user...make sure the end user is a part of the process&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;strong&gt;Presenting&lt;/strong&gt; - This&amp;nbsp;was the first time I have&amp;nbsp;presented at&amp;nbsp;a SharePoint Event, thanks to Jim Bob Howard&amp;#39;s insistence&amp;nbsp;that with 10+ years of&amp;nbsp;SharePoint experience&amp;nbsp;I must have &lt;em&gt;something&lt;/em&gt; to say.&amp;nbsp; I had the honor of being able to present an Intro to Content Query Web Parts session.&lt;span style="mso-spacerun:yes;"&gt; &lt;/span&gt;There were a few technical difficulties (user error) and the crowd was extremely helpful and forgiving.&lt;span style="mso-spacerun:yes;"&gt; &lt;/span&gt;The positive feedback I received removes any hesitation I ever had about speaking in public&amp;hellip;which is something I never aspired to before.&lt;span style="mso-spacerun:yes;"&gt; &lt;/span&gt;However, SharePoint is something I&amp;rsquo;m very passionate about and I love talking about it!&amp;nbsp; I am hooked and I will be submitting again!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Well, that pretty much wraps it up.&amp;nbsp; If you&amp;rsquo;re reading this and you missed it&amp;hellip;try to get there next year&amp;hellip;it is well worth it!&amp;nbsp; Any of them are, I can honestly say I haven&amp;#39;t been to a &amp;quot;bad&amp;quot; one yet.&amp;nbsp; Here&amp;#39;s a link to the site to find the closest one to you:&amp;nbsp; &lt;a href="http://sharepointsaturday.org/default.aspx"&gt;http://sharepointsaturday.org/default.aspx&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;_________________________________________________________________&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Past SharePoint Events I have been to since I discovered the awesome SharePoint Community 2011:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;1.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;SPS St. Louis&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;2.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;SPTechCon - Boston&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;3.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;SPS Houston&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;4.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;SPS Chicago&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;5.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;SPS New York&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;6.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;SharePointFest Chicago&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;7.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;SPS DC&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;8.&lt;/span&gt;&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;SPS Austin&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2924" width="1" height="1"&gt;</description><enclosure url="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.00.29.24/Content-Query-Web-Part_2D00_AUSTIN.pptx" length="1876464" type="application/vnd.openxmlformats-officedocument.pres" /><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Training/default.aspx">Training</category></item><item><title>Windows Phone 7 Memory Card Error On Samsung Focus</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/01/17/windows-phone-7-memory-card-error-on-samsung-focus.aspx</link><pubDate>Tue, 17 Jan 2012 23:32:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2923</guid><dc:creator>Chris Domino</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.rightpoint.com/community/blogs/viewpoint/rsscomments.aspx?PostID=2923</wfw:commentRss><comments>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/01/17/windows-phone-7-memory-card-error-on-samsung-focus.aspx#comments</comments><description>&lt;p class="Text"&gt;Happy 2012! &lt;/p&gt;
&lt;p class="Text"&gt;I am a Microsoft guy. Windows, .NET, SharePoint, PCs, etc. have been my tools for as long as I could type. The newest paradigm to come my way has been Windows Phone 7. I love it. Where iPhones are toys, my WP7 has been a trusty tool keeping me productive and indulged. Sure the app support isn&amp;#39;t there yet. Sure, it&amp;#39;s still in its first generation (although 7.5 is awesome). Sure Microsoft has a long way to go before it&amp;#39;s respected in the mobile world. But I love it. I bought my Samsung Focus the day WP7 launched, and despite the few inevitable bumps in the new technology road, haven&amp;#39;t looked back. &lt;/p&gt;
&lt;p class="Text"&gt;Then, last Saturday night at my birthday party, I took my phone out of my pocket, and saw a weird error message. Rebooting didn&amp;#39;t help. Since it was late in the evening, and I was in no state to troubleshoot my phone, I turned it off and went back to the party. Then the next morning, I turned it on, and was greeted with the same message. Here&amp;#39;s how it reads: &lt;/p&gt;
&lt;p class="Text"&gt;Storage card not working &lt;/p&gt;
&lt;p class="Text"&gt;Your storage card has changed, is damaged, or is non-compliant. &lt;/p&gt;
&lt;p class="Text"&gt;To fix this, turn off your phone and either remove the storage card or replace it with a new compliant card. Then you&amp;#39;ll need to reset your phone to the original factory settings. &lt;/p&gt;
&lt;p class="Text"&gt;To reset your phone, refer to the owner&amp;#39;s manual. &lt;/p&gt;
&lt;p class="Text"&gt;There are two buttons at the bottom: &amp;quot;Emergency&amp;quot; which gets you to a phone keypad, and &amp;quot;Turn Off&amp;quot; which does just that. I could tell the phone was certainly in a wonky state, since that button would occasionally rotate slightly when I pressed it. If locked and then unlocked, the factory lock screen was visible. So the phone was &lt;span class="Italic"&gt;on&lt;/span&gt;, just not really operational. &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/Windows-Phone-7-Memory-Card-Error-On-Samsung-Focus/PhoneError.jpg" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Also, if I left it on in this state, it would get pretty hot. Not quite burning, but certainly hotter than any phone I&amp;#39;ve ever had. This &lt;span class="Bold"&gt;never&lt;/span&gt; happened during normal usage. &lt;/p&gt;
&lt;p class="Text"&gt;The other thing to mention is that, as a Focus owner, I had the ability to shove an additional memory card (Kingston 16GB class 4 microSD) in there. My initial thought was that it freaked out, was jarred lose during my party, or got wet somehow or something; typical phone hardware failures. After all kinds of rebooting, removing and replacing of the card and battery, and even some desperate old-skool Nintendo cartridge blowing, I kept getting the same error. &lt;/p&gt;
&lt;p class="Text"&gt;The drama with WP7 and the Focus is that the phone treats the card as an extension of the hard drive, and forever binds it to the internal memory. So it&amp;#39;s a good bet that if your card barfs, your entire phone could be hosed. Make sure to keep your SkyDrive properly backing up your contacts, pictures, OneNote and other Office docs, etc. &lt;/p&gt;
&lt;p class="Text"&gt;Everything I read on the Internet about this problem ended up with the person having to get a new phone. But after my experience with my iPhone and Apple(doesn&amp;#39;t)Care, I bought the most expensive insurance I could when I got my new WP7. After three days without a phone, and two trips to the AT&amp;amp;T store (long story; customer service fails all around), I was able to get a new Samsung Focus S for the cost of an insurance claim (which was about $50). I wasn&amp;#39;t due for an upgrade or anything, but either I charmed the lady behind the counter enough, or she felt sorry enough for me. Either way, I walked away with a larger, lighter, faster, (4G-ish! 1.4 GHz proc!) phone that even has a front-facing camera! Win! &lt;/p&gt;
&lt;p class="Text"&gt;I also noticed that none of the texts or voice mails I received during my stint in the dark ages off the grid came through, so look out for that. Otherwise, sure it sucks having lost some pictures and text message threads, etc, but I still feel like I came out way ahead. I look forward to the next generation of Windows Phone 7 devices, and hopefully a new generation of users as well! &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2923" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Samsung+Focus/default.aspx">Samsung Focus</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Windows+Phone+7/default.aspx">Windows Phone 7</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Memory+Card/default.aspx">Memory Card</category></item><item><title>The SharePoint 2010 Blog Rating Conundrum</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/01/03/the-sharepoint-2010-blog-rating-conundrum.aspx</link><pubDate>Tue, 03 Jan 2012 21:21:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2921</guid><dc:creator>John Wefler</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.rightpoint.com/community/blogs/viewpoint/rsscomments.aspx?PostID=2921</wfw:commentRss><comments>http://www.rightpoint.com/community/blogs/viewpoint/archive/2012/01/03/the-sharepoint-2010-blog-rating-conundrum.aspx#comments</comments><description>&lt;p&gt;Let’s face it, blogs in SharePoint have always felt tacked on.&amp;#160; In 2010 blogs are stood up by creating a site using the Blog site template.&amp;#160; Easy enough, right?&amp;#160; Yes and no…&amp;#160; Without fail you’ll have a client that wants ratings enabled for their SharePoint 2010 blogs.&amp;#160; Hey, awesome, SharePoint 2010 comes with a robust set of social controls right out-of-the-box, including ratings on just about every list item you can imagine.&amp;#160;&amp;#160; This includes blogs, right?&lt;/p&gt;  &lt;p&gt;Phew!&lt;/p&gt;  &lt;p&gt;But, wait, ratings don’t automatically show up for blog posts right out of the box.&amp;#160; The initial point of failure is the blog “Posts” list which is NOT initially set to allow items in the list to be rated.&amp;#160; Flip that option on and you’re only half way there.&amp;#160;&amp;#160; The site definition deployed “Post.aspx” file, which is the end-user oriented single blog post view page, does NOT come with a ratings control.&amp;#160;&amp;#160; Ugh…&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;If you have only one blog up on your SharePoint farm, edit the “Post.aspx” file with SharePoint Designer and add a List View Web Part:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Within SharePoint Designer, open &amp;quot;Posts.aspx&amp;quot; in advanced mode. &lt;/li&gt;    &lt;li&gt;Select an empty area and select &amp;quot;Insert&amp;quot; then click &amp;quot;List View&amp;quot;. &lt;/li&gt;    &lt;li&gt;Select “Posts” and a new List View of the Posts list will be placed on the page. &lt;/li&gt;    &lt;li&gt;Customize this List View to display only rating information. &lt;/li&gt;    &lt;li&gt;Define a parameter to assign to the query string variable &amp;quot;ID&amp;quot;, with a default value as &amp;quot;-1&amp;quot;. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;This is a very common SharePoint 2010 workaround.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now if you have several blogs within your farm, you might start looking for options.&amp;#160; Cracking open the Blog site definition might appear attractive at first glance.&amp;#160;&amp;#160; There’s a lot of work that goes into creating a one-off blog site definition, and then you may confuse end users or even power users with new options.&amp;#160;&amp;#160; It may be tempting to hack into the ghosted version of the “Post.aspx” file in the 14-hive to just add the ratings control with markup, but then you know NOT to do that for many many reasons.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Here’s my happy workaround with two code-based steps…. If you don’t code, or you can’t deploy a solution, look elsewhere.&lt;/p&gt;  &lt;p&gt;Step 0:&amp;#160; Enable ratings on the Posts list for every Blog site you create.&amp;#160; This will require Enterprise features to be activated.&lt;/p&gt;  &lt;p&gt;Step 1:&amp;#160; Create a user control that will display a context-sensitive ratings control.&amp;#160; Beyond the scope of this posting, but it is quite do-able to create a user control with a Microsoft.SharePoint.Portal.WebControls.AverageRatingFieldControl embedded that you can scope to an individual blog post.&lt;/p&gt;  &lt;p&gt;Step 2:&amp;#160; Wire this control to any and all “Post.aspx” pages in your farm.&lt;/p&gt;  &lt;p&gt;Here’s the nitty gritty on this one.&amp;#160; I was able to pinpoint all instances of the “Post.aspx” within my farm by adding a little routine in code-behind of my site master page:&lt;/p&gt;  &lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:600px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px;"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:11px;"&gt;  1: #region Blog Wire
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:11px;"&gt;  2: /// &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;summary&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:11px;"&gt;  3: /// Wire in ratings controls for the blog POST.ASPX file
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:11px;"&gt;  4: /// &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;summary&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:11px;"&gt;  5: protected void BlogWire()
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:11px;"&gt;  6: {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:11px;"&gt;  7:   if (SPContext.Current.Web.WebTemplateId == 9)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:11px;"&gt;  8:   {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:11px;"&gt;  9:     if (Request.FilePath.EndsWith(&amp;quot;Post.aspx&amp;quot;))
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:11px;"&gt; 10:     {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:11px;"&gt; 11:       string _ascxPath = @&amp;quot;~/_CONTROLTEMPLATES/Project.Web/BlogPostRating.ascx&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:11px;"&gt; 12:       BlogPostRating thisBlogRating = (BlogPostRating)LoadControl(_ascxPath);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:11px;"&gt; 13:       MSO_ContentDiv.Controls.AddAt(1, thisBlogRating);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:11px;"&gt; 14:     }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:11px;"&gt; 15:   }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:11px;"&gt; 16: }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:11px;"&gt; 17: #endregion&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Break-down:&lt;/p&gt;

&lt;p&gt;This code is called from the Page_Load event.&lt;/p&gt;

&lt;p&gt;Line 5:&amp;#160; Checks the site’s web template ID.&amp;#160; #9 is the Blog web template.&lt;/p&gt;

&lt;p&gt;Line 7:&amp;#160; Checks the file path ending with “Post.aspx”.&lt;/p&gt;

&lt;p&gt;Lines 11-12:&amp;#160; Creates an instance of the control.&lt;/p&gt;

&lt;p&gt;Line 13:&amp;#160; Wires in the control in the “MSO_ContentDiv” server control declared as runat=”server” from the master page. &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Check out your embedded ratings control on Blog posts (see arrow below):&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/blogratings_5F00_65E63B08.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="blogratings" border="0" alt="blogratings" src="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/blogratings_5F00_thumb_5F00_1A46C1B7.png" width="644" height="243" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2921" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Blogs/default.aspx">Blogs</category></item><item><title>Fixing Blank SharePoint 2010 Workflow Association Pages Caused By InfoPath Forms Services Not Rendering</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2011/12/09/fixing-blank-sharepoint-2010-workflow-association-pages-caused-by-infopath-forms-services-not-rendering.aspx</link><pubDate>Sat, 10 Dec 2011 00:15:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2920</guid><dc:creator>Chris Domino</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.rightpoint.com/community/blogs/viewpoint/rsscomments.aspx?PostID=2920</wfw:commentRss><comments>http://www.rightpoint.com/community/blogs/viewpoint/archive/2011/12/09/fixing-blank-sharepoint-2010-workflow-association-pages-caused-by-infopath-forms-services-not-rendering.aspx#comments</comments><description>&lt;p class="Text"&gt;&lt;a target="_blank" href="http://chrisdomino.com/blog/post/Resolving-Workflow-Association-Errors-Caused-By-Custom-Master-Pages" class="Link"&gt;Part 3&lt;/a&gt; of my continuing coverage of my hybrid all code Visual Studio / no code SharePoint Designer team&amp;#39;s adventure discussed a weird workflow issue. Basically, an element in our master page was not playing nicely with workflow; errors were thrown upon loading the workflow association page (CstWrkflIP.aspx). Once I figured out the fix, I celebrated by leaving the office in a good mood for a change. &lt;/p&gt;
&lt;p class="Text"&gt;However, the next day, still glowing from my workflow salvation, it turned out that this triumph only unearthed the next layer of problems. This time, the culprit was blank association pages. No more errors? Win. But empty divs making a hollow skeleton out of my master page? Fail; worse than having errors. What was weird was the fact that there were indeed &lt;span class="Italic"&gt;several&lt;/span&gt; divs visible in IE&amp;#39;s developer tools, all properly nested as though they were framing up the InfoPath Forms Services content of the association form. &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/Fixing-Blank-SharePoint-2010-Workflow-Association-Pages-Caused-By-InfoPath-Forms-Services-Not-Rendering/NoInfoPathFormsServices.png" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;So when I say &amp;quot;blank,&amp;quot; I mean, to a user, there&amp;#39;s no content between the header and footer of the master page; to a developer, however, something much more interesting was happening. Normally, blank pages caused by hardcore ASP.NET errors simply render opening and closing body tags. The underlying issue is usually something like a configuration problem, or malformed HTML, or missing file references. But the workflow engine in this situation was trying really hard to render something, but just couldn&amp;#39;t. &lt;/p&gt;
&lt;p class="Text"&gt;After digging a bit through the master page code and what I saw in the IE dev tools, I determined that it was indeed the InfoPath form that refused to render; everything else was fine. So the first thought I had was to check on the InfoPath Forms Services settings in central admin. Well, it was one of those situations when, unfortunately, everything was fine. I went back to the browser (which was laden with tabs to central admin, site settings, workflow settings, and so on) and wandered around the generated &amp;quot;blank&amp;quot; HTML a bit more. Everything seemed in order. I refreshed the page. Suddenly, without any particular logical reason why, I saw an InfoPath form looking back at me, seemingly saying: &amp;quot;Yeah, I&amp;#39;m here now. So what?&amp;quot; &lt;/p&gt;
&lt;p class="Text"&gt;I felt a rush of bliss combined with annoyance, because I didn&amp;#39;t actually fix anything. What if it broke again? I wouldn&amp;#39;t have a procedure to re-repair it. Quickly, both feelings gave way to despair: I was on a stale tab displaying my local environment (which always worked), not the one with my development environment (which never worked). I had refreshed the wrong tab! Ugh. I went back to the dev browser window, refreshed it, and sure enough, was met with the same blank stare. &lt;/p&gt;
&lt;p class="Text"&gt;But the fact that I had a working environment side-by-side with a broken one meant that I had a great opportunity for a differential diagnosis. Inspecting the HTML of the correct page had all the same divs as the other; they simply &lt;span class="Italic"&gt;had&lt;/span&gt; content. I dug and dug. No results. Just when I was about to preemptively abandon this idea before the hierarchy of div tags drove me insane to the point where I&amp;#39;d visualize them becoming sentient and forming a div monster, jumping off the page, and attacking me, I found this in the broken page&amp;#39;s rendered markup: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;DIV&lt;/span&gt; &lt;span class="ClassName"&gt;style&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="StyleName"&gt;PADDING-BOTTOM&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt; 16px&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;span class="StyleName"&gt; BACKGROUND-COLOR&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt; window&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;span class="StyleName"&gt; MARGIN-TOP&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt; 1px&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;span class="StyleName"&gt; ZOOM&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt; 100%&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;span class="StyleName"&gt; FONT-FAMILY&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt; Calibri&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;span class="StyleName"&gt; DIRECTION&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt; ltr&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;span class="StyleName"&gt; MARGIN-BOTTOM&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt; 1px&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;span class="StyleName"&gt; COLOR&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt; black&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;span class="StyleName"&gt; FONT-SIZE&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt; 10pt&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;span class="StyleName"&gt; PADDING-TOP&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt; 16px&amp;quot;&lt;span class="Operator"&gt;;&amp;quot;&lt;/span&gt; lang=en-US&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;DIV&lt;/span&gt;&lt;span class="ClassName"&gt; onkeydown&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;return(KeyboardService.OnKeyDown(&amp;#39;ctl00_PlaceHolderMain_XmlFormControl&amp;#39;, event));&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; id=ctl00_PlaceHolderMain_XmlFormControl__ViewContainer&lt;span class="ClassName"&gt; onkeypress&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;return(KeyboardService.OnKeyPress(&amp;#39;ctl00_PlaceHolderMain_XmlFormControl&amp;#39;, event));&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:20px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;NOSCRIPT&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;NOSCRIPT&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;DIV&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;DIV&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;NO SCRIPT! Why did InfoPath Forms Services think that JavaScript was disabled? Or was this the handling for a deeper error? Binging this yielded, again, no results. What were the other factors? The developer of the workflows told me that everything worked fine when using the default out-of-the-box v4.master master page (which was the whole reason for the previous post in this series). Taking that under advisement, I diffed the JavaScript includes and inline code. &lt;/p&gt;
&lt;p class="Text"&gt;The only difference was that the functioning page had two references to a &amp;quot;blank.js&amp;quot; file with the SharePoint &amp;quot;rev&amp;quot; querystring added. Both files had the same, meaningless (at least to me and InfoPath) code (which, in the actual file, was minimized). Okay bad attitude: I&amp;#39;m sure this file is meaningful to something somewhere, but not in the context of making Forms Services render on the SharePoint workflow association page. Here&amp;#39;s what they looked like: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;function&lt;/span&gt; &lt;span class="ClassName"&gt;ULSaew&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;var&lt;/span&gt; o &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;new&lt;/span&gt; &lt;span class="ClassName"&gt;Object&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;o&lt;span class="Operator"&gt;.&lt;/span&gt;ULSTeamName &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Constant"&gt;&amp;quot;Microsoft SharePoint Foundation&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;o&lt;span class="Operator"&gt;.&lt;/span&gt;ULSFileName &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Constant"&gt;&amp;quot;blank.js&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;return&lt;/span&gt; o&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Dead end: everything else seemed to match. With nowhere else to turn, I opened two instances of SharePoint Designer: one for my local environment and one for the problematic development server. We had recently completed a deployment, so both master pages should have been identical. However, I noticed that the dev file had &lt;span class="Italic"&gt;one additional line&lt;/span&gt;. Hmm. What could have changed? I know that my no-coders use SharePoint Designer on the server to develop and tweak some things, but the check-in time of the file was from when we commented out the offending line of code from &lt;a target="_blank" href="http://chrisdomino.com/blog/post/Resolving-Workflow-Association-Errors-Caused-By-Custom-Master-Pages" class="Link"&gt;Part 3&amp;#39;s&lt;/a&gt; fix. &lt;/p&gt;
&lt;p class="Text"&gt;So I went to the location of the file that contained this control, and, my friends, there it was: SharePoint Designer barfed a bunch of crazy markup after the control, but within the comment. Now, this content is technically commented out, so it didn&amp;#39;t affect the page appearance to the end user; the presence of that HTML in the browser, however, was enough to really piss off Forms Services. The following noise was is three attributes, &amp;quot;__designer:Preview,&amp;quot; &amp;quot;__designer:Values,&amp;quot; and &amp;quot;__designer:Templates&amp;quot; that SharePoint Designer added to the end of the commented out control. Here&amp;#39;s what it looks like: &lt;/p&gt;
&lt;p class="Text"&gt;&lt;span class="Bold"&gt;__designer:Preview=&amp;quot;&amp;lt;div id=&amp;quot;SRSB&amp;quot;&amp;gt; &amp;lt;div id=&amp;quot;ctl00_ctl08&amp;quot;&amp;gt;&amp;lt;input name=&amp;quot;ctl00$ctl08$ctl00&amp;quot; type=&amp;quot;hidden&amp;quot; value=&amp;quot;http://ymca.local&amp;quot; /&amp;gt;&amp;lt;table class=&amp;quot;ms-sbtable ms-sbtable-ex s4-search&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;tr class=&amp;quot;ms-sbrow&amp;quot;&amp;gt;&amp;lt;td class=&amp;quot;ms-sbscopes ms-sbcell&amp;quot;&amp;gt;&amp;lt;select name=&amp;quot;ctl00$ctl08$SBScopesDDL&amp;quot; id=&amp;quot;ctl00_ctl08_SBScopesDDL&amp;quot; title=&amp;quot;Search Scope&amp;quot; class=&amp;quot;ms-sbscopes&amp;quot;&amp;gt; &amp;lt;option value=&amp;quot;This Site&amp;quot;&amp;gt;This Site: Exchange&amp;lt;/option&amp;gt;&amp;lt;/select&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td class=&amp;quot;ms-sbcell&amp;quot;&amp;gt;&amp;lt;input name=&amp;quot;ctl00$ctl08$InputKeywords&amp;quot; type=&amp;quot;text&amp;quot; maxlength=&amp;quot;200&amp;quot; id=&amp;quot;ctl00_ctl08_InputKeywords&amp;quot; accesskey=&amp;quot;S&amp;quot; title=&amp;quot;Search...&amp;quot; class=&amp;quot;ms-sbplain&amp;quot; alt=&amp;quot;Search...&amp;quot; onkeypress=&amp;quot;javascript: return OSBEK(event);&amp;quot; style=&amp;quot;width:170px;&amp;quot; /&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td class=&amp;quot;ms-sbgo ms-sbcell&amp;quot;&amp;gt;&amp;lt;a id=&amp;quot;ctl00_ctl08_go&amp;quot; title=&amp;quot;Search&amp;quot;&amp;gt;&amp;lt;img title=&amp;quot;Search&amp;quot; onmouseover=&amp;quot;this.src=&amp;#39;\u002f_layouts\u002fimages\u002fgosearchhover15.png&amp;#39;&amp;quot; onmouseout=&amp;quot;this.src=&amp;#39;\u002f_layouts\u002fimages\u002fgosearch15.png&amp;#39;&amp;quot; class=&amp;quot;srch-gosearchimg&amp;quot; alt=&amp;quot;Search&amp;quot; src=&amp;quot;/_layouts/images/gosearch15.png&amp;quot; style=&amp;quot;border-width:0px;&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td class=&amp;quot;ms-sbLastcell&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;quot; __designer:Values=&amp;quot;&amp;lt;P N=&amp;#39;ID&amp;#39; T=&amp;#39;DelegateControl4&amp;#39; /&amp;gt;&amp;lt;P N=&amp;#39;ControlId&amp;#39; T=&amp;#39;SmallSearchInputBox&amp;#39; /&amp;gt;&amp;lt;P N=&amp;#39;Version&amp;#39; T=&amp;#39;4&amp;#39; /&amp;gt;&amp;lt;P N=&amp;#39;Page&amp;#39; ID=&amp;#39;1&amp;#39; /&amp;gt;&amp;lt;P N=&amp;#39;TemplateControl&amp;#39; ID=&amp;#39;2&amp;#39; /&amp;gt;&amp;lt;P N=&amp;#39;AppRelativeTemplateSourceDirectory&amp;#39; R=&amp;#39;-1&amp;#39; /&amp;gt;&amp;quot;&lt;/span&gt; &lt;/p&gt;
&lt;p class="Text"&gt;I&amp;#39;m not even daring myself to try and decipher what this &lt;span class="Italic"&gt;might&lt;/span&gt; be doing. I tried replacing the ASP.NET &amp;quot;server side&amp;quot; comments (&amp;lt;% -- --%&amp;gt;) with HTML &amp;quot;client side&amp;quot; comments (&amp;lt;!-- --&amp;gt;) and ended up with the same situation. Talking with one of my no-coders, this has apparently been an issue since the &lt;span class="Italic"&gt;FrontPage&lt;/span&gt; days! Either way, the solution I came up with was to simply not comment out server controls, delete them instead, and make a note of it in a change log proper. Now this isn&amp;#39;t to say that comments don&amp;#39;t work at all in SharePoint Designer; you can place text safely inside HTML comment blocks. &lt;/p&gt;
&lt;p class="Text"&gt;So that demystifies the disappearing InfoPath Forms Services forms in SharePoint workflow association pages. Be careful, as always, in SharePoint Designer, and have fun with workflows! &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2920" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+Designer/default.aspx">SharePoint Designer</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Workflow/default.aspx">Workflow</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/InfoPath/default.aspx">InfoPath</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Forms+Services/default.aspx">Forms Services</category></item><item><title>Use “Check Out” and “Check In” actions with globally reusable workflows in SharePoint Designer 2010</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2011/12/06/use-check-out-and-check-in-actions-with-globally-reusable-workflows-in-sharepoint-designer-2010.aspx</link><pubDate>Tue, 06 Dec 2011 21:12:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2919</guid><dc:creator>Kim Frehe</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.rightpoint.com/community/blogs/viewpoint/rsscomments.aspx?PostID=2919</wfw:commentRss><comments>http://www.rightpoint.com/community/blogs/viewpoint/archive/2011/12/06/use-check-out-and-check-in-actions-with-globally-reusable-workflows-in-sharepoint-designer-2010.aspx#comments</comments><description>&lt;p&gt;I love that SharePoint Designer gives you the ability to create reusable workflows. It&amp;rsquo;s even better that you can select &amp;ldquo;All&amp;rdquo; as the content type. However, I have come across a minor issue with being able to update an item that requires check in and check out via workflow and being able to apply that to &amp;ldquo;any&amp;rdquo; list, content type, page or document. You can&amp;rsquo;t start a workflow on an item that&amp;rsquo;s checked out, but you can&amp;rsquo;t update an item that&amp;rsquo;s checked in. When you try to use the &amp;ldquo;Check out&amp;rdquo; action, you are expected to select a list to check out an item from. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Requirement&lt;/strong&gt;: Create a workflow that will make field updates to a document or page that requires check-in / check-out. This workflow must be able to work on any page or document library in the site collection. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Problem&lt;/strong&gt;:&amp;nbsp; &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I can&amp;rsquo;t update any old field on a checked-in item housed in a library where check-out is required. &lt;/li&gt;
&lt;li&gt;SharePoint Designer workflow action &amp;ldquo;Check out item&amp;rdquo; wants me to choose a List Item to check out, but I need to be able to use this on any list or content type.&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/CheckOutItem.gif"&gt;&lt;img height="137" width="459" src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/CheckOutItem.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;The Solution:&lt;/strong&gt; a modification to the .xoml file that tells the workflow to use &amp;ldquo;this item&amp;rdquo; regardless of the list. &lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; If you want to model an out of the box workflow, always copy and modify&amp;hellip;it is never a good idea to modify the out of the box global workflows directly. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Steps:&lt;/strong&gt; &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Set up your workflow with placeholders for your check-in and check-out actions. &lt;/li&gt;
&lt;li&gt;Add &amp;ldquo;Check out item in this list&amp;rdquo; and &amp;ldquo;Check in item in this list with Comment&amp;rdquo; actions to the appropriate steps on your workflow. a. 
&lt;ul&gt;
&lt;li&gt;Do not select a List. Leave the &amp;ldquo;this list&amp;rdquo; as is&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Save your workflow. &lt;/li&gt;
&lt;li&gt;Go &amp;ldquo;All Files&amp;rdquo;, &amp;ldquo;Workflows&amp;rdquo;, click on the workflow name in the window below &amp;ldquo;All files&amp;rdquo; so that your workflow displays it&amp;rsquo;s files in the window on the right side of the screen. 
&lt;ul&gt;
&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/CheckOut_5F00_OpenWorkflows.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/CheckOut_5F00_OpenWorkflows.gif" border="0" alt="" /&gt;&lt;/a&gt; 
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Right click on the .xoml file and click &amp;ldquo;Open With&amp;rdquo;, &amp;ldquo;SharePoint Designer (open as XML)&amp;rdquo; 
&lt;ul&gt;
&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/CheckOut_5F00_OpenWith.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/CheckOut_5F00_OpenWith.gif" border="0" alt="" /&gt;&lt;/a&gt; 
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Click Ctrl+F to find &amp;ldquo;CheckOutItemActivity&amp;rdquo; &lt;/li&gt;
&lt;li&gt;In that row you will see: ListItem={x:Null}&amp;rdquo; ListID=&amp;rdquo;{x:Null}&amp;rdquo; &lt;/li&gt;
&lt;li&gt;Replace &amp;ldquo;x:Null&amp;rdquo; in &amp;ldquo;ListItem=&amp;rdquo; with &amp;ldquo;ActivityBind ROOT, Path=__item&amp;rdquo; 
&lt;ul&gt;
&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/CheckOut_5F00_ListItem.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/CheckOut_5F00_ListItem.gif" border="0" alt="" /&gt;&lt;/a&gt; 
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Replace &amp;ldquo;x:Null&amp;rdquo; in &amp;ldquo;ListId=&amp;rdquo; with ActivityBindROOT, Path=__list&amp;rdquo; 
&lt;ul&gt;
&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/CheckOut_5F00_ListID.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/CheckOut_5F00_ListID.gif" border="0" alt="" /&gt;&lt;/a&gt; 
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Click &amp;ldquo;Ctrl+F&amp;rdquo; to find &amp;ldquo;CheckInItemActivity&amp;rdquo; &lt;/li&gt;
&lt;li&gt;Repeat steps 8 and 9 for this line item. 
&lt;ul&gt;
&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/CheckOut_5F00_Before_2D00_After.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/CheckOut_5F00_Before_2D00_After.gif" border="0" alt="" /&gt;&lt;/a&gt; 
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Save this file. &lt;/li&gt;
&lt;li&gt;Click on &amp;ldquo;Workflows&amp;rdquo; and click on the workflow name to open the workflow file as you normally would. &lt;/li&gt;
&lt;li&gt;Do not make any changes but click &amp;ldquo;Save&amp;rdquo; &lt;/li&gt;
&lt;li&gt;When Designer pops up to say that a different version of the .xoml file was saved, and politely asks if you want to replace that file with this one click &amp;ldquo;No&amp;rdquo;. &lt;/li&gt;
&lt;li&gt;Close Designer and re-open it &lt;/li&gt;
&lt;li&gt;Click on &amp;ldquo;Workflows&amp;rdquo; and click on your workflow to open and edit it. &lt;/li&gt;
&lt;li&gt;Find the step where you checked out and checked in the item. &lt;/li&gt;
&lt;li&gt;The action should say &amp;ldquo;Check out item in Current Item&amp;rdquo; and &amp;ldquo;Check in item in Current Item with comment: xxx&amp;rdquo; 
&lt;ul&gt;
&lt;a href="http://www.rightpoint.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/Check_5F00_OutCompleted.gif"&gt;&lt;img src="http://www.rightpoint.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/viewpoint/Check_5F00_OutCompleted.gif" border="0" alt="" /&gt;&lt;/a&gt; 
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I&amp;rsquo;m not sure why you have to close Designer and re-open it before you can see your changes, maybe it&amp;rsquo;s just my wonky machine, but I have to follow these steps exactly on order for the change to &amp;ldquo;take&amp;rdquo;. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&amp;nbsp; &lt;/strong&gt;Make sure that you do NOT have &amp;ldquo;end on change&amp;rdquo; feature turned on, or your workflow will stop immediately after making the change without checking the document back in.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2919" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Workflow/default.aspx">Workflow</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+Designer+2010/default.aspx">SharePoint Designer 2010</category></item><item><title>Resolving Workflow Association Errors Caused By Custom Master Pages</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2011/12/06/resolving-workflow-association-errors-caused-by-custom-master-pages.aspx</link><pubDate>Tue, 06 Dec 2011 06:39:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2918</guid><dc:creator>Chris Domino</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.rightpoint.com/community/blogs/viewpoint/rsscomments.aspx?PostID=2918</wfw:commentRss><comments>http://www.rightpoint.com/community/blogs/viewpoint/archive/2011/12/06/resolving-workflow-association-errors-caused-by-custom-master-pages.aspx#comments</comments><description>&lt;p class="Text"&gt;As part of my continuing saga of working with my hybrid Visual Studio &amp;quot;all code&amp;quot; / SharePoint Designer &amp;quot;no code&amp;quot; team, I&amp;#39;d like to discuss, which, compared to &lt;a target="_blank" href="http://chrisdomino.com/blog/post/SharePoint-Designer-And-Developer-Collaboration-Integrating-Site-Columns-Content-Types-and-SPD-Page-Layouts-Into-Visual-Studio-For-Proper-Deployment" class="Link"&gt;part 1&lt;/a&gt; and &lt;a target="_blank" href="http://chrisdomino.com/blog/post/SharePoint-Designer-Visual-Studio-Deployments-Part-Two-Fixing-Taxonomy-Metadata-And-Other-Issues-After-A-Site-Collection-Restore" class="Link"&gt;part 2&lt;/a&gt;, turned out to be a small issue. This time workflow is the name of the game. For this project, all workflows were created by our &amp;quot;native creative&amp;quot; folks using SharePoint Designer. The integration point revolved around creating a Visual Studio SharePoint 2010 workflow by way of a new empty workflow project whose template can suck in a WSP exported from a SharePoint Designer reusable workflow and go from there. Phew. Compared to the collaborations described in the previous parts, this one was actually the cleanest. &lt;/p&gt;
&lt;p class="Text"&gt;After generating the workflow project in Visual Studio and tweaking a few things, we could use standard SharePoint 2010 integration to package it into a WSP proper. Not only does this allow the entire team to access our workflow code without having to Email WSPs around, (which would be horribly tragic, being SharePoint professionals and all) but it also gives us the opportunity to get more and more of our project into TFS, allowing code creating in SharePoint Designer to participate in source control, automated builds, and version history. &lt;/p&gt;
&lt;p class="Text"&gt;The issue we ran into, however, wasn&amp;#39;t so much a function of the integration, but more so an unfortunate circumstance created by the particular combination of our master page and deploying these workflows via WSP; specifically, the WSP that came from SharePoint Designer, not Visual Studio. This is still significant, however, because what&amp;#39;s important is that the workflow was deployed via a solution package, not welded to the site directly via SharePoint Designer. &lt;/p&gt;
&lt;p class="Text"&gt;The problem was that, after associating the workflow with a document library and starting an instance of it with a particular document, whenever clicking the &amp;quot;Next&amp;quot; to go from the generic workflow add page to the specific association page as shown below... &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/Resolving-Workflow-Association-Errors-Caused-By-Custom-Master-Pages/WorkflowAdd.png" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;...we&amp;#39;d get the following error: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/Resolving-Workflow-Association-Errors-Caused-By-Custom-Master-Pages/WorkflowError.png" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Trolling the ULS logs, two different exceptions matched the correlation token: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;div class="Error"&gt;System.ArgumentNullException: Value cannot be null. Parameter name: g at System.Guid..ctor(String g) at Microsoft.Office.Workflow.WrkAssocPage.AssociationOnLoad(EventArgs ea) at Microsoft.Office.Workflow.CstWrkflIPPage.OnLoad(EventArgs ea) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)&lt;/div&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;And, more prevalently: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;div class="Error"&gt;System.Web.UI.ViewStateException: Invalid viewstate. Client IP: 127.0.0.1 Port: 50312 User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0) ViewState: /wEWBgLorcSLCQLvn5sfAu6fmx8C/v/6tg4C6f+yrA0Cs8//9g4r+4Aa9cVfyQ53TBQlRsx9AouMvQ== Referer: http://site.local/_layouts/AddWrkfl.aspx?List={A40293A6-58B7-40C3-918C-F854F0609180} Path: /_layouts/CstWrkflIP.aspx&lt;/div&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;ViewState. Ugh. None of the typical viewstate fixes worked: we weren&amp;#39;t dealing with &amp;quot;hard coded&amp;quot; machine keys, and viewstate itself wasn&amp;#39;t unexpectedly disabled (or enabled) by any specific controls, pages, or web.config files. It wasn&amp;#39;t until my SPD-er elucidated me to the fact that everything worked &lt;span class="Italic"&gt;just fine&lt;/span&gt; when using v4.master as the master page. So clearly, something on the mater page didn&amp;#39;t like something on the workflow association page. The fix? Dig through all 699 lines of HTML and figure out the offender. &lt;/p&gt;
&lt;p class="Text"&gt;Again: ugh. My approach was to go through and comment out, using SharePoint Designer, the inner HTML of each &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.contentplaceholder.aspx" class="Link"&gt;ContentPlaceholder&lt;/a&gt;. Dealing with twenty or so placeholders was less daunting then considering all lines at once, but it still sucked. However, I lucked out: the offender turned out to be an innocent-looking placeholder near the top of the file that contained a single line of code: the &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/ms463169.aspx" class="Link"&gt;DelegateControl&lt;/a&gt; that hosts a &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.portal.webcontrols.searchboxex.aspx" class="Link"&gt;SmallSearchInputBox&lt;/a&gt;. When I commented that delegate turd out, the workflows began to, well, work. &lt;/p&gt;
&lt;p class="Text"&gt;Here&amp;#39;s the full HTML of the ContentPlaceholder, in case you are using a common baseline SharePoint publishing master page and therefore might run into this: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;asp&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;ContentPlaceHolder&lt;/span&gt;&lt;span class="ClassName"&gt; id&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;ContentPlaceHolder1&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; runat&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;server&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;SharePoint&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;DelegateControl&lt;/span&gt;&lt;span class="ClassName"&gt; ID&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;DelegateControl4&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; runat&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;server&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; ControlId&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;SmallSearchInputBox&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; Version&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;4&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt; &lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;asp&lt;/span&gt;&lt;span class="Operator"&gt;:&lt;/span&gt;&lt;span class="Keyword"&gt;ContentPlaceHolder&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Like I said, the issue this time wasn&amp;#39;t explicitly due to the collaboration between SharePoint Designer and Visual Studio; it was more so caused by doing something Visual Studio-y from an output of SharePoint Designer. So if you get weird errors on your workflow association page while using a custom master page, check this specific line, or other general deviations from v4.master. Not only did I luck out by finding the offending line before losing my mind combing through page after page of SharePoint markup, but it also happened to be functionality that I could do without. We had a custom search UI, and therefore had no need for this delegate control. Of course, if we needed that line, we&amp;#39;d have to figure out how to do hack it or replace it with something that didn&amp;#39;t wreak havoc on our workflows. &lt;/p&gt;
&lt;p class="Text"&gt;Resolving Workflow Association Errors Caused By Custom Master Pages &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2918" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+Designer/default.aspx">SharePoint Designer</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Workflow/default.aspx">Workflow</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category></item><item><title>Combine, minify, compress, and cache bust JavaScript and CSS files with ClientDependency Framework</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2011/12/01/combine-minify-compress-and-cache-bust-javascript-and-css-files-with-clientdependency-framework.aspx</link><pubDate>Thu, 01 Dec 2011 19:42:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2917</guid><dc:creator>Jim Noellsch</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.rightpoint.com/community/blogs/viewpoint/rsscomments.aspx?PostID=2917</wfw:commentRss><comments>http://www.rightpoint.com/community/blogs/viewpoint/archive/2011/12/01/combine-minify-compress-and-cache-bust-javascript-and-css-files-with-clientdependency-framework.aspx#comments</comments><description>&lt;p&gt;With the increased mobile browser usage and search engines rewarding fast loading sites, squeezing extra bytes from the request is becoming increasingly important. It really comes down to two important issues: file size &amp;amp; number of requests. Web developers already employ various techniques to combat this such as image sprites, clean code, and IIS-based compression but we can take it a step further with our CSS &amp;amp; JS files using the ClientDependency Framework.&lt;/p&gt;  &lt;h2&gt;What is the ClientDependency Framework&lt;/h2&gt;  &lt;p&gt;The original purpose of ClientDependency was for the Umbraco Backoffice as a means to simplify the usage of &amp;lt;link&amp;gt; or &amp;lt;script&amp;gt; tags used on various controls or pages. With this, they were able to reference the particular dependencies for a single control or page and ClientDependency took care of rolling everything up. It would spit out a single tag per unique file even if a CSS or JS file was referenced more than once in multiple places. &lt;/p&gt;  &lt;p&gt;The team took this base feature set several steps further though. ClientDependency is also able to combine and cache all those individual files into as few HTTP requests as possible. It’s smart enough to both leave external CDN references as-is or go out and request code that isn’t local. Output is compressed (IIS is nice enough to not compress it again) and cached as local binary files, typically in the App_Data folder although you can specify this location. This cleverly allows the cached data to be resistant to any app pool reset. &lt;/p&gt;  &lt;p&gt;But what about local browser cache? You know that scenario where you’ve made a change and uploaded it but the client can’t see it without a hard refresh or clearing the cache? ClientDependency also implements a standard cache busting mechanism by applying a version number to the end of the file path.&lt;/p&gt;  &lt;p&gt;To top it all off, they even added minification by utilizing the very efficient JSMin and CSSMin libraries. In my experience, I’ve had some weird conflicts on certain libraries and it also chokes easily on syntax errors so they aren’t perfect but there are a few easy workarounds: fix your code (ideal), reference the problematic file old school (meh), or turn off this feature via the config (last resort). &lt;/p&gt;  &lt;p&gt;And for the incredibly lazy, there is even a catch-all method that handles what they term “rogue” scripts, aka files or JSON that you either didn’t/can’t wrap with special controls.&lt;/p&gt;  &lt;h2&gt;Installing&lt;/h2&gt;  &lt;p&gt;The easiest method to include ClientDependency within your existing project is via NuGet. &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open Visual Studio and ensure you have the &lt;strong&gt;NuGet Package Manager&lt;/strong&gt; extension. If you don’t have it, open up Visual Studio’s Extension Manager, search for “NuGet”, and install it.&lt;/li&gt;    &lt;li&gt;Fire up your ASP.NET project (WebForms or MVC).&lt;/li&gt;    &lt;li&gt;Ensure your Package Manager Console is open (&lt;strong&gt;View &amp;gt; Other Windows &amp;gt; Package Manager Console&lt;/strong&gt;). &lt;/li&gt;    &lt;li&gt;Run the following NuGet command: &lt;strong&gt;Install-Package ClientDependency&lt;/strong&gt; (For MVC-based projects, use &lt;strong&gt;Install-Package ClientDependency-Mvc&lt;/strong&gt;)&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;em&gt;NOTE: If you’re using Umbraco, it’s even easier because as of version 4.1, ClientDependency ships alongside the Umbraco bits. The modules, handlers, and configuration are already included and referenced correctly.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;So…what just happened?&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;A packages.config file was added. This is NuGet package tracking goo and can be ignored.&lt;/li&gt;    &lt;li&gt;The ClientDependency.Core.dll (and/or ClientDependency.Core.Mvc.dll) was added as a project reference.&lt;/li&gt;    &lt;li&gt;A handler and module definition was added to the web.config.&lt;/li&gt;    &lt;li&gt;A special configuration section named &lt;strong&gt;clientDependency&lt;/strong&gt; was added to the end of the web.config. For more information about what these different configuration properties do, refer to the &lt;a href="http://clientdependency.codeplex.com/wikipage?title=Configuration&amp;amp;referringTitle=Documentation" target="_blank"&gt;documentation&lt;/a&gt;. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;At this point, I like to pull out the entire clientDependency element and put it in a separate config file for clarity but that’s up to you. Just use &lt;strong&gt;&amp;lt;clientDependency configSource=”FLDR\PATH_TO_CONFIG” /&amp;gt;&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;It’s a tad complex but the creators have done a terrific job with extensibility points and providers. The immediate config attributes to be concerned with are clientDependency/@version and system.web/complication/@debug.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;version&lt;/strong&gt;: Will re-cache any changed files. You can also delete the temporary files in App_Data to force a re-cache as an alternative.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;debug&lt;/strong&gt;: Toggling this from false to true either merges all of the dependencies together (debug=”false”) or renders each tag separately (debug=”true”). When you’re coding locally, you’ll definitely want to leave this as true. Occasionally flip it though to identify any syntax conflicts early.&lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Implementing&lt;/h2&gt;  &lt;h3&gt;Using ClientDependency in Web Forms&lt;/h3&gt;  &lt;ol&gt;   &lt;li&gt;Add your page declarative to the ClientDependency.Core assembly and ClientDependency.Core.Controls namespace. Alternatively, you could add this to your web.config under system.web/pages/controls.&lt;/li&gt;    &lt;li&gt;Wrap each CSS file with a CssInclude control.&lt;/li&gt;    &lt;li&gt;Wrap each JS file with a JsInclude control. Use the Priority attribute to force order files.&lt;/li&gt;    &lt;li&gt;Place a ClientDependencyLoader control where you want your &amp;lt;link&amp;gt; &amp;amp; &amp;lt;script&amp;gt; tags to be rendered.&lt;/li&gt;    &lt;li&gt;Ensure your project is using IISExpress (we’re running modules and handlers here) and F5 your site.&lt;/li&gt; &lt;/ol&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;&lt;span style="background-color:#ffff00;"&gt;&amp;lt;%@ Master Language=&amp;quot;C#&amp;quot; AutoEventWireup=&amp;quot;true&amp;quot; CodeBehind=&amp;quot;Site.master.cs&amp;quot; Inherits=&amp;quot;WebForms.SiteMaster&amp;quot; %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#ffff00;"&gt;&amp;lt;%@ Register Assembly=&amp;quot;ClientDependency.Core&amp;quot; Namespace=&amp;quot;ClientDependency.Core.Controls&amp;quot; TagPrefix=&amp;quot;cd&amp;quot; %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color:#800000;"&gt;DOCTYPE&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;html&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;PUBLIC&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;quot;-//W3C//DTD XHTML 1.0 Strict//EN&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;html&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;xmlns&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;xml:lang&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;en&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;head&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;runat&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;title&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;title&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;cd:ClientDependencyLoader&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;cdLoader&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;runat&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;cd:CssInclude&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;cssincStyles&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;runat&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;FilePath&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;~/Styles/site.css&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;cd:JsInclude&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;jssincJquery&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;runat&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;FilePath&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;~/Scripts/jquery.1.4.1.min.js&amp;quot; &lt;span style="color:#ff0000;"&gt;Priority&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;cd:JsInclude&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;jssincCustom&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;runat&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;FilePath&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;~/Scripts/custom.js&amp;quot; &lt;span style="color:#ff0000;"&gt;Priority&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:ContentPlaceHolder&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;HeadContent&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;runat&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:ContentPlaceHolder&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;head&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;But what does it look like on the browser? The multiple files are converted to &amp;lt;link&amp;gt; and &amp;lt;script&amp;gt; tags that include a path to the handler, a hash to represent the files, and a version number.&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color:#800000;"&gt;DOCTYPE&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;html&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;PUBLIC&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;quot;-//W3C//DTD XHTML 1.0 Strict//EN&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;html&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;xmlns&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;xml:lang&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;en&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;head&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;title&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Home Page&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;title&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;link&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;href&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;/DependencyHandler.axd/acaf610bf78766b61ad7b090b2186d62.1.css&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;text/css&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;rel&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;script&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;src&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;/DependencyHandler.axd/b0340c2a8c1565a01701c1f8bbeee479.1.js&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;script&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;head&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;h3&gt;Using ClientDependency in Composite Controls&lt;/h3&gt;

&lt;p&gt;Since there is no HTML design-time support for composite controls, the ClientDependency framework also allows you to attribute define dependencies for the class.&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Web.UI;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; ClientDependency.Core;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; Controls&lt;br /&gt;{&lt;br /&gt;    [ClientDependency(ClientDependencyType.Css, &lt;span style="color:#006080;"&gt;&amp;quot;~/Css/CustomControl.css&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; CustomControl : Control&lt;br /&gt;    {&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;h3&gt;Using ClientDependency in MVC&lt;/h3&gt;

&lt;p&gt;The process is similar to WebForms but instead of control references, you use Html Helpers. You also need the extra ClientDependency.Core.Mvc.dll and remember, there is a separate NuGet package for the MVC-based flavor (Install-Package ClientDependency-Mvc). Also, if you’re using Razor, output is automatically HTML escaped so we have to wrap the Html.RenderJsHere() and Html.RenderCssHere() with the @MvcHtmlString.Create() helper method.&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;@using ClientDependency.Core&lt;br /&gt;@using ClientDependency.Core.Mvc&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color:#800000;"&gt;DOCTYPE&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;html&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;html&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;head&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;title&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;@ViewBag.Title&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;title&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    @{&lt;br /&gt;        Html.RequiresCss(&amp;quot;~/Content/Site.css&amp;quot;);&lt;br /&gt;        Html.RequiresJs(&amp;quot;~/Scripts/jquery-1.4.4.min.js&amp;quot;, 0);&lt;br /&gt;        Html.RequiresJs(&amp;quot;~/Scripts/custom.js&amp;quot;, 1);&lt;br /&gt;    }&lt;br /&gt;    @MvcHtmlString.Create(@Html.RenderJsHere())&lt;br /&gt;    @MvcHtmlString.Create(@Html.RenderCssHere())&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;head&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;h2&gt;Testing&lt;/h2&gt;

&lt;p&gt;So far so good. But what about a real world example of the performance gains? Using FireBug with browser cache disabled, I compared a site with and without ClientDependency enabled.&lt;/p&gt;

&lt;p&gt;DISABLED&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;CSS size: &lt;strong&gt;61.8 KB&lt;/strong&gt;&lt;/li&gt;

  &lt;li&gt;JS size: &lt;strong&gt;225.0 KB&lt;/strong&gt; (jQuery + Omniture)&lt;/li&gt;

  &lt;li&gt;Total size:&amp;#160; &lt;strong&gt;286.6 KB&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ENABLED&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;CSS size: &lt;strong&gt;11.3 KB&lt;/strong&gt;&lt;/li&gt;

  &lt;li&gt;JS size: &lt;strong&gt;149.4 KB &lt;/strong&gt;(Omniture still excluded)&lt;/li&gt;

  &lt;li&gt;Total size: &lt;strong&gt;160.7 KB&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Boom! You’re looking at page weight savings of over &lt;u&gt;55%&lt;/u&gt;.&lt;/p&gt;

&lt;h2&gt;Summary&lt;/h2&gt;

&lt;p&gt;The ClientDependency Framework is a dead-simple way for you to combine, minify, compress, server cache, and client cache bust your JavaScript and CSS files. It’s extremely simple to implement and “just works”. With it’s extensibility areas, provider model, and options for WebForms, MVC, and Composite Controls, most of your uses cases are covered.&amp;#160; Even though &lt;a href="http://weblogs.asp.net/scottgu/archive/2011/11/27/new-bundling-and-minification-support-asp-net-4-5-series.aspx" target="_blank"&gt;.NET 4.5 is introducing a similar bundling and minification support&lt;/a&gt; baked in, you’ve got current projects to finish and existing ones to support. I love this framework because you can see immediate decreases in page load times and total bytes transferred with minimal effort. &lt;/p&gt;

&lt;p&gt;Hope this helps,
  &lt;br /&gt;Jim&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2917" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Umbraco/default.aspx">Umbraco</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/CSS/default.aspx">CSS</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/ClientDependency/default.aspx">ClientDependency</category></item><item><title>Passing Data To Partial Views That Submit In ASP.NET MVC 2</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2011/11/28/passing-data-to-partial-views-that-submit-in-asp-net-mvc-2.aspx</link><pubDate>Mon, 28 Nov 2011 06:34:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2916</guid><dc:creator>Chris Domino</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.rightpoint.com/community/blogs/viewpoint/rsscomments.aspx?PostID=2916</wfw:commentRss><comments>http://www.rightpoint.com/community/blogs/viewpoint/archive/2011/11/28/passing-data-to-partial-views-that-submit-in-asp-net-mvc-2.aspx#comments</comments><description>&lt;p class="Text"&gt;I was presented with an interesting issue in an ASP.NET MVC 2 application. Basically, I had a strongly-typed partial view that submitted data. In addition to consuming, validating, and transmitting its model to the controller, the partial view also needed to pass some &amp;quot;loose&amp;quot; data from its parent view through to the controller as well. &lt;/p&gt;
&lt;p class="Text"&gt;This is interesting because, looking back over all the old MVC code I had written, I&amp;#39;ve never before had a partial view that submitted data. But submittals from a partial shouldn&amp;#39;t be any different than a normal view, so I didn&amp;#39;t think anything of it. However, a few hours later, when I was still neither successfully passing in nor returning information from my controller, I began to question whether or not submitting data from a partial view was a good idea at all. &lt;/p&gt;
&lt;p class="Text"&gt;Turns out, it&amp;#39;s really not, but I&amp;#39;ll still go ahead and describe the work around anyway. The reason I wouldn&amp;#39;t recommend submitting data form a partial is because if two or more of them wind up on the same parent view, you&amp;#39;ll get an invocation of the respondent controller&amp;#39;s &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.web.mvc.actionresult.aspx" class="Link"&gt;ActionResult&lt;/a&gt; for each instance of the partial. For example, consider a view bound to a model that has a collection of child models. For this example, let&amp;#39;s say it contains three items. If we use a for loop to render a partial for each child model, we&amp;#39;ll get three HTML forms. The problem is that even if the user only fills out &lt;span class="Italic"&gt;one&lt;/span&gt; of the forms, you&amp;#39;ll get three calls to the controller, resulting in duplicate data. &lt;/p&gt;
&lt;p class="Text"&gt;The first approach I attempted was to use the overload to the &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/dd470561.aspx" class="Link"&gt;HTML.RenderPartial&lt;/a&gt; method that sets the model for the specified partial view, as well as passes in a &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.web.mvc.viewdatadictionary.aspx" class="Link"&gt;ViewDataDictionary&lt;/a&gt; to hold the aforementioned &amp;quot;loose&amp;quot; values. This kind of didn&amp;#39;t work at all. At first, the ViewDataDictionary was empty in the controller. Then, after some tweaking, I got further, or actually less further, as the controller&amp;#39;s ActionResult stopped firing altogether after a form submittal. Usually when you screw up a route like this in MVC, you get either the generic &amp;quot;Resource cannot be found&amp;quot; error page, or an exception is thrown, depending on how offensive your bug is. However, in my case, the page spun and refreshed while the controller just silently failed, leaving me nothing to work with. &lt;/p&gt;
&lt;p class="Text"&gt;So I switched gears and changed my HTML.RenderPartial method to an &lt;a target="_blank" class="Link"&gt;HTML.RenderAction&lt;/a&gt;, specifying the name of my partial view, the controller to use for rendering, and the anonymous type that maps to the controller&amp;#39;s ActionResult parameters. I&amp;#39;ve always used RenderPartial to, well, render partial views; RenderAction was reserved for edge cases when I had to creatively do some code-behind-ish typed things (a la web forms) to get the desired HTML on my MVC page. &lt;/p&gt;
&lt;p class="Text"&gt;Like I said, it took me some time to convince myself to attempt this method. Why? Because, although the anonymous type satisfies the &amp;quot;loose&amp;quot; parameters, what about the model? Here&amp;#39;s the signature of my controller&amp;#39;s ActionResult: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;[&lt;/span&gt;&lt;span class="ClassName"&gt;HttpPost&lt;/span&gt;&lt;span class="Operator"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;[&lt;/span&gt;&lt;span class="ClassName"&gt;ValidateAntiForgeryToken&lt;/span&gt;&lt;span class="Operator"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="ClassName"&gt;ActionResult&lt;/span&gt; Create&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;BlogModel&lt;/span&gt; blog&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Guid&lt;/span&gt; someId&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Guid&lt;/span&gt; someOtherId&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Since the first argument above is a model, how does that match up to the following invocation - that works - called from the parent view? &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;%&lt;/span&gt; &lt;span class="ClassName"&gt;Html&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;RenderAction&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;Create&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Constant"&gt;&amp;quot;Blog&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Keyword"&gt;new&lt;/span&gt; &lt;span class="Operator"&gt;{&lt;/span&gt; someId &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="ClassName"&gt;Model&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;SomeId&lt;span class="Operator"&gt;,&lt;/span&gt; someOtherId &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="ClassName"&gt;Model&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;SomeOtherIdId &lt;span class="Operator"&gt;}&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt; &lt;span class="Operator"&gt;%&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;The answer is by the magic of MVC. All we have to do is add the following &amp;quot;default&amp;quot; ActionResult: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="ClassName"&gt;ActionResult&lt;/span&gt; Create&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//render view&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;return&lt;/span&gt; &lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;View&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;And the partial view will load. The magic comes into play when the form is submitted, as it takes the model from the post, and maps that, along with the values of the anonymous type, appropriately to the method arguments. So don&amp;#39;t psyche yourself out like I did, comparing the parameters set in a proper call to RenderAction a bit too literally to a controller&amp;#39;s ActionResult&amp;#39;s signature. As long as you have everything wired up correctly, MVC will make sure the post, the model, and the loose parameters all make their way to the server. &lt;/p&gt;
&lt;p class="Text"&gt;So my take-away is this: only use partial views for displaying data. Although it&amp;#39;s not that hard, it&amp;#39;s still a bit involved to wire everything up correctly in order to render partials that &amp;quot;support&amp;quot; form submittals. And since this wiring can easy get hacky, be careful. MVC is such a clean design pattern that it inspires an attitude in me where if something I&amp;#39;m doing just feels wrong, then there&amp;#39;s probably a better way to accomplish it. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2916" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/MVC/default.aspx">MVC</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Partial+Views/default.aspx">Partial Views</category></item><item><title>SharePoint Designer / Visual Studio Deployments Part Two: Fixing Taxonomy Metadata (And Other) Issues After A Site Collection Restore</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2011/11/17/sharepoint-designer-visual-studio-deployments-part-two-fixing-taxonomy-metadata-and-other-issues-after-a-site-collection-restore.aspx</link><pubDate>Thu, 17 Nov 2011 23:19:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2915</guid><dc:creator>Chris Domino</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.rightpoint.com/community/blogs/viewpoint/rsscomments.aspx?PostID=2915</wfw:commentRss><comments>http://www.rightpoint.com/community/blogs/viewpoint/archive/2011/11/17/sharepoint-designer-visual-studio-deployments-part-two-fixing-taxonomy-metadata-and-other-issues-after-a-site-collection-restore.aspx#comments</comments><description>&lt;p class="Text"&gt;
&lt;div class="SectionHeader"&gt;Background&lt;/div&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;For the past month or so, I&amp;#39;ve been architecting a whirlwind SharePoint 2010 project. My current team is comprised of both SharePoint developers (working in Visual Studio) and SharePoint configurators (working in SharePoint Designer). This has made for a lot of interesting technical collaborations as well as debates over what should be implemented in code and what shouldn&amp;#39;t. This post is part two of the tale; &lt;a target="_blank" href="http://chrisdomino.com/blog/post/SharePoint-Designer-And-Developer-Collaboration-Integrating-Site-Columns-Content-Types-and-SPD-Page-Layouts-Into-Visual-Studio-For-Proper-Deployment" class="Link"&gt;part one&lt;/a&gt; discussed the approach and technical details behind this collaboration and the nuances around deploying assets created in SharePoint Designer from Visual Studio WSPs. &lt;/p&gt;
&lt;p class="Text"&gt;Now that we&amp;#39;ve made it through the deployments, I&amp;#39;d like to use part two to share the pain points. I realize that discussing all the things that went wrong, in detail, seems pessimistic, but look at it this way: everything &lt;span class="Italic"&gt;else&lt;/span&gt; worked perfectly! There are two main types of problems that resulted from this collaboration that I&amp;#39;d like to discuss: weirdness with SharePoint assets (page layouts, site columns, and content types) deployed as feature elements, and taxonomy issues. &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;div class="SectionHeader"&gt;Deployment Issues&lt;/div&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;&lt;span class="Underline"&gt;Site Column Updates&lt;/span&gt; &lt;/p&gt;
&lt;p class="Text"&gt;The first issue we noticed was that the following love note would be displayed whenever a field was updated (either through the UI or programmatically): &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/SharePoint-Designer-Visual-Studio-Deployments-Part-Two-Fixing-Taxonomy-Metadata-And-Other-Issues-After-A-Site-Collection-Restore/UpdateSiteColumn.png" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;
&lt;div class="Error"&gt;&amp;quot;The object has been updated by another user since it was last fetched.&amp;quot;&lt;/div&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Ugh. After pouring over the XML that defined these fields, I noticed something interesting: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;Elements&lt;/span&gt;&lt;span class="ClassName"&gt; xmlns&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;http://schemas.microsoft.com/sharepoint/&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Keyword"&gt;Field&lt;/span&gt;&lt;span class="ClassName"&gt; Type&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;TaxonomyFieldTypeMulti&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; DisplayName&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Across the Movement&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; List&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;{e85017b8-e168-44e1-addf-623d97242b7a}&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; WebId&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;f45e7816-bb4f-4e19-b2da-a924bed6b658&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; ShowField&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;Term10&lt;span class="Operator"&gt;33&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; Required&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;FALSE&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; EnforceUniqueValues&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;FALSE&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; Mult&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;TRUE&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; Sortable&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;FALSE&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; Group&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;_Exchange Columns&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; ID&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;{2f9067c0-22f9-4354-ae21-e4dc35cd39d7}&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; SourceID&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;{f45e7816-bb4f-4e19-b2da-a924bed6b658}&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; StaticName&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;AcrossMovement&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; Name&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;AcrossMovement&lt;span class="Operator"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ClassName"&gt; Version&lt;/span&gt;&lt;span class="Operator"&gt;=&amp;quot;&lt;/span&gt;3&lt;span class="Operator"&gt;&amp;quot; /&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Operator"&gt;/&lt;/span&gt;&lt;span class="Keyword"&gt;Elements&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Scroll all the way to the right of Line #2. See the &amp;quot;Version&amp;quot; attribute? That was the culprit. From what I can intuit, this site column was updated via the UI three separate times in production. Then, after being backed up (by way of the site collection) and restored to development, even though the field &lt;span class="Italic"&gt;thought&lt;/span&gt; it was in it&amp;#39;s the third version, the content database only had one version (since backups don&amp;#39;t capture versioning). I feel like this was confusing things; how would SharePoint load the third version of something if there&amp;#39;s only a single one in the database? BOOM! I dropped this attribute, redeployed the WSP, and the issue went away. &lt;/p&gt;
&lt;p class="Text"&gt;&lt;span class="Underline"&gt;Patch Up Code&lt;/span&gt; &lt;/p&gt;
&lt;p class="Text"&gt;After these assets were imported, all new content types and site columns were created via code, so that everything had the same ids in all environments. Whenever I had to reference an existing site column for a new content type, I had to create a constant holding its guid (taken from the proper Elements.xml file) so I could refer to the field by id. This way, there&amp;#39;s no messing around with strings or column internal names. This type of SPD/VS integration code isn&amp;#39;t bad at all &lt;/p&gt;
&lt;p class="Text"&gt;However, there were certain issues that required some more detailed logic to work around. A good example: I noticed that it&amp;#39;s possible to deploy lookup fields via XML when the list they point to doesn&amp;#39;t exist. This renders these columns useless. Refer back to the field markup above. There are guid-references to webs and lists that are not guaranteed to exist in a restored environment. I assumed that any such broken references would at least throw some kind of error when deployed; they silently fail instead. &lt;/p&gt;
&lt;p class="Text"&gt;And of course, you can&amp;#39;t change the lookup list either via the UI or programmatically after the fact; even though &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/ms459069(v=office.14)" class="Link"&gt;SPFieldLookup.LookupList&lt;/a&gt; isn&amp;#39;t read only, an exception is thrown if you try to set it (follow the previous link for details). So here&amp;#39;s some code to adjust the lookup list of existing lookup columns: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//get web, field, and list&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;SPWeb&lt;/span&gt; web &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="ClassName"&gt;SPContext&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Current&lt;span class="Operator"&gt;.&lt;/span&gt;Web&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;SPFieldLookup&lt;/span&gt; field &lt;span class="Operator"&gt;=&lt;/span&gt; web&lt;span class="Operator"&gt;.&lt;/span&gt;Fields&lt;span class="Operator"&gt;.&lt;/span&gt;GetFieldByInternalName&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;&amp;lt;internal name of lookup field&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt; &lt;span class="Keyword"&gt;as&lt;/span&gt; &lt;span class="ClassName"&gt;SPFieldLookup&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;SPList&lt;/span&gt; list &lt;span class="Operator"&gt;=&lt;/span&gt; web&lt;span class="Operator"&gt;.&lt;/span&gt;Lists&lt;span class="Operator"&gt;.&lt;/span&gt;TryGetList&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;&amp;lt;title of lookup list&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//update lookup list id&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;field&lt;span class="Operator"&gt;.&lt;/span&gt;SchemaXml &lt;span class="Operator"&gt;=&lt;/span&gt; field&lt;span class="Operator"&gt;.&lt;/span&gt;SchemaXml&lt;span class="Operator"&gt;.&lt;/span&gt;Replace&lt;span class="Operator"&gt;(&lt;/span&gt;field&lt;span class="Operator"&gt;.&lt;/span&gt;LookupList&lt;span class="Operator"&gt;,&lt;/span&gt; list&lt;span class="Operator"&gt;.&lt;/span&gt;ID&lt;span class="Operator"&gt;.&lt;/span&gt;ToString&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//update lookup web id&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;field&lt;span class="Operator"&gt;.&lt;/span&gt;SchemaXml &lt;span class="Operator"&gt;=&lt;/span&gt; field&lt;span class="Operator"&gt;.&lt;/span&gt;SchemaXml&lt;span class="Operator"&gt;.&lt;/span&gt;Replace&lt;span class="Operator"&gt;(&lt;/span&gt;field&lt;span class="Operator"&gt;.&lt;/span&gt;LookupWebId&lt;span class="Operator"&gt;.&lt;/span&gt;ToString&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; web&lt;span class="Operator"&gt;.&lt;/span&gt;ID&lt;span class="Operator"&gt;.&lt;/span&gt;ToString&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//save&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;field&lt;span class="Operator"&gt;.&lt;/span&gt;Update&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;true&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;By using the &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfield.schemaxml(v=office.14).aspx" class="Link"&gt;SPField.SchemaXml&lt;/a&gt; property, we can get the control we need to force the lookup list for the lookup field. Of course, you should only do this when the list reference is broken and the field is essentially dead; merely wanting to point a perfectly fine lookup field to a new list is bad news, as this will orphan a lot of your existing lookup data. &lt;/p&gt;
&lt;p class="Text"&gt;Although code like this is fun, it&amp;#39;s also totally hacky. A way better approach is to provision the entire site collection programmatically so that everything is guid-consistant across all machines; that&amp;#39;s a much larger conversation for a different time. And like I said, since this is hybrid team, all of our approaches, when it wasn&amp;#39;t too difficult or political to disseminate a task strictly down the Visual Studio or SharePoint Designer route, will be hybrid as well. So configurators can do what they do out-of-the-box, and developers can do what they do to make it deployable. Code, therefore, is the glue that binds this whole wonderful mess together. &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;div class="SectionHeader"&gt;Page Layout Code Behind&lt;/div&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Another thing that broke from part one: page layouts with code behind. We noticed that after provisioning a page with one of our layouts, SharePoint publishing sort of disappeared. The &amp;quot;Publish&amp;quot; tab vanished from the ribbon when the page was in edit mode, and all the nice versioning tools (&amp;quot;Save &amp;amp; Close,&amp;quot; &amp;quot;Check In/Out,&amp;quot; etc.) were reverted to the WSS-y equivalents, which are just &amp;quot;Save&amp;quot; and &amp;quot;Cancel.&amp;quot; Well the problem turned out to be the code behind of our custom page layouts. &lt;/p&gt;
&lt;p class="Text"&gt;Any hand-rolled SharePoint page layout must inherit from &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.publishing.publishinglayoutpage.aspx" class="Link"&gt;PublishingLayoutPage&lt;/a&gt;. We all know this. What I &lt;span class="Italic"&gt;didn&amp;#39;t&lt;/span&gt; know was that this situation doesn&amp;#39;t seem to support polymorphism. I created a class that inherits from PublishingLayoutPage, and had all my pages inherit from that. Although it &amp;quot;works&amp;quot; (inasmuch as it complies and you can provision pages with code behind) it breaks the publishing infrastructure as described above. After the issue was raised to me, on a hunch, I tore out the base class, reverted all inheritance back to PublishingLayoutPage, redeployed, and it worked. &lt;/p&gt;
&lt;p class="Text"&gt;I can only guess that when the publishing infrastructure interrogates the page layout for publishing support, it checks to see if it explicitly inherits from the proper base class, rather than if it&amp;#39;s &lt;span class="Italic"&gt;derived&lt;/span&gt; from it. This might be a bug, but I can see Microsoft writing code to not support polymorphism here. They can&amp;#39;t make the class sealed, so instead it&amp;#39;s more of a roundabout kludge to discourage us from such implementations that could break publishing. I think this is the case because of other &amp;quot;discouragements&amp;quot; I&amp;#39;ve seen in this corner of SharePoint, such as &lt;a target="_blank" href="http://chrisdomino.com/blog/post/How-To-Have-Multiple-Publishing-Pages-Libraries-In-A-Single-Web" class="Link"&gt;not supporting multiple page libraries in a single site&lt;/a&gt;. There are many ways to get common functionality working without polymorphism (interfaces, static utility methods, attribution, etc.) so this isn&amp;#39;t a show stopper. &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;div class="SectionHeader"&gt;Taxonomy&lt;/div&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;Somehow, only just now have I delved into the world of SharePoint taxonomy; none of my other 2010 projects have required it. Based on what I&amp;#39;ve heard about and read about taxonomy, I assumed it was a nice little hierarchical list of terms with metadata, permissions, etc. But no. Instead it&amp;#39;s this &lt;span class="Italic"&gt;thing&lt;/span&gt;; it&amp;#39;s this monstrosity that, in my opinion, is super complicated, super fragile, and, well, super difficult to work with for the unassuming SharePoint developer. What it does is great. However, the fact that there are hidden fields, obscure lookups, &amp;quot;catch all&amp;quot; columns, and other weirdness imply to me that although the thought was good, the implementation was rushed and sloppy. &lt;/p&gt;
&lt;p class="Text"&gt;But if SharePoint was judged strictly based on what was found under the hood and behind the scenes, the product would never have gained the popularity it now deserves and enjoys. In most cases, with out-of-the-box components, as long as it works, and the API isn&amp;#39;t too horrible (if I need to customize things), I&amp;#39;m fine with it. However, if components are indeed poorly designed, then their flaws will quickly become &lt;span class="Italic"&gt;your&lt;/span&gt; problems as soon as your application that depends on them wanders off the happy path. &lt;/p&gt;
&lt;p class="Text"&gt;The happy path divergence I&amp;#39;d like to discuss here is the persistence of managed metadata columns through site collection backups and restores. Like I said, the deployment from part one went well - or so I thought. It was only after backing up and restoring to our development environment, however, did all kinds of weird publishing errors around creating new pages, adding content types to lists, saving site columns, etc. begin to appear. We all know how often the following phrase is muttered after a deployment: &amp;quot;It erred in prod? But it worked fine in dev!&amp;quot; Well this scenario, interestingly enough, fell victim to &lt;span class="Italic"&gt;the opposite&lt;/span&gt; of this common development problem. &lt;/p&gt;
&lt;p class="Text"&gt;I was able to track most of these issues down to managed metadata being extremely unmanageable. We all know that metadata columns have to be rewired to the proper term store as they are promoted through the environments. However, this problem was deeper: metadata columns seemed not only unhinged from their taxonomy, but from their content types as well. What happened is that the metadata fields didn&amp;#39;t import properly into Visual Studio; the lookup column to the hidden taxonomy list was broken, and none of the hidden note fields came over. &lt;/p&gt;
&lt;p class="Text"&gt;Here are some of the error messages I came across: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/SharePoint-Designer-Visual-Studio-Deployments-Part-Two-Fixing-Taxonomy-Metadata-And-Other-Issues-After-A-Site-Collection-Restore/DuplicateSiteColumn.png" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;
&lt;div class="Error"&gt;&amp;quot;A duplicate field name &amp;quot;[field name]TaxHTField0&amp;quot; was found.&amp;quot;&lt;/div&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;This happened whenever adding a new content type to a pages library. The best I can assume is that SharePoint was attempting to create a new hidden note field for the taxonomy column every time because one wasn&amp;#39;t wired up proper. Here&amp;#39;s another: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/SharePoint-Designer-Visual-Studio-Deployments-Part-Two-Fixing-Taxonomy-Metadata-And-Other-Issues-After-A-Site-Collection-Restore/MetadataField.png" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;
&lt;div class="Error"&gt;&amp;quot;Failed to get the value of the &amp;quot;[field name]&amp;quot; column from the &amp;quot;Managed Metadata&amp;quot; field type control. See details in log. Exception message: Invalid field name. [id of field or internal name of field] [URL of site] /Pages.&amp;quot;&lt;/div&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;This is caused by the metadata column not being wired up to the correct taxonomy term store. Such a scenario can also present itself by rendering &amp;quot;disabled&amp;quot; metadata field controls when the page is in edit mode (or you&amp;#39;re viewing the page&amp;#39;s properties): &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;p class="Image"&gt;&lt;img src="http://chrisdomino.com/content/images/SharePoint-Designer-Visual-Studio-Deployments-Part-Two-Fixing-Taxonomy-Metadata-And-Other-Issues-After-A-Site-Collection-Restore/GrayedOutMetadata.png" class="Image" alt="" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;The fix to all these issues is two-fold: wire in the correct term store for each field, and drop/re-add all taxonomy columns from/to their content types. The only issue with this is that the values on the restored pages for these fields will be invalid, but since we&amp;#39;re storing to development, we don&amp;#39;t care. To get around this, provision all metadata (fields, term stores, and even the group) via code with static guids. I will present code that does this in a later publication. &lt;/p&gt;
&lt;p class="Text"&gt;I implemented this as a site collection feature that gets activated upon a restore. This code is &lt;span class="Bold"&gt;never&lt;/span&gt; to be run in production, as it will result in the aforementioned loss of taxonomy metadata. I have separate PowerShell scripts for deployments to different environments to ensure I don&amp;#39;t make this mistake. (I will also describe these scripts in a later post.) Let&amp;#39;s take a look at the FeatureActivated method of the feature receiver: &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;table cellpadding="0" cellspacing="0" class="CodeLayout"&gt;
&lt;tbody&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellTopLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellTopRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellMiddleLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleMiddle"&gt;
&lt;div class="CodeContainer"&gt;
&lt;div class="CodeLayout"&gt;&lt;ol class="Code"&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;#region&lt;/span&gt; Events&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;public&lt;/span&gt; &lt;span class="Keyword"&gt;override&lt;/span&gt; &lt;span class="Keyword"&gt;void&lt;/span&gt; FeatureActivated&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;SPFeatureReceiverProperties&lt;/span&gt; properties&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//initialization&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;SPSite&lt;/span&gt; site &lt;span class="Operator"&gt;=&lt;/span&gt; properties&lt;span class="Operator"&gt;.&lt;/span&gt;Feature&lt;span class="Operator"&gt;.&lt;/span&gt;Parent &lt;span class="Keyword"&gt;as&lt;/span&gt; &lt;span class="ClassName"&gt;SPSite&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;SPWeb&lt;/span&gt; web &lt;span class="Operator"&gt;=&lt;/span&gt; site&lt;span class="Operator"&gt;.&lt;/span&gt;RootWeb&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//get content types to fix&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;SPContentType&lt;/span&gt; page &lt;span class="Operator"&gt;=&lt;/span&gt; web&lt;span class="Operator"&gt;.&lt;/span&gt;TryGetStandardContentType&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;ContentType&lt;span class="Operator"&gt;.&lt;/span&gt;CustomPageId&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;SPContentType&lt;/span&gt; document &lt;span class="Operator"&gt;=&lt;/span&gt; web&lt;span class="Operator"&gt;.&lt;/span&gt;TryGetStandardContentType&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;ContentType&lt;span class="Operator"&gt;.&lt;/span&gt;CustomDocumentId&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//remove metadata columns&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;RemoveColumn&lt;span class="Operator"&gt;(&lt;/span&gt;page&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;SiteColumns&lt;span class="Operator"&gt;.&lt;/span&gt;TaxColumnId&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;SiteColumns&lt;span class="Operator"&gt;.&lt;/span&gt;TaxColumnNoteId&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;RemoveColumn&lt;span class="Operator"&gt;(&lt;/span&gt;page&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;SiteColumns&lt;span class="Operator"&gt;.&lt;/span&gt;AnotherTaxColumnId&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;SiteColumns&lt;span class="Operator"&gt;.&lt;/span&gt;AnotherTaxColumnNoteId&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;RemoveColumn&lt;span class="Operator"&gt;(&lt;/span&gt;document&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;SiteColumns&lt;span class="Operator"&gt;.&lt;/span&gt;TaxColumnId&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;SiteColumns&lt;span class="Operator"&gt;.&lt;/span&gt;TaxColumnNoteId&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;RemoveColumn&lt;span class="Operator"&gt;(&lt;/span&gt;document&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;SiteColumns&lt;span class="Operator"&gt;.&lt;/span&gt;AnotherTaxColumnId&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;SiteColumns&lt;span class="Operator"&gt;.&lt;/span&gt;AnotherTaxColumnNoteId&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//fix columns&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;FixMetadataColumn&lt;span class="Operator"&gt;(&lt;/span&gt;site&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;SiteColumns&lt;span class="Operator"&gt;.&lt;/span&gt;TaxColumnId&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;SiteColumns&lt;span class="Operator"&gt;.&lt;/span&gt;TaxColumnNoteId&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Taxonomy&lt;span class="Operator"&gt;.&lt;/span&gt;CustomTermStore&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;FixMetadataColumn&lt;span class="Operator"&gt;(&lt;/span&gt;site&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;SiteColumns&lt;span class="Operator"&gt;.&lt;/span&gt;AnotherTaxColumnId&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;SiteColumns&lt;span class="Operator"&gt;.&lt;/span&gt;AnotherTaxColumnNoteId&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Taxonomy&lt;span class="Operator"&gt;.&lt;/span&gt;AnotherCustomTermStore&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//readd metdata&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;web&lt;span class="Operator"&gt;.&lt;/span&gt;ExtendContentType&lt;span class="Operator"&gt;(&lt;/span&gt;page&lt;span class="Operator"&gt;.&lt;/span&gt;Id&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;SiteColumns&lt;span class="Operator"&gt;.&lt;/span&gt;TaxColumnId&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;SiteColumns&lt;span class="Operator"&gt;.&lt;/span&gt;AnotherTaxColumnId&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;web&lt;span class="Operator"&gt;.&lt;/span&gt;ExtendContentType&lt;span class="Operator"&gt;(&lt;/span&gt;document&lt;span class="Operator"&gt;.&lt;/span&gt;Id&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;SiteColumns&lt;span class="Operator"&gt;.&lt;/span&gt;TaxColumnId&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;SiteColumns&lt;span class="Operator"&gt;.&lt;/span&gt;AnotherTaxColumnId&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;#endregion&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;#region&lt;/span&gt; Private Methods&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;private&lt;/span&gt; &lt;span class="Keyword"&gt;void&lt;/span&gt; RemoveColumn&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;SPContentType&lt;/span&gt; ct&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Guid&lt;/span&gt; fieldId&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Guid&lt;/span&gt; noteFieldId&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//remove tax field&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;TaxonomyField&lt;/span&gt; field &lt;span class="Operator"&gt;=&lt;/span&gt; ct&lt;span class="Operator"&gt;.&lt;/span&gt;ParentWeb&lt;span class="Operator"&gt;.&lt;/span&gt;Fields&lt;span class="Operator"&gt;[&lt;/span&gt;fieldId&lt;span class="Operator"&gt;]&lt;/span&gt; &lt;span class="Keyword"&gt;as&lt;/span&gt; &lt;span class="ClassName"&gt;TaxonomyField&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;if&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;field &lt;span class="Operator"&gt;!&lt;/span&gt;&lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;null&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:20px;"&gt;&lt;span class="Code"&gt;ct&lt;span class="Operator"&gt;.&lt;/span&gt;FieldLinks&lt;span class="Operator"&gt;.&lt;/span&gt;Delete&lt;span class="Operator"&gt;(&lt;/span&gt;field&lt;span class="Operator"&gt;.&lt;/span&gt;Id&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//delete note field&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;SPField&lt;/span&gt; noteField &lt;span class="Operator"&gt;=&lt;/span&gt; ct&lt;span class="Operator"&gt;.&lt;/span&gt;ParentWeb&lt;span class="Operator"&gt;.&lt;/span&gt;Fields&lt;span class="Operator"&gt;[&lt;/span&gt;noteFieldId&lt;span class="Operator"&gt;]&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;if&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;noteField &lt;span class="Operator"&gt;!&lt;/span&gt;&lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;null&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:20px;"&gt;&lt;span class="Code"&gt;ct&lt;span class="Operator"&gt;.&lt;/span&gt;FieldLinks&lt;span class="Operator"&gt;.&lt;/span&gt;Delete&lt;span class="Operator"&gt;(&lt;/span&gt;noteField&lt;span class="Operator"&gt;.&lt;/span&gt;Id&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//update&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;ct&lt;span class="Operator"&gt;.&lt;/span&gt;Update&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;true&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;private&lt;/span&gt; &lt;span class="Keyword"&gt;void&lt;/span&gt; FixMetadataColumn&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;this&lt;/span&gt; &lt;span class="ClassName"&gt;SPSite&lt;/span&gt; site&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Guid&lt;/span&gt; fieldId&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Guid&lt;/span&gt; textFieldId&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="Keyword"&gt;string&lt;/span&gt; termSetName&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//get session&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;TaxonomySession&lt;/span&gt; session &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;new&lt;/span&gt; &lt;span class="ClassName"&gt;TaxonomySession&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;site&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;if&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;session&lt;span class="Operator"&gt;.&lt;/span&gt;DefaultKeywordsTermStore &lt;span class="Operator"&gt;=&lt;/span&gt;&lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;null&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:20px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;throw&lt;/span&gt; &lt;span class="Keyword"&gt;new&lt;/span&gt; &lt;span class="ClassName"&gt;Exception&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;The DefaultKeywordsTermStore was not found.&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//get store&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;TermStore&lt;/span&gt; termStore &lt;span class="Operator"&gt;=&lt;/span&gt; session&lt;span class="Operator"&gt;.&lt;/span&gt;DefaultKeywordsTermStore&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;if&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;session&lt;span class="Operator"&gt;.&lt;/span&gt;DefaultKeywordsTermStore &lt;span class="Operator"&gt;=&lt;/span&gt;&lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;null&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:20px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;throw&lt;/span&gt; &lt;span class="Keyword"&gt;new&lt;/span&gt; &lt;span class="ClassName"&gt;Exception&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;The DefaultKeywordsTermStore was not found.&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//get group&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;Group&lt;/span&gt; &lt;span class="Keyword"&gt;group&lt;/span&gt; &lt;span class="Operator"&gt;=&lt;/span&gt; termStore&lt;span class="Operator"&gt;.&lt;/span&gt;Groups&lt;span class="Operator"&gt;.&lt;/span&gt;Where&lt;span class="Operator"&gt;(&lt;/span&gt;g &lt;span class="Operator"&gt;=&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt; g&lt;span class="Operator"&gt;.&lt;/span&gt;Name&lt;span class="Operator"&gt;.&lt;/span&gt;Equals&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Taxonomy&lt;span class="Operator"&gt;.&lt;/span&gt;Group&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;StringComparison&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;InvariantCultureIgnoreCase&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;FirstOrDefault&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;if&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;group&lt;/span&gt; &lt;span class="Operator"&gt;=&lt;/span&gt;&lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;null&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:20px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;throw&lt;/span&gt; &lt;span class="Keyword"&gt;new&lt;/span&gt; &lt;span class="ClassName"&gt;Exception&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;string&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Format&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;The {0} group was not found.&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Taxonomy&lt;span class="Operator"&gt;.&lt;/span&gt;Group&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//get termset&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;TermSet&lt;/span&gt; termSet &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;group&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;TermSets&lt;span class="Operator"&gt;.&lt;/span&gt;Where&lt;span class="Operator"&gt;(&lt;/span&gt;t &lt;span class="Operator"&gt;=&lt;/span&gt;&lt;span class="Operator"&gt;&amp;gt;&lt;/span&gt; t&lt;span class="Operator"&gt;.&lt;/span&gt;Name&lt;span class="Operator"&gt;.&lt;/span&gt;Equals&lt;span class="Operator"&gt;(&lt;/span&gt;termSetName&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;StringComparison&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;InvariantCultureIgnoreCase&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;FirstOrDefault&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;if&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;termSet &lt;span class="Operator"&gt;=&lt;/span&gt;&lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;null&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:20px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;throw&lt;/span&gt; &lt;span class="Keyword"&gt;new&lt;/span&gt; &lt;span class="ClassName"&gt;Exception&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;string&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Format&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;The {0} term set was not found.&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; termSetName&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//get taxonomy list&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;SPList&lt;/span&gt; list &lt;span class="Operator"&gt;=&lt;/span&gt; site&lt;span class="Operator"&gt;.&lt;/span&gt;RootWeb&lt;span class="Operator"&gt;.&lt;/span&gt;Lists&lt;span class="Operator"&gt;.&lt;/span&gt;TryGetList&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;List&lt;span class="Operator"&gt;.&lt;/span&gt;Taxonomy&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;if&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;list &lt;span class="Operator"&gt;=&lt;/span&gt;&lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;null&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:20px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;throw&lt;/span&gt; &lt;span class="Keyword"&gt;new&lt;/span&gt; &lt;span class="ClassName"&gt;Exception&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;string&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Format&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;The {0} list was not found.&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; &lt;span class="ClassName"&gt;Constants&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;List&lt;span class="Operator"&gt;.&lt;/span&gt;Taxonomy&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//get taxonomy field&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="ClassName"&gt;TaxonomyField&lt;/span&gt; field &lt;span class="Operator"&gt;=&lt;/span&gt; site&lt;span class="Operator"&gt;.&lt;/span&gt;RootWeb&lt;span class="Operator"&gt;.&lt;/span&gt;Fields&lt;span class="Operator"&gt;[&lt;/span&gt;fieldId&lt;span class="Operator"&gt;]&lt;/span&gt; &lt;span class="Keyword"&gt;as&lt;/span&gt; &lt;span class="ClassName"&gt;TaxonomyField&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;if&lt;/span&gt; &lt;span class="Operator"&gt;(&lt;/span&gt;field &lt;span class="Operator"&gt;=&lt;/span&gt;&lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;null&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:20px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;throw&lt;/span&gt; &lt;span class="Keyword"&gt;new&lt;/span&gt; &lt;span class="ClassName"&gt;Exception&lt;/span&gt;&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;string&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Format&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Constant"&gt;&amp;quot;The {0} field was not found.&amp;quot;&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; fieldId&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//update properties&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;field&lt;span class="Operator"&gt;.&lt;/span&gt;AnchorId &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="ClassName"&gt;Guid&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Empty&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;field&lt;span class="Operator"&gt;.&lt;/span&gt;TermSetId &lt;span class="Operator"&gt;=&lt;/span&gt; termSet&lt;span class="Operator"&gt;.&lt;/span&gt;Id&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;field&lt;span class="Operator"&gt;.&lt;/span&gt;TextField &lt;span class="Operator"&gt;=&lt;/span&gt; textFieldId&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;field&lt;span class="Operator"&gt;.&lt;/span&gt;SspId &lt;span class="Operator"&gt;=&lt;/span&gt; termSet&lt;span class="Operator"&gt;.&lt;/span&gt;TermStore&lt;span class="Operator"&gt;.&lt;/span&gt;Id&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;field&lt;span class="Operator"&gt;.&lt;/span&gt;TargetTemplate &lt;span class="Operator"&gt;=&lt;/span&gt; &lt;span class="Keyword"&gt;string&lt;/span&gt;&lt;span class="Operator"&gt;.&lt;/span&gt;Empty&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//update lookup&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;field&lt;span class="Operator"&gt;.&lt;/span&gt;SchemaXml &lt;span class="Operator"&gt;=&lt;/span&gt; field&lt;span class="Operator"&gt;.&lt;/span&gt;SchemaXml&lt;span class="Operator"&gt;.&lt;/span&gt;Replace&lt;span class="Operator"&gt;(&lt;/span&gt;field&lt;span class="Operator"&gt;.&lt;/span&gt;LookupList&lt;span class="Operator"&gt;,&lt;/span&gt; list&lt;span class="Operator"&gt;.&lt;/span&gt;ID&lt;span class="Operator"&gt;.&lt;/span&gt;ToString&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;field&lt;span class="Operator"&gt;.&lt;/span&gt;SchemaXml &lt;span class="Operator"&gt;=&lt;/span&gt; field&lt;span class="Operator"&gt;.&lt;/span&gt;SchemaXml&lt;span class="Operator"&gt;.&lt;/span&gt;Replace&lt;span class="Operator"&gt;(&lt;/span&gt;field&lt;span class="Operator"&gt;.&lt;/span&gt;LookupWebId&lt;span class="Operator"&gt;.&lt;/span&gt;ToString&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;,&lt;/span&gt; site&lt;span class="Operator"&gt;.&lt;/span&gt;RootWeb&lt;span class="Operator"&gt;.&lt;/span&gt;ID&lt;span class="Operator"&gt;.&lt;/span&gt;ToString&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;&lt;span class="Comment"&gt;//save&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:10px;"&gt;&lt;span class="Code"&gt;field&lt;span class="Operator"&gt;.&lt;/span&gt;Update&lt;span class="Operator"&gt;(&lt;/span&gt;&lt;span class="Keyword"&gt;true&lt;/span&gt;&lt;span class="Operator"&gt;)&lt;/span&gt;&lt;span class="Operator"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Operator"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="Code" style="padding-left:0px;"&gt;&lt;span class="Code"&gt;&lt;span class="Keyword"&gt;#endregion&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class="CodeCellMiddleSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellMiddleRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="CodeRow"&gt;
&lt;td class="CodeCellBottomLeft"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomMiddle"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomSpacer"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td class="CodeCellBottomRight"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;There are a few things to note here. First of all, in Line #&amp;#39;s 8,9,19, and 20 you&amp;#39;ll see two extension methods. TryGetStandardContentType extends an &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.aspx" class="Link"&gt;SPWeb&lt;/a&gt; to allow for the retrieval of an &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spcontenttype.aspx" class="Link"&gt;SPContentType&lt;/a&gt; from a &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spcontenttypeid.aspx" class="Link"&gt;SPContentTypeId&lt;/a&gt;. ExtendContentType simply adds new fields to existing content types. &lt;/p&gt;
&lt;p class="Text"&gt;The next block makes calls to RemoveColumn, which deletes the metadata column and hidden note field (if it exists at all) from the content type. Afterwards, all metadata columns as sent through the FixMetadataColumn method. This is the one that programmatically spins up the term store, wires up the taxonomy column to it, fixes the note field, and ensures the lookup. Finally, we add the fields back to the content types. The rest of the code should be pretty straight forward. &lt;/p&gt;
&lt;p class="Text"&gt;
&lt;div class="SectionHeader"&gt;Conclusion&lt;/div&gt;
&lt;/p&gt;
&lt;p class="Text"&gt;So that&amp;#39;s it: these were the issues I&amp;#39;ve run into with hybrid deployments of assets from SharePoint Designer and Visual Studio. In the projects I&amp;#39;ve been on that have done all structure programmatically, deployments have been very smooth and repeatable. And with the understanding that it will have to be manually in multiple environments, my SharePoint configurators have also been able to provision portals in a timely manner with no major hang ups. &lt;/p&gt;
&lt;p class="Text"&gt;But as for these hybrid teams, it takes a lot of diligence to make everything (and everyone) work well together. Our decision points have come down to our project manager asking me if I thought I could code something and get it into a WSP faster than one our designers could do it manually three times directly on the server. Ugh. It&amp;#39;s a lot of overhead to not only integrate page layouts, site columns, and content types into Visual Studio, but also to write patch up code keep everything wired together proper. However, having WSPs at the end of the day is, in my opinion, invaluable. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2915" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+Designer/default.aspx">SharePoint Designer</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/managed+metadata/default.aspx">managed metadata</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Taxonomy/default.aspx">Taxonomy</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Deployment/default.aspx">Deployment</category></item><item><title>Why absolutely everyone should attend a SharePoint Saturday – My Top Five Reasons</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2011/11/14/why-absolutely-everyone-should-attend-a-sharepoint-saturday-my-top-five-reasons.aspx</link><pubDate>Mon, 14 Nov 2011 16:58:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2914</guid><dc:creator>Kim Frehe</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.rightpoint.com/community/blogs/viewpoint/rsscomments.aspx?PostID=2914</wfw:commentRss><comments>http://www.rightpoint.com/community/blogs/viewpoint/archive/2011/11/14/why-absolutely-everyone-should-attend-a-sharepoint-saturday-my-top-five-reasons.aspx#comments</comments><description>&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;I love SharePoint.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I love it so much that I actually spend my weekends flying around to different SharePoint events just because I love learning more about what it can do and what it can offer our clients. This weekend I returned from SharePoint Denver and I was compelled to share my top five reasons why everyone that has ever heard of SharePoint should attend an event.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;What is SharePoint Saturday?&lt;/b&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;It is a one day FREE mini-conference that includes awesome sessions about SharePoint.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;These sessions are targeted towards new users, current users of all skill levels, developers, decision makers and anyone else that has even heard the word &amp;ldquo;SharePoint&amp;rdquo;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;There are usually four or five 50 or 75 minute sessions running at the same time for different target audiences on all kinds of subjects, such as BI, jquery, Search, Designer, content management, governance, best practices, use cases, etc. etc. etc.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;These sessions are led by Microsoft MVP&amp;rsquo;s, consultants, community experts, developers, architects and end-users that have something really cool to share.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Many of these speakers are the SAME speakers that you will pay $1000 or more to see at the big conferences (which are worth every penny, by the way)!&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;These awesome individuals donate their time to these events out of love for SharePoint and the community.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Plus you usually get some pretty cool swag (shirts, bags, usb drives, etc).&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Free?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;So what&amp;rsquo;s the catch? &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;It&amp;rsquo;s impossible to get something for nothing&amp;hellip;right?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Wrong!&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;That&amp;rsquo;s just the point&amp;hellip;there is no catch.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;SharePoint Saturdays are run by volunteers, the speakers are volunteers and the sponsors take care of everything.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;You are not forced to buy anything, listen to a sales pitch or even visit the sponsor booths&amp;hellip;though, I &lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;i style="mso-bidi-font-style:normal;"&gt;highly&lt;/i&gt;&lt;/b&gt; recommend doing so since they have great information and some pretty cool swag. &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;There are always really great giveaways that you are eligible for or can sign up for at the booths.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Each of the six SharePoint Saturdays I have attended have given away at least one xbox with Kinnect (I won one in DC &lt;/span&gt;&lt;span style="font-family:Wingdings;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;&lt;span style="mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;J&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;).&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The only cost or requirement is your Saturday time. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;OK, so now to my point&amp;hellip;here are my top 5 reasons everyone should attend a SharePoint Saturday:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Awesome Sponsors:&lt;/b&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The sponsors of SharePoint Saturday are vendors that offer products and/or services revolving around SharePoint.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;It&amp;rsquo;s amazing what you can learn about the capabilities of SharePoint that you never knew were possible until you talk to these guys.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;You will find ways to make your SharePoint solution better and usually end up saving money for your company in time/development/productivity.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;They may be SharePoint extensions, hosting services, training and more.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Many of these companies were created because someone has felt your pain points before and created a solution for it.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Sponsors pay for the entire cost of the conference, which I find amazing.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;I make a point of visiting each new sponsor I come across to learn about what they offer and determine if it might be something our company or a client might need.&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Knowledge is Power!&lt;/b&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I don&amp;rsquo;t know about you, but I don&amp;rsquo;t have a lot of time to search and find all the latest and greatest best practices and techniques about every aspect of SharePoint.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I mean&amp;hellip;SharePoint is HUGE.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Even though I have been a SharePoint Power User for 10 years, I still find new things every day.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;SharePoint Saturday is a great way to get a &amp;ldquo;taste&amp;rdquo; of a lot of information about a lot of different subjects. You won&amp;rsquo;t walk out of every session as an expert on every subject, but hopefully you&amp;rsquo;ll learn something new that you can then make an effort to learn more about.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Why re-invent the wheel or have major/minor issues if someone is willing to let you learn from their triumphs and mistakes?&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The truth is that there is so much that SharePoint can do that that you may not know about&amp;hellip;.you just don&amp;rsquo;t know what you don&amp;rsquo;t know.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;And if you discover something that you want to learn more about, you&amp;rsquo;ll be at the right place to find the best training vendor or blog to meet your needs (either as a sponsor or ask a community member) that targets what you need.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Presenters:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;I cannot sing the praises of the presenters enough!&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;In general they are extremely friendly, smart, witty and fun people who are passionate about what they do.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;I absolutely love meeting and conversing with as many of the presenters that I can.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I will honestly say I haven&amp;rsquo;t met a presenter I didn&amp;rsquo;t like&amp;hellip;and between SPTechCon 2011 and 6 SharePoint Saturdays this year, I have met a lot!&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This is the most friendly, fun and smart group of people I have had the pleasure to be around.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Community:&lt;/b&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;By attending these sessions you become a part of an awesome community.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;If you embrace it, it will enhance your SharePoint Experience.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;I have had some great idea-exchanging conversations with other attendees who experience similar pain points we all have.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;There are so many ways to accomplish the same thing in SharePoint and so many people have done so much.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This is a tight-knit community and if you are looking for an expert in a certain area, someone in the community will be able to point you in the right direction. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Free Stuff:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;On top of the all the free training you&amp;rsquo;ll get, you get lots of swag (and good swag too!) plus breakfast, plus lunch, plus the chance to win really great prizes (valued from $25 up to $400+).&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This all adds up to one great time!&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Additionally, you may even get a free beer (or soda if you&amp;rsquo;re under 21 or not a drinker)&lt;b style="mso-bidi-font-weight:normal;"&gt;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;No, not at the conference, but at SharePint, which is a very social event where the speakers and attendees congregate to partake in lively discussions and raise a glass to the community at the end of the day. And don&amp;rsquo;t be shy at these things&amp;hellip;people are there because they WANT to connect with other SharePoint people.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;I hope you will find the next SharePoint Saturday near you at &lt;/span&gt;&lt;a href="http://www.sharepointsaturday.org/"&gt;&lt;span style="font-family:Calibri;color:#0000ff;font-size:small;"&gt;http://www.sharepointsaturday.org&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt; and sign up today.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Check the site often, new dates and locations are announced all the time, or make it easy and sign up for the newsletter.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The more users that are educated on how to use this powerful tool, the more SharePoint will blossom, which will increase demand for more products and services to make people&amp;rsquo;s lives easier and we all win.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2914" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Training/default.aspx">Training</category></item><item><title>Some thoughts on Veteran's Day.</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2011/11/11/some-thoughts-on-veteran-39-s-day.aspx</link><pubDate>Fri, 11 Nov 2011 16:54:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2913</guid><dc:creator>Marcello Benati</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.rightpoint.com/community/blogs/viewpoint/rsscomments.aspx?PostID=2913</wfw:commentRss><comments>http://www.rightpoint.com/community/blogs/viewpoint/archive/2011/11/11/some-thoughts-on-veteran-39-s-day.aspx#comments</comments><description>&lt;p style="margin:0in 0in 0pt;"&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:14pt;"&gt;We are deeply indebted to our veterans for the freedom we enjoy.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;"&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:14pt;"&gt;&lt;br /&gt;I encourage all, those who have served and those who have not to reflect upon the freedoms we enjoy and thank a veteran today. &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;"&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:14pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;"&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:14pt;"&gt;Please remember in your prayers, those men and women who are presently serving our country and ask our heavenly father to embrace the souls of the so very many men and women who gave their all for us. No one segment of our nation&amp;#39;s population has been asked to do more for their country than veterans. In fact, our veterans have secured a peaceful future for many other nations across the world. Still today, ceremonies are held in many regions in Europe to honor the American veterans who liberated their towns.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;"&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:14pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;"&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:14pt;"&gt;I have noticed that some veterans share stories about how their service changed their lives; others keep memories of war experiences tucked deep inside. All veterans fought for something greater than themselves - to protect freedom and the innocent by defeating tyranny and terrorism - and they have literally changed the world for the better. Even those veterans who served during peacetime or never saw action are to be respected and honored. They gave what should have been some of the most productive years of their life in the service of the common good.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;"&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:14pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;"&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:14pt;"&gt;I would like to share this little verse with you:&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;"&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:14pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;"&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:14pt;"&gt;It is the veteran, not the preacher, &lt;br /&gt;who has given you freedom of religion.&lt;br /&gt;&lt;br /&gt;It is the veteran, not the reporter, &lt;br /&gt;who has given you freedom of the press.&lt;br /&gt;&lt;br /&gt;It is the veteran, not the poet, &lt;br /&gt;who has given you freedom of speech.&lt;br /&gt;&lt;br /&gt;It is the veteran, not the protesters, &lt;br /&gt;who has given you freedom to assemble.&lt;br /&gt;&lt;br /&gt;It is the veteran, not the lawyer, &lt;br /&gt;who has given you the right to a fair trial.&lt;br /&gt;&lt;br /&gt;It is the veteran, not the politician, &lt;br /&gt;who has given you the right to vote.&lt;br /&gt;&lt;br /&gt;Let us salute all veterans and those in the military for their courage and commitment-they are all American patriots. Let us also remember that their families have made enormous sacrifices to support their loved one as he or she answered the call to defend America and to preserve democracy worldwide.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;span style="font-family:Calibri;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2913" width="1" height="1"&gt;</description></item><item><title>SharePoint 2010 and Kerberos…Not as bad as it was in 2007</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2011/11/09/sharepoint-2010-and-kerberos-not-as-bad-as-it-was-in-2007.aspx</link><pubDate>Wed, 09 Nov 2011 16:11:58 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2912</guid><dc:creator>Jeremy Williams</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.rightpoint.com/community/blogs/viewpoint/rsscomments.aspx?PostID=2912</wfw:commentRss><comments>http://www.rightpoint.com/community/blogs/viewpoint/archive/2011/11/09/sharepoint-2010-and-kerberos-not-as-bad-as-it-was-in-2007.aspx#comments</comments><description>&lt;p&gt;…but don’t get me wrong, it’s still no picnic!&amp;#160; &lt;/p&gt;  &lt;p&gt;So I was tasked with taking an existing 2010 farm (running the standard NTLM and SharePoint 2010 RTM) bits over to authenticate over Kerberos.&amp;#160; Having done this many times in 2007, I figured that it would be mostly the same…boy was I wrong.&amp;#160; Luckily, I did a LOT of up-front research, and discovered a pretty decent &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=23176"&gt;Microsoft whitepaper&lt;/a&gt; on the subject.&amp;#160; Don’t be alarmed when you download this, it’s over 200 pages long, but it’s worth the reading!&amp;#160; [Plus, I’m going to assume that if you’re reading this post for a solution to your problem, then you’ll have already read that whitepaper too].&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Scenario: &lt;/strong&gt;I need to secure a SharePoint 2010 farm so that the user-facing web applications are secured via Kerberos.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Solution – Part I:&lt;/strong&gt; I followed the above-mentioned Microsoft whitepaper to a ‘T’ to secure the SharePoint environment.&amp;#160; For the sake of brevity, I won’t re-hash those steps here.&amp;#160; However, the SharePoint environment I was working on doesn’t have any non-standard configurations…all of my DNS records were A records, each web application had it’s own worker process, and only standards (80 and 443) ports were in play.&amp;#160; &lt;/p&gt;  &lt;p&gt;After running through all of the steps, I saw that SharePoint was working, and a quick perusal of klist on my client and the security log on the SharePoint server showed that I was authenticating over Kerberos… Sweet!&amp;#160;&amp;#160; I made one change to the instructions, and that is that I’m not doing &lt;em&gt;constrained delegation&lt;/em&gt;, I just allow my service accounts to pass auth wherever asked… I was just about to pack it all up when I noticed something disconcerting…&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Problem 1:&lt;/strong&gt; The search box wasn’t showing up ANYWHERE on my SharePoint page.&amp;#160; When I hit the Search Center directly, I received an error promptly after submitting my search query.&amp;#160; Additionally, most of my shared services had become inaccessible: managed metadata, user profiles, secure store, etc. were all throwing errors in both the UI and error logs.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Solution – Part 2:&lt;/strong&gt; [Quick note: If you’re experiencing similar issues (and, this is important, you’re running SharePoint 2010 RTM bits), don’t try the other troubleshooting steps you find on the internet just yet…just read on]&amp;#160; Alright, so I performed a TON of troubleshooting here, and nothing seemed to work.&amp;#160; Finally, I had enough, so I decided to apply SharePoint SP1 to the environment.&amp;#160; Remember, this &lt;strong&gt;will take down your SharePoint environment for an extended period of time.&amp;#160; &lt;/strong&gt;At any rate, after the long application of the service packs (Foundation first, followed by Server, followed by psconfig) and a server restart for good measure, everything seemed to be working as advertised.&amp;#160; &lt;/p&gt;  &lt;p&gt;The only thing that wasn’t was my User Profile Sync Service, but it started up without any issue and even ran a nice sync using my old connections for me.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Final Validation: &lt;/strong&gt;After the application of SP1, I tested all of the major feature functionality in the farm (custom web parts with SQL calls, SSRS reports, Profile information, and workflow execution), and everything was working over Kerberos.&amp;#160; Woohoo!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;A parting note on Kerberos&lt;/strong&gt;: Kerberos is great (once it’s configured), it’s less chatty than NTLM, and I like the security it offers (it’s like claims, but for more stuff).&amp;#160; However, Kerberos has it’s limits that you need to remember.&amp;#160; The largest of these limits is that a user must have access to the Ticket Granting Service in order to auth with Kerberos…In other words, if you have SharePoint punched through your firewall and you need users to interact with it over Kerberos outside of your internal network, you’ll need to punch at least one DC’s Kerberos-granting ports through to the internet [Note: I’m &lt;strong&gt;not at all recommending &lt;/strong&gt;that you do that…I’m just saying what you would need to do]…By the way, the correct thing to do (in that scenario) is to leverage something like Microsoft’s TMG…&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2912" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Troubleshooting/default.aspx">Troubleshooting</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Office+2010/default.aspx">Office 2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/SP2010/default.aspx">SP2010</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Kerberos/default.aspx">Kerberos</category></item><item><title>Culture Matters...especially to us at Rightpoint</title><link>http://www.rightpoint.com/community/blogs/viewpoint/archive/2011/11/09/culture-matters-especially-to-us-at-rightpoint.aspx</link><pubDate>Wed, 09 Nov 2011 15:19:00 GMT</pubDate><guid isPermaLink="false">f7450ba4-a08e-465a-831a-f9a15c21b696:2911</guid><dc:creator>tstahl</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.rightpoint.com/community/blogs/viewpoint/rsscomments.aspx?PostID=2911</wfw:commentRss><comments>http://www.rightpoint.com/community/blogs/viewpoint/archive/2011/11/09/culture-matters-especially-to-us-at-rightpoint.aspx#comments</comments><description>&lt;h2&gt;What is Culture?&lt;/h2&gt;
&lt;p&gt;Company culture is an organically-grown custom hybrid organism. Simply put, it is personality - as reflected in the interactions among people (both co-workers and clients), communication, office layout, and various other &amp;quot;artifacts.&amp;quot; Culture exists in your organization whether you pay attention to it or not. You can have many different types: Corporate, Collaborative, Entrepreneurial...the list can go on and on.&lt;/p&gt;
&lt;p&gt;I started out trying to define culture and the reasons it makes sense to help develop it. Then, I realized, &amp;quot;Hey, I&amp;#39;m not an expert on culture!&amp;quot; - or on organizational development for that matter. Like you, I am just a member of the workforce. I found something I was passionate about and turned that into a profession. That profession just happens to be creative, and I have worked in many facets of graphic design over the years spanning several industries, but we can talk about that later.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;We all know the influences of culture. You see it in the way people treat each other. You hear it around the lunchroom when your coworkers discuss the client or their project manager. More importantly, you feel it when the alarm goes off in the morning when it&amp;#39;s time to get up for work. Now a quick question: How do you feel right now? If you&amp;#39;re tense and upset thinking about these things, then it&amp;#39;s a good indicator that you might be experiencing a culture that doesn&amp;#39;t line up with your own values and personality. If you&amp;#39;re feeling positive and upbeat, then you probably know how great it is to work in a culture that &amp;quot;fits&amp;quot; you. But that&amp;#39;s what it really is...a feeling. The personality of your company and how it interacts with you is the feeling you get when you have encounters with your job. Okay, so maybe &lt;i&gt;that&amp;#39;s&lt;/i&gt; the definition. It&amp;#39;s the feeling your company&amp;#39;s personality creates in the people who interact with it. Seems pretty subjective, right? I would agree. It&amp;#39;s almost an intangible. Where it turns the corner into &amp;quot;objective&amp;quot; is how it benefits you and your company.&lt;/p&gt;
&lt;h2&gt;What does this mean to me?&lt;/h2&gt;
&lt;p&gt;We have all said it, &amp;quot;I can work anywhere, but if I like the place, I like my job.&amp;quot; Many people outside of the graphic design world think that all creatives have an easy or fun job. The truth is, we like our jobs as much as anyone else that gets to do something they enjoy. But it&amp;#39;s not always for the right company. As a matter of fact, a mis-match between what someone values and a culture can be devastating to truly creative thinking. I have worked in everything from branding and advertising to educational publishing and large corporation in-house marketing. I&amp;#39;ve been a part of a lot of different culture models, and the ones that made me work harder, invest more of my talents, and help to develop new strategies were the ones that I thought had the best cultures.&lt;/p&gt;
&lt;p&gt;Culture is a high priority for us at Rightpoint. We adopt, nurture and set free as many things as possible that benefit its positive spirit and, just as important, we try to squash and manage all things that do not. Our culture is influenced by many factors, but a strong touchpoint is the way initiatives are communicated and acted upon. We are an organization that encourages &lt;i&gt;Intrapreneurship&lt;/i&gt; by keeping communication open and in a near-flat level structure. We empower and entrust everyone with the tools to create and invent. We encourage colleagues to work together to problem solve by fostering strong, friendly working relationships through collaborative workspaces, sponsoring all-company lunches and even happy hours. &lt;/p&gt;
&lt;h2&gt;Strong but Delicate&lt;/h2&gt;
&lt;p&gt;We feel that maintaining our positive culture is vital to our continued success and are therefore sensitive to the fact that it needs some management. While there may be a group in leadership that helps steer, we ask that every person within Rightpoint be mindful of influencers that either reinforce or detract from the company&amp;#39;s culture. We entrust this power in the individual, because it is our people that embody our culture. It can be work sometimes because it means we have to manage our culture as if it were a brand, because really it is. So here are several ways we keep a focus on culture here at Rightpoint to ensure continued positive growth:&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cultural Fit Interviews&lt;/li&gt;
&lt;li&gt;WOW Wall&lt;/li&gt;
&lt;li&gt;Core Values&lt;/li&gt;
&lt;li&gt;Trust and Empowerment&lt;/li&gt;
&lt;li&gt;Collaborative Office Space&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="text-decoration:underline;"&gt;Culture Fit Interviews&lt;br /&gt;&lt;/span&gt;From the very beginning we begin to assess a candidate&amp;#39;s personality to determine if they will be a complement to the culture. We sometimes review our core values with them during an interview and discuss them. It&amp;#39;s a conversation, not a test. Much like working here, we have conversations and help one another find solutions. &lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration:underline;"&gt;WOW Wall&lt;br /&gt;&lt;/span&gt;We celebrate individuals and teams going &amp;quot;above and beyond&amp;quot; by sharing a pat on the back with the entire company by posting a Holy Sheet! on the WOW Wall when a colleague or team has exceeded expectations or has received accolades from an outside source. It&amp;#39;s yet another way to encourage and support a positive culture. I will spend more time discussing that in a future post.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration:underline;"&gt;Core Values&lt;br /&gt;&lt;/span&gt;Our core values are what drive us and reflect the passion and character of our people. We work hard to try to get it right, while having fun along the way. Culture does not stand in the way of what needs to be accomplished, it helps us grow, learn and deliver amazing work time and time again. You can see more about our 7 Core Values &lt;a href="http://www.rightpoint.com/company/about#/our-values"&gt;here&lt;/a&gt;, but the list is: Passion, Intrapreneurship, Learning, Excellence, Integrity, Accountability and Collaboration. Personally, I think that one of our strongest core values lives in collaboration. It influences so many aspects of what we do and how we do it.&lt;/p&gt;
&lt;p&gt;Collaboration begins and ends with trust. We spend a lot of time collaborating as a company. We discuss initiatives, define strategy, build and iterate on ideas, and most importantly, we collaborate on almost every client project. Nearly every project and each client has a team of professionals working through solutions. There are always opportunities for improvement and enhancement to all of our work. Throughout the process we even use quality assurance checkpoints where a team from the different divisions involved will come together to re-evaluate and qualify the work, as well as seek out opportunities for improvement. We trust each other, which makes all these collaborative sessions impactful and highly beneficial.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration:underline;"&gt;Trust &amp;amp; Empowerment&lt;br /&gt;&lt;/span&gt;As a matter of fact, trust is the single biggest influencer on our collaborative culture. We are all part of the solution no matter what the challenge. We are all encouraged to be part of the conversation in nearly every aspect of the business at hand. We not only have clear visibility into the organization&amp;#39;s growth and plans, but are able to offer ideas to enhance and enable. We are given the tools and latitude to help drive initiatives. We are an empowered group of people operating as equals, each with unique skills who are determined to be part of something greater than ourselves... and we don&amp;#39;t have to be wearing a suit to be heard, valued and trusted.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration:underline;"&gt;Collaborative Office Space&lt;br /&gt;&lt;/span&gt;We team up and band together so much that even our brand new space has been designed and built to further enable people to collaborate. It goes well beyond just having conversations; the design of the space was about finding the best ways to enhance the way we all work together. We combined a great balance of open floor plan space with team rooms, conference rooms and even phone booths. We abandoned the idea of assigned seating for the most part and kept the entire space as fluid as possible so that any team can sit together for the duration of a project and then when it&amp;#39;s over, disband and join another team. It not only keeps everyone more engaged with each other, it improves cross-pollination of skills and ideas. Nothing ever sits with one person. It&amp;#39;s a warm, timber loft in the west loop and it has felt like home since the day we moved in.&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;It All Boils Down To This&lt;/h2&gt;
&lt;p&gt;We are a team. We do &lt;i&gt;this&lt;/i&gt; together. &lt;i&gt;This&lt;/i&gt; is defined as everything. One cohesive unit acting as one. We are a group full of team members who support one another. We are all here for a single goal, to build the most respected and admired professional services organization. That means getting it right... the first time. All of our skills individually add up to one strong force. We respect the people with whom we work and recognize that only by working together - by seeking input, sharing ideas, challenging each other, and pitching in when needed - can we achieve superior results.&amp;nbsp; We believe in communicating openly and respectfully and recognize that it is always done in the spirit of helping each other grow and achieve excellence. With every new engagement, we keep an open mind to avoid tunnel vision. We actively seek input from all kinds of sources to challenge our own thinking and to ensure that we keep our ideas fresh.&amp;nbsp; We challenge ourselves and each other, in the spirit of learning and coming up with better solutions.&amp;nbsp; We understand that challenging each other and sharing different points of view are positive ways to ensure that we bring our best thinking to our clients and our own organization.&amp;nbsp; And, in keeping with that, we are not afraid to speak up.&amp;nbsp; We recognize that being open is critical to having the whole be greater than the sum of the parts.&lt;/p&gt;
&lt;p&gt;I enjoy my job more, feel more confident about the work I do, and look forward to interacting with my co-workers because I know that the culture we embrace at Rightpoint fits in with my own values and personality. I strive to be the best every day knowing that the entire organization has my back and will continually challenge my thinking and abilities so that both I and the company will perpetually grow and succeed.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.rightpoint.com/community/aggbug.aspx?PostID=2911" width="1" height="1"&gt;</description><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Rightpoint/default.aspx">Rightpoint</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/balance/default.aspx">balance</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/operations/default.aspx">operations</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Team+Collaboration/default.aspx">Team Collaboration</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/team+development/default.aspx">team development</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/Culture/default.aspx">Culture</category><category domain="http://www.rightpoint.com/community/blogs/viewpoint/archive/tags/corporate+personality/default.aspx">corporate personality</category></item></channel></rss>
