<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.architectingconnectedsystems.com/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>ACS Blogs</title><link>http://blogs.architectingconnectedsystems.com/blogs/default.aspx</link><description>A blog site for Architecting Connected Systems staff to tell the world about their exploits in &lt;BR&gt;SharePoint 2007/2010, Windows Workflow Foundation (3.0/4.0) and other great technologies!</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 (Build: 60809.935)</generator><item><title>Oracle Portal 10g to SharePoint Migration</title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2012/01/27/Oracle-Portal-to-SharePoint-Migration.aspx</link><pubDate>Fri, 27 Jan 2012 17:08:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:416</guid><dc:creator>cjg</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Do you have Oracle Portal 10g?&amp;nbsp; Want to move to SharePoint with full fidelity?&amp;nbsp; I have scripts that will do exactly that!&amp;nbsp; This would include:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Portal Groups&lt;/li&gt;&lt;li&gt;All pages with all &amp;quot;things&amp;quot; (URLs, content, files)&lt;/li&gt;&lt;li&gt;Files with versions and comments&lt;/li&gt;&lt;li&gt;Workflows&lt;/li&gt;&lt;li&gt;Permissions&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Contact me at:&lt;br /&gt;&lt;a href="mailto:chris@architectingconnectedsystems.com"&gt;chris@architectingconnectedsystems.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I&amp;#39;d be happy to chat with you about moving to SharePoint 2010!&lt;/p&gt;&lt;p&gt;Oh, and here are some interesting facts about Oracle Portal&amp;nbsp;versus SharePoint:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Workflows have steps for approvals (whereas SharePoint an approval is just a single step)&lt;/li&gt;&lt;li&gt;Groups are global in Oracle Portal (SharePoint groups are limited to site collections)&lt;/li&gt;&lt;li&gt;Oracle uses a concept of &amp;quot;things&amp;quot;.&amp;nbsp; Everything is one and everything can have other &amp;quot;things&amp;quot;.&amp;nbsp; This is *super* powerful notion and means that a single page can contain &amp;quot;things&amp;quot;, where a thing can be a URL, a file, content, etc.&amp;nbsp; SharePoint pages can only have web parts on them.&lt;/li&gt;&lt;li&gt;Each &amp;quot;thing&amp;quot; on the page can have security for it, SharePoint doesn&amp;#39;t let you do this&lt;/li&gt;&lt;li&gt;Each &amp;quot;thing&amp;quot; has a version (no matter what it is), SharePoint doesn&amp;#39;t have this&lt;/li&gt;&lt;li&gt;Each &amp;quot;thing&amp;quot; on a page can have a workflow.&amp;nbsp; SharePoint workflows are tied to list items, you can&amp;#39;t workflow web parts&lt;/li&gt;&lt;li&gt;Oracel has a built in notion of shortcut links (a GUID that takes you to the page you want to hit), SharePoint doesn&amp;#39;t&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;So what saves SharePoint at the end of the day?&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Office Web Apps is the savior, you can&amp;#39;t do fancy Office Document manipulation in Oracle&lt;/li&gt;&lt;li&gt;Oracle Portal is &lt;strong&gt;*much*&lt;/strong&gt; more expensive than SharePoint&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Chris&lt;/p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=416" width="1" height="1"&gt;</description><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/oracle+portal/default.aspx">oracle portal</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/oracle/default.aspx">oracle</category></item><item><title>1 Year Anniversary Tribute - eBay upgrade video</title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2012/01/20/1-year-anniversary-_2D00_-eBay-upgrade-video.aspx</link><pubDate>Fri, 20 Jan 2012 01:40:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:414</guid><dc:creator>cjg</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;As a tribute to the 1-year anniversary of the start of the eBay upgrade project, I thought I would share the video I created to show at our celebration party in San Jose.&amp;nbsp; It is a great video, and shows how much fun we had (and you should too) when we did the upgrade.&amp;nbsp; The team deserves a tremendous amout of&amp;nbsp;credit for the work and effort they put in...so here it is:&lt;/p&gt;&lt;p&gt;&lt;a href="http://youtu.be/EnK2c_lntOY"&gt;http://youtu.be/EnK2c_lntOY&lt;/a&gt;&lt;/p&gt;&lt;p&gt;As a run down, here is what occurs in the video:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The SharePoint odessey - the 2001 to 2010 evolution.&amp;nbsp; When the monkey discovers the monolith and evolves.&amp;nbsp; Simiarly, eBay&amp;#39;s discovery of SharePoint 2010 starts with a monolithic-white board (its only appropriate that we use Richard Struass&amp;#39;s &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Also_sprach_Zarathustra_(Richard_Strauss)" title="Also sprach Zarathustra (Richard Strauss)"&gt;&lt;em&gt;&lt;font color="#0645ad"&gt;Also sprach Zarathustra&lt;/font&gt;&lt;/em&gt;&lt;/a&gt;&amp;nbsp;to show this)&lt;/li&gt;&lt;li&gt;You see that it really is a love of &amp;quot;SharePoint&amp;quot; that progresses the joining of all parties&lt;/li&gt;&lt;li&gt;As we drive through the initial requirements (found and un-found), you will realize that this project was done in 3.5 months (when similar quotes were at 14 months at 4x the cost).&amp;nbsp; This drives the selection of Queen&amp;#39;s...&amp;quot;Under Pressure&amp;quot;&lt;/li&gt;&lt;li&gt;At one point you will see Ramin and I on the ground with our hands in the air...it was a fun moment as we were not really knowing what was going to happen...&lt;/li&gt;&lt;li&gt;You will see photos of our countdown timer of the night we went live (we had an upgrade window of the weekend to finish the upgrade successfully).&amp;nbsp; It slowly winds down until the &amp;quot;GO-NOGO Moment&amp;quot;&lt;/li&gt;&lt;li&gt;As the pictures are displayed, you will see various moments over the 3.5 months of us working intent-ly getting the job done&lt;/li&gt;&lt;li&gt;Not everything went as planned and hence you see the &amp;quot;GO-NOGO&amp;quot; which occured at least 4-5 times (some elements include NDR64 discoveries and the infamous Search ResultsProvider that has claimed countless develpers...&lt;/li&gt;&lt;li&gt;Katy Perry&amp;#39;s song of &amp;quot;Firework&amp;quot; is perfect for our dispay of the team members that worked so very hard to make the upgrade happen and thusly are amazingly bright and wonderful people that randomly came&amp;nbsp;together to accomplish something amazing&amp;nbsp;(NOTE: there are moments in the song lyrics&amp;nbsp;that relate to hidden moments)&lt;/li&gt;&lt;li&gt;Let me be the first to say that eBay has an amazing NetOps team that just kicks butt (Kenny Cheng and Ken MacIntosh), they saved our a$$ a few times...&lt;/li&gt;&lt;li&gt;You will see a snapshot of a fortune cookie that &amp;quot;I&amp;quot; got...it was the week of the upgrade and it said &amp;quot;Your hard work is about to pay off&amp;quot;, it was the best fortune EVER!&lt;/li&gt;&lt;li&gt;There were some times when we had some pretty &amp;quot;interesting&amp;quot; dinners...hence the snapshot of the menu...&lt;/li&gt;&lt;li&gt;The video ends with 00:00:00 and pictures of the eBay intranet running SharePoint 2010 and our SharePoint Conference 2011 session - &amp;quot;How eBay successfully upgrade their intranet to 2010&amp;quot;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Enjoy!&lt;br /&gt;Chris&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=414" width="1" height="1"&gt;</description><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/upgrade/default.aspx">upgrade</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/ebay/default.aspx">ebay</category></item><item><title>Fixing: Action 4.0.23.0 of Microsoft.SharePoint.Upgrade.SPSiteWssSequence failed.</title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2012/01/19/Fixing_3A00_-Action-4.0.23.0-of-Microsoft.SharePoint.Upgrade.SPSiteWssSequence-failed_2E00_.aspx</link><pubDate>Thu, 19 Jan 2012 02:11:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:413</guid><dc:creator>cjg</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;This was a tough error, THAT IS AN UPGRADE SHOWSTOPPER, that I ran into a few months ago.&amp;nbsp; Just now getting around to blogging it.&amp;nbsp; Here&amp;#39;s the full error:&lt;/p&gt;&lt;p&gt;&lt;em&gt;[powershell] [SPSiteWssSequence] [ERROR] [9/29/2011 12:02:27 PM]: Action 4.0.23.0 of Microsoft.SharePoint.Upgrade.SPSiteWssSequence failed.&lt;br /&gt;[powershell] [SPSiteWssSequence] [ERROR] [9/29/2011 12:02:27 PM]: Inner Exception: Field name already exists.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;The name used for this field is already used by another field in the list.&amp;nbsp; Select another name and try again.&amp;lt;nativehr&amp;gt;0x81020013&amp;lt;/nativehr&amp;gt;&amp;lt;nativestack&amp;gt;&amp;lt;/nativestack&amp;gt;&lt;br /&gt;[powershell] [SPSiteWssSequence] [ERROR] [9/29/2011 12:02:27 PM]:&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.Library.SPRequestInternalClass.UpdateField(String bstrUrl, String bstrListName, String bstrXML)&lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.Library.SPRequest.UpdateField(String bstrUrl, String bstrListName, String bstrXML)&lt;br /&gt;[powershell] [SPSiteWssSequence] [ERROR] [9/29/2011 12:02:27 PM]: Exception: Field name already exists.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;The name used for this field is already used by another field in the list.&amp;nbsp; Select another name and try again.&lt;br /&gt;[powershell] [SPSiteWssSequence] [ERROR] [9/29/2011 12:02:27 PM]:&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.SPGlobal.HandleComException(COMException comEx)&lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.Library.SPRequest.UpdateField(String bstrUrl, String bstrListName, String bstrXML)&lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.SPField.UpdateCore(Boolean bToggleSealed)&lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.SPField.Update()&lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.SPFieldIndexCollection.IndexOneField(Object field, Boolean bIndexed)&lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.SPFieldIndexCollection.Add(SPField field)&lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.Upgrade.RestoreWorkflowAndDatasourceLibraryPermissions.Upgrade()&lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.Upgrade.SPActionSequence.Upgrade()&lt;/em&gt;&lt;/p&gt;&lt;p&gt;What causes this?&amp;nbsp; Diving into the upgrade code I find that it is obviously trying to add a column to a list.&amp;nbsp; But which one?&amp;nbsp; The hint was in the name of one of the methods - &amp;quot;&lt;em&gt;RestoreWorkflowAndDatasourceLibraryPermissions&amp;quot;.&amp;nbsp; &lt;/em&gt;Looking at this, it is checking for all task lists in each site that are setup for workflow.&lt;/p&gt;&lt;p&gt;I reran the code in powershell and&amp;nbsp;eventually found the offending list:&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;foreach($web in $site.allwebs)&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;{&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;em&gt;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;$ht = new-object system.collections.hashtable&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;em&gt;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;foreach($list in $web.lists)&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;{&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;foreach($ct in $list.ContentTypes)&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;{&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;if ($ct.Id.IsCHildof([Microsoft.SHarePoint.SPBuiltInContentTYpeId]::WorkflowTask))&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;{&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;$ht.add($list.id, $list.id)&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;&amp;quot;Web:&amp;quot; + $web.TItle&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;&amp;quot;List: &amp;quot; + $list.Title&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;&amp;quot;Content Type:&amp;quot; + $ct.Name&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;} #end if&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;em&gt;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;} #end ct&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;} #end list&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;em&gt;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;foreach($id in $ht.values)&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;{&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;$l1 = $web.lists[$id]&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;em&gt;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;#$g = new-object system.guid ([Microsoft.SHarePoint.SPBuiltInFieldId]::WorkflowInstanceID.tostring())&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;$g = new-object system.guid (&amp;quot;de8beacf-5505-47cd-80a6-aa44e7ffe2f4&amp;quot;)&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;#$l1.FieldIndexes.delete($g);&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;$l1.FieldIndexes.add($list.fields[[Microsoft.SHarePoint.SPBuiltInFieldId]::WorkflowInstanceID]);&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;$l1.update()&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;em&gt;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;#$g = new-object system.guid([Microsoft.SHarePoint.SPBuiltInFieldId]::Guid.tostring())&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;$g = new-object system.guid(&amp;quot;ae069f25-3ac2-4256-b9c3-15dbc15da0e0&amp;quot;)&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;em&gt;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;#$l1.FieldIndexes.delete($g);&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;$l1.FieldIndexes.add($list.fields[[Microsoft.SHarePoint.SPBuiltInFieldId]::Guid]);&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;em&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;$l1.update()&lt;/font&gt;&lt;/font&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;} #end hashtable&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;} #end web&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;strong&gt;What was the cause?&amp;nbsp; &amp;nbsp;When you create a workflow, it asks for a task list.&amp;nbsp; You can point the workflow at an existing task list or create a new one.&amp;nbsp; It seems that not only did the users create a workflow that pointed to an existing list, but that list in fact was the task list that the workflow was using for task tracking!!&amp;nbsp; This causes a loop in the upgrade code and hence the failure.&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;strong&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;strong&gt;&lt;font face="Calibri" size="3"&gt;Fixing it requires deleting some of the fields that were added by the workflow.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Enjoy!&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Chris&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=413" width="1" height="1"&gt;</description><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/upgrade/default.aspx">upgrade</category></item><item><title>Adding &quot;Add folder&quot; to SharePoint 2010 document library views</title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2012/01/17/Adding-_2200_Add-folder_2200_-to-SharePoint-2010-document-library-views.aspx</link><pubDate>Tue, 17 Jan 2012 17:08:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:412</guid><dc:creator>cjg</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;A customer asked me if they could add a &amp;quot;Add Folder&amp;quot; to the document library list type in SharePoint 2010.&amp;nbsp; I said, &amp;quot;probably&amp;quot;, but wasn&amp;#39;t sure exactly how one might do it.&amp;nbsp; I dug in and found it!&amp;nbsp; The secret lies in the vwstyles.xsl file.&amp;nbsp; It is located in:&lt;/p&gt;&lt;em&gt;C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\XSL&lt;/em&gt; &lt;p&gt;You will want to open the file and find the template called:&lt;/p&gt;&lt;p&gt;&lt;em&gt;&amp;lt;xsl:template name=&amp;quot;Freeform&amp;quot;&amp;gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;From there you should see some XSLT that is responsible for creating the &amp;quot;Add document&amp;quot; link.&amp;nbsp; Right above the variable declaraton&amp;quot;&amp;lt;xsl:variable name=&amp;quot;Url&amp;quot;&amp;gt;&amp;quot;, you need to add a new one:&lt;/p&gt;&lt;p&gt;&lt;em&gt;&amp;lt;xsl:variable name=&amp;quot;FolderUrl&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;xsl:value-of select=&amp;quot;$HttpVDir&amp;quot;/&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;&lt;/em&gt;&lt;a href="mailto:$XmlDefinition/List/@title%22%3E%3C/A%3E/Forms/Upload.aspx?Type=1&amp;amp;amp;IsDlg=1&amp;amp;amp;List=&amp;lt;xsl:value-of"&gt;&lt;em&gt;$XmlDefinition/List/@title&amp;quot;/&amp;gt;/Forms/Upload.aspx?Type=1&amp;amp;amp;IsDlg=1&amp;amp;amp;List=&amp;lt;xsl:value-of&lt;/em&gt;&lt;/a&gt;&lt;em&gt; select=&amp;quot;$List&amp;quot;/&amp;gt;&amp;amp;amp;RootFolder=&amp;lt;xsl:value-of select=&amp;quot;&lt;/em&gt;&lt;a href="mailto:$XmlDefinition/List/@RootFolder%22/"&gt;&lt;em&gt;$XmlDefinition/List/@RootFolder&amp;quot;/&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&amp;gt;&lt;br /&gt;&amp;lt;/xsl:variable&amp;gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Then add a new table row below the current one that defines the &amp;quot;Add Document&amp;quot; link:&lt;/p&gt;&lt;p&gt;&lt;em&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td class=&amp;quot;ms-addnew&amp;quot; style='padding-bottom: 3px'&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span style='height:10px;width:10px;position:relative;display:inline-block;overflow:hidden;' class='s4-clust'&amp;gt;&amp;lt;img src='/_layouts/images/fgimg.png' alt='' style='left:-0px !important;top:-128px !important;position:absolute;'&amp;nbsp; /&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:text disable-output-escaping=&amp;quot;yes&amp;quot; ddwrt:nbsp-preserve=&amp;quot;yes&amp;quot;&amp;gt;&amp;amp;amp;nbsp;&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:when test=&amp;quot;&lt;/em&gt;&lt;a href="mailto:List/@TemplateType"&gt;&lt;em&gt;List/@TemplateType&lt;/em&gt;&lt;/a&gt;&lt;em&gt; = &amp;#39;115&amp;#39;&amp;quot;&amp;gt;&lt;br /&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;&amp;nbsp; &amp;lt;a class=&amp;quot;ms-addnew&amp;quot; id=&amp;quot;{$ID}-{$WPQ}&amp;quot;&lt;br /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; href=&amp;quot;{$Url}&amp;quot;&lt;br /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; onclick=&amp;quot;BLOCKED SCRIPTNewItem2(event, &amp;amp;quot;{$Url}&amp;amp;quot;);BLOCKED SCRIPTreturn false;&amp;quot;&lt;br /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; target=&amp;quot;_self&amp;quot;&amp;gt;&lt;br /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:value-of select=&amp;quot;$AddNewText&amp;quot; /&amp;gt;&lt;br /&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;&amp;nbsp; &amp;lt;/a&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:otherwise&amp;gt;&lt;br /&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;&amp;nbsp; &amp;lt;a class=&amp;quot;ms-addnew&amp;quot; id=&amp;quot;{$ID}Folder&amp;quot;&lt;br /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; href=&amp;quot;{$FolderUrl}&amp;quot;&lt;br /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; onclick=&amp;quot;BLOCKED SCRIPTNewItem2(event, &amp;amp;quot;{$FolderUrl}&amp;amp;quot;);BLOCKED SCRIPTreturn false;&amp;quot;&lt;br /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; target=&amp;quot;_self&amp;quot;&amp;gt;Add folder&lt;br /&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;&amp;nbsp; &amp;lt;/a&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;BAM!&amp;nbsp; You now have a handly &amp;quot;Add folder&amp;quot; link at the bottom of the page instead of using the ribbon.&amp;nbsp; NOTE:&amp;nbsp; This change would need to be applied to all WFEs in the farm and you would need to re-check after every CU or Service Pack deployed.&amp;nbsp; Also, you will need to add some other logic to keep it from showing up in places you don&amp;#39;t want it...I&amp;#39;ll have to add this in a later update to this blog.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;NOTE:&amp;nbsp;Also keep in mind that this file is cached on its first load and an IISRESET is required in order to see any changes.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Enjoy!&lt;br /&gt;Chris&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=412" width="1" height="1"&gt;</description></item><item><title>CanUpgrade [Microsoft.SharePoint.Administration.SPIisWebSite] failed.</title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2012/01/09/CanUpgrade-_5B00_Microsoft.SharePoint.Administration.SPIisWebSite_5D00_-failed_2E00_.aspx</link><pubDate>Mon, 09 Jan 2012 17:40:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:411</guid><dc:creator>cjg</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;How do I always seem to be the guy finding this stuff is beyond me, but I&amp;#39;m always excited when I figure this stuff out...ok, was getting this error after trying to run the PSConfig after an upgrade to SP1 and December 2011 CU.&lt;/p&gt;&lt;p&gt;[OWSTIMER] [SPUpgradeSession] [INFO] [1/8/2012 1:48:44 PM]: SPWebApplication Name=SharePoint - xxx&lt;br /&gt;[OWSTIMER] [SPUpgradeSession] [ERROR] [1/8/2012 1:48:44 PM]: CanUpgrade [Microsoft.SharePoint.Administration.SPIisWebSite] failed.&lt;br /&gt;[OWSTIMER] [SPUpgradeSession] [INFO] [1/8/2012 1:48:44 PM]: SPWebApplication Name=SharePoint - xxx&lt;br /&gt;[OWSTIMER] [SPUpgradeSession] [ERROR] [1/8/2012 1:48:44 PM]: Exception: The system cannot find the path specified.&lt;br /&gt;[OWSTIMER] [SPUpgradeSession] [INFO] [1/8/2012 1:48:44 PM]: SPWebApplication Name=SharePoint - xxx&lt;br /&gt;[OWSTIMER] [SPUpgradeSession] [ERROR] [1/8/2012 1:48:44 PM]:&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)&lt;br /&gt;&amp;nbsp;&amp;nbsp; at System.DirectoryServices.DirectoryEntry.Bind()&lt;br /&gt;&amp;nbsp;&amp;nbsp; at System.DirectoryServices.DirectoryEntry.get_AdsObject()&lt;br /&gt;&amp;nbsp;&amp;nbsp; at System.DirectoryServices.PropertyValueCollection.PopulateList()&lt;br /&gt;&amp;nbsp;&amp;nbsp; at System.DirectoryServices.PropertyValueCollection..ctor(DirectoryEntry entry, String propertyName)&lt;br /&gt;&amp;nbsp;&amp;nbsp; at System.DirectoryServices.PropertyCollection.get_Item(String propertyName)&lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.Administration.SPIisVirtualDirectory.get_Path()&lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.Administration.SPProvisioningAssistant.GetBuildVersionOnIisWebSite(Int32 iisInstanceId)&lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.Upgrade.SPSequence.get_CanUpgrade()&lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.Upgrade.SPUpgradeSession.CanUpgrade(Object o)&lt;br /&gt;&lt;br /&gt;So what is causing this?&amp;nbsp; Using the handy reflector tool I went into the upgrade code and found the sequence that upgrades SPWebApplication objects.&amp;nbsp; This creates a list of all children objects that must be upgraded and then upgrades those objects one by one.&amp;nbsp; One of the children objects is the created or extended IIS web sites.&amp;nbsp; In order to check if these &amp;quot;CanUpgrade&amp;quot;, it must look at the file in the IIS virtual directory &amp;quot;_vti_pvt\buildversion.cnf&amp;quot;.&amp;nbsp; If it can&amp;#39;t find this file (the virtual path is deleted or missing), then the upgrade will stop for that web application and your upgrade is stuck in a weird state with this crappy error &amp;quot;Product / patch installation or server upgrade required&amp;quot;!&lt;br /&gt;&lt;br /&gt;How do you fix?&amp;nbsp; You can try to add the directory back, but how do you know what the directory is that you need to add?&amp;nbsp; Funny thing, you can&amp;#39;t find it unless you open up the SharePoint_Config database.&amp;nbsp; I will spare you the details and jump to the &amp;quot;supported&amp;quot; way of fixing this.&amp;nbsp;&amp;nbsp;In Central administration you won&amp;#39;t see the offending missing zone to delete it, therefore you must resort to powershell:&lt;/p&gt;&lt;p&gt;&lt;em&gt;$webapp = get-spwebapplication &amp;quot;&lt;/em&gt;&lt;a href="http://yourfailedurl/"&gt;&lt;em&gt;http://yourfailedurl&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&amp;quot;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;foreach($setting in $webapp.iissettings.values)&lt;br /&gt;{&lt;br /&gt;$setting.path&lt;br /&gt;&lt;/em&gt;&lt;em&gt;}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;foreach($zone in $webapp.iissettings.keys)&lt;br /&gt;{&lt;br /&gt;$z = $zone&lt;br /&gt;}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$webapp.IisSettings.Remove(&amp;quot;missingzone&amp;quot;)&lt;br /&gt;$webapp.update()&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Rerun your PSconfig command, viola, you are back in business!!!&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Enjoy!&lt;br /&gt;Chris&lt;/p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=411" width="1" height="1"&gt;</description><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category></item><item><title>Managed Metadata and SharePoint Search - Error from SharePoint site: *** Index was outside the bounds of the array.</title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/12/27/Managed-Metadata-and-SharePoint-Search-_2D00_-Error-from-SharePoint-site_3A00_-_2A002A002A00_-Index-was-outside-the-bounds-of-the-array_2E00_.aspx</link><pubDate>Tue, 27 Dec 2011 19:57:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:406</guid><dc:creator>cjg</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;There are a lot of posts out there saying that this is caused by a&amp;nbsp;space in the name of the column.&amp;nbsp; I&amp;#39;m sure that is one issue, but their is a deeper one than this.&amp;nbsp;If you are like me and you want to tag lots of content in your site using various tools or your own, most of them do not know that they need to update the hidden note field to have a specific value too.&lt;/p&gt;&lt;p&gt;If you create a TaxonomyField and then set its value:&lt;/p&gt;&lt;p&gt;-1#TermName|TermGuid&lt;/p&gt;&lt;p&gt;This will add the value to the local HiddenTaxonomyList properly and you will get resolution when you look at the value in the editing of the item, but you missed a step!&amp;nbsp; Simply doing the first step will only set the value to &amp;quot;|TermGuid&amp;quot; for the note field.&amp;nbsp; SP Search wants to look up the default value via the TermName, not the Guid.&amp;nbsp; Major fail if you ask me (it should be able to do both).&lt;/p&gt;&lt;p&gt;You must also set the hidden note field (its name will be &amp;quot;FieldName_0&amp;quot;)&amp;nbsp;to a value:&lt;/p&gt;&lt;p&gt;TermName|TermGuid&lt;/p&gt;&lt;p&gt;After doing this, FAST\Sharepoint will index your column and you are off an running with awesome term searching in your search center!&lt;/p&gt;&lt;p&gt;Some example code in PowerShell:&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;function CreateField($list, $name, $fieldname)&lt;br /&gt;{&lt;br /&gt;#setup the MMS&lt;br /&gt;$site = get-spsite $global:site&lt;br /&gt;$session = get-sptaxonomysession -site $site&lt;br /&gt;$termstore = $session.termstores[&amp;quot;Managed Metadata Service&amp;quot;]&lt;br /&gt;$termGroup = $termstore.groups[&amp;quot;GroupName&amp;quot;]&lt;br /&gt;$termSet = $termGroup.TermSets[$name]&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;$field = $list.Fields.CreateNewField(&amp;quot;TaxonomyFieldType&amp;quot;,$fieldname);&lt;br /&gt;$field.sspid = $termstore.id&lt;br /&gt;$field.termsetid = $termSet.id&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;$list.fields.add($field)&lt;br /&gt;$list.update()&lt;br /&gt;}&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;function UpdateMMSNote($item, $name)&lt;br /&gt;{&lt;br /&gt;$text = $item[$name].Label + &amp;quot;|&amp;quot; + $item[$name].TermGuid&lt;br /&gt;$name = $name + &amp;quot;_0&amp;quot;&lt;br /&gt;$item[$name] = $text&lt;br /&gt;}&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;function SetField($item, $termsetname, $fieldname, $value)&lt;br /&gt;{&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;#setup the MMS&lt;br /&gt;$site = get-spsite $global:site&lt;br /&gt;$session = get-sptaxonomysession -site $site&lt;br /&gt;$termstore = $session.termstores[&amp;quot;Managed Metadata Service&amp;quot;]&lt;br /&gt;$termGroup = $termstore.groups[&amp;quot;GroupName&amp;quot;]&lt;br /&gt;$termSet = $termGroup.TermSets[$termsetname]&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;$term = $termset.terms[$value];&lt;br /&gt;$item[$fieldname] = &amp;quot;-1;#&amp;quot; + $term.labels[0].value + &amp;quot;|&amp;quot; + $term.id&lt;br /&gt;$item.update()&lt;br /&gt;}&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;CreateField $list &amp;quot;Technology&amp;quot; &amp;quot;Technology&amp;quot;&lt;br /&gt;SetField $item &amp;quot;Technology&amp;quot; &amp;quot;Technology&amp;quot; &amp;quot;SharePoint&amp;quot;&lt;br /&gt;UpdateMMSNote $item &amp;quot;Technology&amp;quot;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Enjoy!&lt;br /&gt;Chris&lt;/p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=406" width="1" height="1"&gt;</description><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/FAST+Search/default.aspx">FAST Search</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/Managed+Metadata/default.aspx">Managed Metadata</category></item><item><title>Fixing GroupBy List Views in SharePoint 2010 with SharePoint Designer</title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/12/26/Fixing-GroupBy-List-Views-in-SharePoint-2010-with-SharePoint-Designer.aspx</link><pubDate>Mon, 26 Dec 2011 21:02:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:405</guid><dc:creator>cjg</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;You may run into a problem with getting your list views to work in SharePoint 2010 if you keep your old 2007 look and feel.&amp;nbsp; Their are several articles out there that show you how to fix it programmatically, but not as an end user.&lt;/p&gt;&lt;p&gt;The problem is with list views that have a &amp;quot;Group by&amp;quot; added and&amp;nbsp;the default XML in the CAML query is set to &amp;quot;TRUE&amp;quot; for the Collapsed attribute.&amp;nbsp; Here are the steps to fix this:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;You can open the view page you created&amp;nbsp;for the list in SharePoint designer&lt;/li&gt;&lt;li&gt;Do a search for &amp;quot;GroupBy&amp;quot; in the page ASP.NET code. &lt;/li&gt;&lt;li&gt;Set the Collapse property to &amp;quot;FALSE&amp;quot;&lt;/li&gt;&lt;li&gt;Add the following Javascript to the page to &amp;quot;Click&amp;quot; the links to collapse the elements:&lt;/li&gt;&lt;/ol&gt;&lt;div class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;span style="color:#1f497d;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;&amp;lt;script language=&amp;quot;javascript&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;span style="color:#1f497d;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;ExpLinkFormer = function()&lt;br /&gt;{&lt;br /&gt;this._init();&lt;br /&gt;}&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;span style="color:#1f497d;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;ExpLinkFormer.prototype = {&lt;br /&gt;_init: function() {&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;span style="color:#1f497d;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;var links = document.links;&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;span style="color:#1f497d;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;em&gt;for (var i = 0; i &amp;lt; links.length; i++) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;if (links&lt;img src="http://blogs.architectingconnectedsystems.com/emoticons/emotion-55.gif" alt="Idea" /&gt;.href == &amp;quot;BLOCKED SCRIPT&amp;quot; &amp;amp;&amp;amp; links&lt;img src="http://blogs.architectingconnectedsystems.com/emoticons/emotion-55.gif" alt="Idea" /&gt;.onclick.toString().indexOf(&amp;quot;ExpCollGroup&amp;quot;) &amp;gt; -1) {&lt;br /&gt;links&lt;img src="http://blogs.architectingconnectedsystems.com/emoticons/emotion-55.gif" alt="Idea" /&gt;.click();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;var expLnk = new ExpLinkFormer();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/em&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;strong&gt;Save the page - problem solved!&lt;/strong&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;strong&gt;Repeat for all the views that have the problem&lt;/strong&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;strong&gt;Enjoy!&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;strong&gt;Chris&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=405" width="1" height="1"&gt;</description><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/List+Views/default.aspx">List Views</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/GroupBy/default.aspx">GroupBy</category></item><item><title>SQL Azure supported tables/views</title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/12/26/SQL-Azure-supported-tables_2F00_views.aspx</link><pubDate>Mon, 26 Dec 2011 20:52:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:404</guid><dc:creator>cjg</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Here is a complete list of supported tables\views in SQL Azure (11.0.1814.30):&lt;/p&gt;&lt;p&gt;sys.all_columns;&lt;br /&gt;sys.all_objects;&lt;br /&gt;sys.all_parameters;&lt;br /&gt;sys.all_sql_modules;&lt;br /&gt;sys.all_views;&lt;br /&gt;sys.assemblies;&lt;br /&gt;sys.assembly_types;&lt;br /&gt;sys.CHECK_CONSTRAINTS;&lt;br /&gt;sys.column_type_usages;&lt;br /&gt;sys.columns;&lt;br /&gt;sys.COLUMNS;&lt;br /&gt;sys.computed_columns;&lt;br /&gt;sys.database_permissions;&lt;br /&gt;sys.database_role_members;&lt;br /&gt;sys.databases;&lt;br /&gt;sys.default_constraints;&lt;br /&gt;sys.dm_exec_requests;&lt;br /&gt;sys.dm_exec_sessions;&lt;br /&gt;sys.dm_tran_active_transactions;&lt;br /&gt;sys.dm_tran_database_transactions;&lt;br /&gt;sys.dm_tran_locks;&lt;br /&gt;sys.dm_tran_session_transactions;&lt;br /&gt;sys.event_notification_event_types;&lt;br /&gt;sys.event_notifications;&lt;br /&gt;sys.events;&lt;br /&gt;sys.foreign_key_columns;&lt;br /&gt;sys.foreign_keys;&lt;br /&gt;sys.identity_columns;&lt;br /&gt;sys.index_columns;&lt;br /&gt;sys.indexes;&lt;br /&gt;sys.key_constraints;&lt;br /&gt;sys.numbered_procedure_parameters;&lt;br /&gt;sys.numbered_procedures;&lt;br /&gt;sys.objects;&lt;br /&gt;sys.parameters;&lt;br /&gt;sys.plan_guides;&lt;br /&gt;sys.procedures;&lt;br /&gt;sys.schemas;&lt;br /&gt;sys.spatial_index_tessellations;&lt;br /&gt;sys.spatial_indexes;&lt;br /&gt;sys.spatial_reference_systems;&lt;br /&gt;sys.sql_expression_dependencies;&lt;br /&gt;sys.sql_logins;&lt;br /&gt;sys.sql_modules;&lt;br /&gt;sys.stats;&lt;br /&gt;sys.stats_columns;&lt;br /&gt;sys.synonyms;&lt;br /&gt;sys.syscharsets;&lt;br /&gt;sys.syscolumns;&lt;br /&gt;sys.syscursorrefs;&lt;br /&gt;sys.syscursors;&lt;br /&gt;sys.sysdatabases;&lt;br /&gt;sys.syslanguages;&lt;br /&gt;sys.sysobjects;&lt;br /&gt;sys.sysreferences;&lt;br /&gt;sys.system_columns;&lt;br /&gt;sys.system_objects;&lt;br /&gt;sys.system_parameters;&lt;br /&gt;sys.system_sql_modules;&lt;br /&gt;sys.system_views;&lt;br /&gt;sys.systypes;&lt;br /&gt;sys.sysusers;&lt;br /&gt;sys.table_types;&lt;br /&gt;sys.tables;&lt;br /&gt;sys.trigger_event_types;&lt;br /&gt;sys.trigger_events;&lt;br /&gt;sys.triggers;&lt;br /&gt;sys.types;&lt;br /&gt;sys.views;&lt;/p&gt;&lt;p&gt;Unsupported tables:&lt;/p&gt;&lt;p&gt;sys.allocation_units;&lt;br /&gt;sys.assembly_modules;&lt;br /&gt;sys.assembly_references;&lt;br /&gt;sys.asymmetric_keys;&lt;br /&gt;sys.backup_devices;&lt;br /&gt;sys.certificates;&lt;br /&gt;sys.change_tracking_databases;&lt;br /&gt;sys.change_tracking_tables;&lt;br /&gt;sys.COLUMN_DOMAIN_USAGE;&lt;br /&gt;sys.COLUMN_PRIVILEGES;&lt;br /&gt;sys.column_xml_schema_collection_usages;&lt;br /&gt;sys.configurations;&lt;br /&gt;sys.CONSTRAINT_COLUMN_USAGE;&lt;br /&gt;sys.CONSTRAINT_TABLE_USAGE;&lt;br /&gt;sys.conversation_endpoints;&lt;br /&gt;sys.conversation_groups;&lt;br /&gt;sys.conversation_priorities;&lt;br /&gt;sys.credentials;&lt;br /&gt;sys.crypt_properties;&lt;br /&gt;sys.cryptographic_providers;&lt;br /&gt;sys.data_spaces;&lt;br /&gt;sys.database_audit_specification_details;&lt;br /&gt;sys.database_audit_specifications;&lt;br /&gt;sys.database_files;&lt;br /&gt;sys.database_mirroring;&lt;br /&gt;sys.database_mirroring_endpoints;&lt;br /&gt;sys.database_mirroring_witnesses;&lt;br /&gt;sys.database_principal_aliases;&lt;br /&gt;sys.database_principals;&lt;br /&gt;sys.database_recovery_status;&lt;br /&gt;sys.destination_data_spaces;&lt;br /&gt;sys.dm_audit_actions;&lt;br /&gt;sys.dm_audit_class_type_map;&lt;br /&gt;sys.dm_broker_activated_tasks;&lt;br /&gt;sys.dm_broker_connections;&lt;br /&gt;sys.dm_broker_forwarded_messages;&lt;br /&gt;sys.dm_broker_queue_monitors;&lt;br /&gt;sys.dm_cdc_errors;&lt;br /&gt;sys.dm_cdc_log_scan_sessions;&lt;br /&gt;sys.dm_clr_appdomains;&lt;br /&gt;sys.dm_clr_loaded_assemblies;&lt;br /&gt;sys.dm_clr_properties;&lt;br /&gt;sys.dm_clr_tasks;&lt;br /&gt;sys.dm_cryptographic_provider_properties;&lt;br /&gt;sys.dm_database_encryption_keys;&lt;br /&gt;sys.dm_db_file_space_usage;&lt;br /&gt;sys.dm_db_index_usage_stats;&lt;br /&gt;sys.dm_db_mirroring_auto_page_repair;&lt;br /&gt;sys.dm_db_mirroring_connections;&lt;br /&gt;sys.dm_db_mirroring_past_actions;&lt;br /&gt;sys.dm_db_missing_index_details;&lt;br /&gt;sys.dm_db_missing_index_group_stats;&lt;br /&gt;sys.dm_db_missing_index_groups;&lt;br /&gt;sys.dm_db_partition_stats;&lt;br /&gt;sys.dm_db_persisted_sku_features;&lt;br /&gt;sys.dm_db_script_level;&lt;br /&gt;sys.dm_db_session_space_usage;&lt;br /&gt;sys.dm_db_task_space_usage;&lt;br /&gt;sys.dm_exec_background_job_queue;&lt;br /&gt;sys.dm_exec_background_job_queue_stats;&lt;br /&gt;sys.dm_exec_cached_plans;&lt;br /&gt;sys.dm_exec_connections;&lt;br /&gt;sys.dm_exec_procedure_stats;&lt;br /&gt;sys.dm_exec_query_memory_grants;&lt;br /&gt;sys.dm_exec_query_optimizer_info;&lt;br /&gt;sys.dm_exec_query_resource_semaphores;&lt;br /&gt;sys.dm_exec_query_stats;&lt;br /&gt;sys.dm_exec_query_transformation_stats;&lt;br /&gt;sys.dm_exec_trigger_stats;&lt;br /&gt;sys.dm_filestream_file_io_handles;&lt;br /&gt;sys.dm_filestream_file_io_requests;&lt;br /&gt;sys.dm_fts_active_catalogs;&lt;br /&gt;sys.dm_fts_fdhosts;&lt;br /&gt;sys.dm_fts_index_population;&lt;br /&gt;sys.dm_fts_memory_buffers;&lt;br /&gt;sys.dm_fts_memory_pools;&lt;br /&gt;sys.dm_fts_outstanding_batches;&lt;br /&gt;sys.dm_fts_population_ranges;&lt;br /&gt;sys.dm_io_backup_tapes;&lt;br /&gt;sys.dm_io_cluster_shared_drives;&lt;br /&gt;sys.dm_io_pending_io_requests;&lt;br /&gt;sys.dm_os_buffer_descriptors;&lt;br /&gt;sys.dm_os_child_instances;&lt;br /&gt;sys.dm_os_cluster_nodes;&lt;br /&gt;sys.dm_os_dispatcher_pools;&lt;br /&gt;sys.dm_os_dispatchers;&lt;br /&gt;sys.dm_os_hosts;&lt;br /&gt;sys.dm_os_latch_stats;&lt;br /&gt;sys.dm_os_loaded_modules;&lt;br /&gt;sys.dm_os_memory_allocations;&lt;br /&gt;sys.dm_os_memory_brokers;&lt;br /&gt;sys.dm_os_memory_cache_clock_hands;&lt;br /&gt;sys.dm_os_memory_cache_counters;&lt;br /&gt;sys.dm_os_memory_cache_entries;&lt;br /&gt;sys.dm_os_memory_cache_hash_tables;&lt;br /&gt;sys.dm_os_memory_clerks;&lt;br /&gt;sys.dm_os_memory_node_access_stats;&lt;br /&gt;sys.dm_os_memory_nodes;&lt;br /&gt;sys.dm_os_memory_objects;&lt;br /&gt;sys.dm_os_memory_pools;&lt;br /&gt;sys.dm_os_nodes;&lt;br /&gt;sys.dm_os_performance_counters;&lt;br /&gt;sys.dm_os_process_memory;&lt;br /&gt;sys.dm_os_ring_buffers;&lt;br /&gt;sys.dm_os_schedulers;&lt;br /&gt;sys.dm_os_spinlock_stats;&lt;br /&gt;sys.dm_os_stacks;&lt;br /&gt;sys.dm_os_sublatches;&lt;br /&gt;sys.dm_os_sys_info;&lt;br /&gt;sys.dm_os_sys_memory;&lt;br /&gt;sys.dm_os_tasks;&lt;br /&gt;sys.dm_os_threads;&lt;br /&gt;sys.dm_os_virtual_address_dump;&lt;br /&gt;sys.dm_os_wait_stats;&lt;br /&gt;sys.dm_os_waiting_tasks;&lt;br /&gt;sys.dm_os_worker_local_storage;&lt;br /&gt;sys.dm_os_workers;&lt;br /&gt;sys.dm_qn_subscriptions;&lt;br /&gt;sys.dm_repl_articles;&lt;br /&gt;sys.dm_repl_schemas;&lt;br /&gt;sys.dm_repl_tranhash;&lt;br /&gt;sys.dm_repl_traninfo;&lt;br /&gt;sys.dm_resource_governor_configuration;&lt;br /&gt;sys.dm_resource_governor_resource_pools;&lt;br /&gt;sys.dm_resource_governor_workload_groups;&lt;br /&gt;sys.dm_server_audit_status;&lt;br /&gt;sys.dm_tran_active_snapshot_database_transactions;&lt;br /&gt;sys.dm_tran_commit_table;&lt;br /&gt;sys.dm_tran_current_snapshot;&lt;br /&gt;sys.dm_tran_current_transaction;&lt;br /&gt;sys.dm_tran_top_version_generators;&lt;br /&gt;sys.dm_tran_transactions_snapshot;&lt;br /&gt;sys.dm_tran_version_store;&lt;br /&gt;sys.dm_xe_map_values;&lt;br /&gt;sys.dm_xe_object_columns;&lt;br /&gt;sys.dm_xe_objects;&lt;br /&gt;sys.dm_xe_packages;&lt;br /&gt;sys.dm_xe_session_event_actions;&lt;br /&gt;sys.dm_xe_session_events;&lt;br /&gt;sys.dm_xe_session_object_columns;&lt;br /&gt;sys.dm_xe_session_targets;&lt;br /&gt;sys.dm_xe_sessions;&lt;br /&gt;sys.DOMAIN_CONSTRAINTS;&lt;br /&gt;sys.DOMAINS;&lt;br /&gt;sys.endpoint_webmethods;&lt;br /&gt;sys.endpoints;&lt;br /&gt;sys.extended_procedures;&lt;br /&gt;sys.extended_properties;&lt;br /&gt;sys.filegroups;&lt;br /&gt;sys.fulltext_catalogs;&lt;br /&gt;sys.fulltext_document_types;&lt;br /&gt;sys.fulltext_index_catalog_usages;&lt;br /&gt;sys.fulltext_index_columns;&lt;br /&gt;sys.fulltext_index_fragments;&lt;br /&gt;sys.fulltext_indexes;&lt;br /&gt;sys.fulltext_languages;&lt;br /&gt;sys.fulltext_stoplists;&lt;br /&gt;sys.fulltext_stopwords;&lt;br /&gt;sys.fulltext_system_stopwords;&lt;br /&gt;sys.function_order_columns;&lt;br /&gt;sys.http_endpoints;&lt;br /&gt;sys.internal_tables;&lt;br /&gt;sys.KEY_COLUMN_USAGE;&lt;br /&gt;sys.key_encryptions;&lt;br /&gt;sys.linked_logins;&lt;br /&gt;sys.login_token;&lt;br /&gt;sys.master_files;&lt;br /&gt;sys.master_key_passwords;&lt;br /&gt;sys.message_type_xml_schema_collection_usages;&lt;br /&gt;sys.messages;&lt;br /&gt;sys.module_assembly_usages;&lt;br /&gt;sys.openkeys;&lt;br /&gt;sys.parameter_type_usages;&lt;br /&gt;sys.parameter_xml_schema_collection_usages;&lt;br /&gt;sys.partition_functions;&lt;br /&gt;sys.partition_parameters;&lt;br /&gt;sys.partition_range_values;&lt;br /&gt;sys.partition_schemes;&lt;br /&gt;sys.partitions;&lt;br /&gt;sys.REFERENTIAL_CONSTRAINTS;&lt;br /&gt;sys.remote_logins;&lt;br /&gt;sys.remote_service_bindings;&lt;br /&gt;sys.resource_governor_configuration;&lt;br /&gt;sys.resource_governor_resource_pools;&lt;br /&gt;sys.resource_governor_workload_groups;&lt;br /&gt;sys.routes;&lt;br /&gt;sys.ROUTINE_COLUMNS;&lt;br /&gt;sys.ROUTINES;&lt;br /&gt;sys.SCHEMATA;&lt;br /&gt;sys.securable_classes;&lt;br /&gt;sys.server_assembly_modules;&lt;br /&gt;sys.server_audit_specification_details;&lt;br /&gt;sys.server_audit_specifications;&lt;br /&gt;sys.server_audits;&lt;br /&gt;sys.server_event_notifications;&lt;br /&gt;sys.server_event_session_actions;&lt;br /&gt;sys.server_event_session_events;&lt;br /&gt;sys.server_event_session_fields;&lt;br /&gt;sys.server_event_session_targets;&lt;br /&gt;sys.server_event_sessions;&lt;br /&gt;sys.server_events;&lt;br /&gt;sys.server_file_audits;&lt;br /&gt;sys.server_permissions;&lt;br /&gt;sys.server_principal_credentials;&lt;br /&gt;sys.server_principals;&lt;br /&gt;sys.server_role_members;&lt;br /&gt;sys.server_sql_modules;&lt;br /&gt;sys.server_trigger_events;&lt;br /&gt;sys.server_triggers;&lt;br /&gt;sys.servers;&lt;br /&gt;sys.service_broker_endpoints;&lt;br /&gt;sys.service_contract_message_usages;&lt;br /&gt;sys.service_contract_usages;&lt;br /&gt;sys.service_contracts;&lt;br /&gt;sys.service_message_types;&lt;br /&gt;sys.service_queue_usages;&lt;br /&gt;sys.service_queues;&lt;br /&gt;sys.services;&lt;br /&gt;sys.soap_endpoints;&lt;br /&gt;sys.sql_dependencies;&lt;br /&gt;sys.symmetric_keys;&lt;br /&gt;sys.sysaltfiles;&lt;br /&gt;sys.syscacheobjects;&lt;br /&gt;sys.syscomments;&lt;br /&gt;sys.sysconfigures;&lt;br /&gt;sys.sysconstraints;&lt;br /&gt;sys.syscurconfigs;&lt;br /&gt;sys.syscursorcolumns;&lt;br /&gt;sys.syscursortables;&lt;br /&gt;sys.sysdepends;&lt;br /&gt;sys.sysdevices;&lt;br /&gt;sys.sysfilegroups;&lt;br /&gt;sys.sysfiles;&lt;br /&gt;sys.sysforeignkeys;&lt;br /&gt;sys.sysfulltextcatalogs;&lt;br /&gt;sys.sysindexes;&lt;br /&gt;sys.sysindexkeys;&lt;br /&gt;sys.syslockinfo;&lt;br /&gt;sys.syslogins;&lt;br /&gt;sys.sysmembers;&lt;br /&gt;sys.sysmessages;&lt;br /&gt;sys.sysoledbusers;&lt;br /&gt;sys.sysopentapes;&lt;br /&gt;sys.sysperfinfo;&lt;br /&gt;sys.syspermissions;&lt;br /&gt;sys.sysprocesses;&lt;br /&gt;sys.sysprotects;&lt;br /&gt;sys.sysremotelogins;&lt;br /&gt;sys.sysservers;&lt;br /&gt;sys.system_components_surface_area_configuration;&lt;br /&gt;sys.system_internals_allocation_units;&lt;br /&gt;sys.system_internals_partition_columns;&lt;br /&gt;sys.system_internals_partitions;&lt;br /&gt;sys.TABLE_CONSTRAINTS;&lt;br /&gt;sys.TABLE_PRIVILEGES;&lt;br /&gt;sys.tcp_endpoints;&lt;br /&gt;sys.trace_categories;&lt;br /&gt;sys.trace_columns;&lt;br /&gt;sys.trace_event_bindings;&lt;br /&gt;sys.trace_events;&lt;br /&gt;sys.trace_subclass_values;&lt;br /&gt;sys.traces;&lt;br /&gt;sys.transmission_queue;&lt;br /&gt;sys.type_assembly_usages;&lt;br /&gt;sys.user_token;&lt;br /&gt;sys.via_endpoints;&lt;br /&gt;sys.VIEW_COLUMN_USAGE;&lt;br /&gt;sys.VIEW_TABLE_USAGE;&lt;br /&gt;sys.xml_indexes;&lt;br /&gt;sys.xml_schema_attributes;&lt;br /&gt;sys.xml_schema_collections;&lt;br /&gt;sys.xml_schema_component_placements;&lt;br /&gt;sys.xml_schema_components;&lt;br /&gt;sys.xml_schema_elements;&lt;br /&gt;sys.xml_schema_facets;&lt;br /&gt;sys.xml_schema_model_groups;&lt;br /&gt;sys.xml_schema_namespaces;&lt;br /&gt;sys.xml_schema_types;&lt;br /&gt;sys.xml_schema_wildcard_namespaces;&lt;br /&gt;sys.xml_schema_wildcards;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=404" width="1" height="1"&gt;</description><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/SQL+Azure/default.aspx">SQL Azure</category></item><item><title>Top SharePoint Conference 2011 Sessions and Stats</title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/10/26/Top-SharePoint-Conference-2011-Sessions-and-Stats.aspx</link><pubDate>Wed, 26 Oct 2011 20:07:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:394</guid><dc:creator>cjg</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;They didn&amp;#39;t say I couldn&amp;#39;t post this data, so here it is.&amp;nbsp; If you wanted to know what sessions you should review\watch, this should help you out.&amp;nbsp; Also, if you are thinking about being a speaker, these are the type of eval scores you should expect to get:&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;Interesting Facts:&lt;/strong&gt;&lt;/p&gt;



&lt;p class="MsoListParagraph" style="text-indent:-0.25in;"&gt;&lt;span style="font-family:'Verdana','sans-serif';"&gt;&lt;span&gt;-&lt;span style="font:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Over
&lt;strong&gt;11,000 evals&lt;/strong&gt; submitted,&lt;/p&gt;

&lt;p class="MsoListParagraph" style="text-indent:-0.25in;"&gt;&lt;span style="font-family:'Verdana','sans-serif';"&gt;&lt;span&gt;-&lt;span style="font:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;Core
Conference Average: 4.28&lt;/strong&gt;&amp;nbsp; (Partner, Customer, Analyst tracks excluded)
(up from 4.24&amp;nbsp;in 2009!),&lt;/p&gt;

&lt;p class="MsoListParagraph" style="text-indent:-0.25in;"&gt;&lt;span style="font-family:'Verdana','sans-serif';"&gt;&lt;span&gt;-&lt;span style="font:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Customer
track avg. 4.1,&lt;/p&gt;

&lt;p class="MsoListParagraph" style="text-indent:-0.25in;"&gt;&lt;span style="font-family:'Verdana','sans-serif';"&gt;&lt;span&gt;-&lt;span style="font:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Partner
track avg. 3.76,&lt;/p&gt;

&lt;p class="MsoListParagraph" style="text-indent:-0.25in;"&gt;&lt;span style="font-family:'Verdana','sans-serif';"&gt;&lt;span&gt;-&lt;span style="font:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Analyst
track avg. 3.79&lt;/p&gt;

&lt;p class="MsoListParagraph" style="text-indent:-0.25in;"&gt;&lt;span style="font-family:'Verdana','sans-serif';"&gt;&lt;span&gt;-&lt;span style="font:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Keynote
avg. 3.83 (only 415 evals)&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;em&gt;(the following stats have sessions with &amp;lt;10 evals
removed)&lt;/em&gt;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-size:14pt;"&gt;Core Track Ranking:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;table cellpadding="0" cellspacing="0" class="MsoNormalTable" style="width:326pt;margin-left:-0.75pt;border-collapse:collapse;"&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:188pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;background:none repeat scroll 0% 0% #dce6f1;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;Track Name&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:94pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;background:none repeat scroll 0% 0% #dce6f1;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;Evals&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:44pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;background:none repeat scroll 0% 0% #dce6f1;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;Average&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:188pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;IT Professional&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:94pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;2303&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:44pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;4.41&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:188pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;Search&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:94pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;931&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:44pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;4.29&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:188pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;Communities/Sites&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:94pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;646&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:44pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;4.27&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:188pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;Insights&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:94pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;1217&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:44pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;4.25&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:188pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;Planning, Deployment and
  Adoption&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:94pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;500&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:44pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;4.25&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:188pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;Internet Business&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:94pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;1064&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:44pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;4.25&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:188pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;Developer&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:94pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;2190&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:44pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;4.25&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:188pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;Content&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:94pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;760&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:44pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;4.19&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:188pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;Office Client&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:94pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;310&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:44pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;4.17&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:188pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;Project&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:94pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;188&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:44pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;4.13&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:188pt;background:none repeat scroll 0% 0% #dce6f1;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;Grand Total&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:94pt;background:none repeat scroll 0% 0% #dce6f1;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;10109&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:44pt;background:none repeat scroll 0% 0% #dce6f1;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;4.28&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
&lt;/table&gt;

&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-size:14pt;color:black;"&gt;Top 20
Sessions Overall&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;table cellpadding="0" cellspacing="0" class="MsoNormalTable" style="width:725.25pt;margin-left:-0.75pt;border-collapse:collapse;"&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:572.25pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;background:none repeat scroll 0% 0% #dce6f1;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;Session&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:85.5pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;background:none repeat scroll 0% 0% #dce6f1;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;Evals&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:67.5pt;border-width:medium medium 1pt;border-style:none none solid;border-color:-moz-use-text-color -moz-use-text-color #95b3d7;background:none repeat scroll 0% 0% #dce6f1;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="color:black;"&gt;Average&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:572.25pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;SPC373: Performance Tuning
  SharePoint 2010&amp;nbsp; (Eric Shupps)&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:85.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;188&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:67.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;4.84&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:572.25pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;SPC402: Deep Dive on SharePoint
  Ribbon Development &amp;amp; Extensibility&amp;nbsp;&amp;nbsp; (Chris O&amp;#39;Brien)&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:85.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;74&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:67.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;4.82&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:572.25pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;SPC393: Step-by-step: Building
  Search Driven Applications That Matter&amp;nbsp; (Scot Hillier)&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:85.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;72&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:67.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;4.82&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:572.25pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;SPC315: Beyond the Basics: An
  Advanced Conversation on FAST Search for SharePoint 2010&amp;nbsp; (Thomas
  Molbach)&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:85.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;58&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:67.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;4.79&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:572.25pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;SPC270: SharePoint 2010
  Solutions for Public Sector&amp;nbsp; (Ken Mallit)&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:85.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;27&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:67.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;4.78&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:572.25pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;SPC224: Architecting and
  Automating SharePoint Governance&amp;nbsp; (Dan Holme)&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:85.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;142&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:67.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;4.77&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:572.25pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;SPC392: Solving Enterprise
  Search Challenges with SharePoint 2010&amp;nbsp; (Matthew McDermott)&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:85.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;41&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:67.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;4.76&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:572.25pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;SPC404: Deep Dive: Implementing
  Kerberos for your BI Applications&amp;nbsp; (Tom Wisnowski)&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:85.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;34&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:67.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;4.74&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:572.25pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;SPC407: Enterprise Deployment
  Considerations for the User Profile Service Application&amp;nbsp;&amp;nbsp; (Spencer
  Harbar)&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:85.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;80&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:67.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;4.74&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:572.25pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;SPC370: Multi-Tenancy with
  SharePoint 2010&amp;nbsp; (Spencer Harbar)&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:85.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;40&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:67.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;4.74&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:572.25pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;SPC202: Attractive Business
  Intelligence: Dashboards, Pivots, Scorecards, KPIs, and Reports Using
  Microsoft SharePoint 2010, Office 2010, PowerPivot, and SQL Server 2008
  R2&amp;nbsp; (Rafal Lukawiecki)&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:85.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;192&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:67.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;4.72&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:572.25pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;SPC385: Service Application
  Federation with SharePoint 2010&amp;nbsp; (Shannon Bray)&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:85.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;15&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:67.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;4.72&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:572.25pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;SPC245: Making SharePoint 2010
  Collaboration Rock by Increasing Findability&amp;nbsp; (Scott Jamison)&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:85.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;73&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:67.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;4.70&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:572.25pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;SPC276: Developing Cloud-Based
  Applications for SharePoint Online using Windows Azure&amp;nbsp; (Steve Fox)&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:85.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;50&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:67.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;4.70&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:572.25pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;SPC319: Application Lifecycle
  Management: Automated builds and testing for SharePoint projects&amp;nbsp; (Chris
  O&amp;#39;Brien)&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:85.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;98&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:67.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;4.70&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:572.25pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;SPC312: Best Practices for
  Creating Publishing Page Layouts&amp;nbsp; (Geoffrey Edge)&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:85.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;35&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:67.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;4.69&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:572.25pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;SPC338: Developing SharePoint
  applications with HTML5 and JQuery&amp;nbsp; (Ted Pattison)&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:85.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;207&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:67.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;4.68&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:572.25pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;SPC212: More Than My: How
  Microsoft is Driving Social Adoption and Intranet Transformation&amp;nbsp; (Chris
  Slemp)&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:85.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;35&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:67.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;4.67&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:572.25pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;SPC304: Advanced Scorecarding
  and Dashboards with Excel, Visio and PerformancePoint Services&amp;nbsp; (Peter
  Myers)&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:85.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;71&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:67.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;4.66&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="height:15pt;"&gt;
  &lt;td style="width:572.25pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;SPC331: Creating a FAST Search
  Driven Windows Phone 7 Application for a SharePoint Internet Sites&amp;nbsp;
  (Shad Phillips)&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:85.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;17&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td style="width:67.5pt;padding:0in 5.4pt;height:15pt;"&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;4.66&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
&lt;/table&gt;

&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-size:14pt;color:black;"&gt;Overall
Conference Top Speakers&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;strong&gt;MS Speakers&lt;/strong&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;1&lt;sup&gt;st&lt;/sup&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#1f497d;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style="color:black;"&gt;SPC315: Beyond the Basics: An Advanced
Conversation on FAST Search for SharePoint 2010&amp;nbsp; (Thomas Molbach &amp;amp;
Thomas&amp;nbsp; Svensen)&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;2&lt;sup&gt;nd&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;/sup&gt;&lt;/span&gt;&lt;sup&gt;&lt;span style="color:#1f497d;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/sup&gt;&lt;span style="color:black;"&gt;SPC270:
SharePoint 2010 Solutions for Public Sector&amp;nbsp; (Ken &lt;/span&gt;Mallit)&lt;span style="color:black;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;3&lt;sup&gt;rd&lt;/sup&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#1f497d;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:black;"&gt;SPC404:
Deep Dive: Implementing Kerberos for your BI Applications&amp;nbsp; (Tom Wisnowski)&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;&lt;strong&gt;Non MS Speakers&lt;/strong&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;1&lt;sup&gt;st&lt;/sup&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#1f497d;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:black;"&gt;SPC373:
Performance Tuning SharePoint 2010&amp;nbsp; (Eric Shupps)&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;2&lt;sup&gt;nd&lt;/sup&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#1f497d;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:black;"&gt;SPC402:
Deep Dive on SharePoint Ribbon Development &amp;amp; Extensibility&amp;nbsp;&amp;nbsp;
(Chris O&amp;#39;Brien &amp;amp; Andrew Connell)&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;3&lt;sup&gt;rd&lt;/sup&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#1f497d;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:black;"&gt;SPC393:
Step-by-step: Building Search Driven Applications That Matter&amp;nbsp; (Scot
Hillier)&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=394" width="1" height="1"&gt;</description><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/spc11/default.aspx">spc11</category></item><item><title>SharePoint Conference PPTs - Download them via PowerShell!</title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/10/10/SharePoint-Conference-PPTs-_2D00_-Download-them-via-PowerShell_2100_.aspx</link><pubDate>Mon, 10 Oct 2011 22:48:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:391</guid><dc:creator>cjg</dc:creator><slash:comments>3</slash:comments><description>&lt;p&gt;Here&amp;#39;s the script to download the PPTs via PowerShell - &lt;strong&gt;the link to the file is below in case of copy paste errors&lt;/strong&gt;!&lt;/p&gt;&lt;p&gt;&lt;em&gt;function DownloadFile([string]$auth, [string] $file)&lt;br /&gt;{&lt;br /&gt;&amp;quot;Using &amp;quot; + $auth + &amp;quot; for file &amp;quot; + $file&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$url = &amp;quot;&lt;/em&gt;&lt;a href="http://www.mssharepointconference.com/sessionpresentations/"&gt;&lt;em&gt;http://www.mssharepointconference.com/sessionpresentations/&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&amp;quot; + $file&lt;br /&gt;$file = &amp;quot;c:\SPC11\&amp;quot; + $file&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$uri = new-object uri($url);&lt;br /&gt;$httpReq = [system.net.HttpWebRequest]::Create($uri)&lt;br /&gt;$httpReq.headers.add(&amp;quot;Cookie&amp;quot;, $auth)&lt;br /&gt;$httpReq.Timeout = 75000&lt;br /&gt;$httpReq.method = &amp;quot;GET&amp;quot;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$res = $httpReq.GetResponse()&lt;br /&gt;$rs = $res.GetResponseStream();&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$fs = new-object system.io.filestream($file, [System.IO.FileMode]::OpenOrCreate)&lt;br /&gt;$read = new-object byte[] 1024&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$count = $rs.Read($read, 0, $read.length)&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;while($count -ne 0)&lt;br /&gt;{&lt;br /&gt;$fs.write($read,0,$count)&lt;br /&gt;$count = $rs.Read($read, 0, $read.length)&lt;br /&gt;}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$fs.close()&lt;br /&gt;$rs.Close()&lt;br /&gt;$res.close()&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;function GetAuth([string] $username, [string]$password)&lt;br /&gt;{&lt;br /&gt;[system.net.servicepointmanager]::Expect100Continue = $false&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;#####################################&lt;br /&gt;# Start session on SPConf site&lt;br /&gt;####################################&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$uri = new-object uri(&amp;quot;&lt;/em&gt;&lt;a href="http://www.mssharepointconference.com/Pages/Default.aspx"&gt;&lt;em&gt;http://www.mssharepointconference.com/Pages/Default.aspx&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&amp;quot;);&lt;br /&gt;$httpReq = [system.net.HttpWebRequest]::Create($uri)&lt;br /&gt;$httpReq.Accept = &amp;quot;application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, */*&amp;quot;&lt;br /&gt;$httpReq.ContentType = &amp;quot;application/x-www-form-urlencoded&amp;quot;&lt;br /&gt;$httpReq.headers.Add(&amp;quot;Accept-Language&amp;quot;, &amp;quot;en-US&amp;quot;)&lt;br /&gt;$httpReq.method = &amp;quot;GET&amp;quot;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$res = $httpReq.GetResponse()&lt;br /&gt;$rs = $res.GetResponseStream();&lt;br /&gt;[System.IO.StreamReader]$sr = New-Object System.IO.StreamReader -argumentList $rs;&lt;br /&gt;[string]$results = $sr.ReadToEnd();&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;#get the cookies&lt;br /&gt;$strCookies = $res.Headers[&amp;quot;set-cookie&amp;quot;].toString();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&gt;$res.Close(); &lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$vnlehn = $strcookies&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;####################################&lt;br /&gt;#&amp;nbsp; Do init post to live.com&lt;br /&gt;####################################&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$cookies = new-object system.net.CookieContainer&lt;br /&gt;$uri = new-object uri(&amp;quot;&lt;/em&gt;&lt;a href="https://login.live.com/wlogin.srf?appid=000000004C03DD21&amp;amp;alg=wsignin1.0&amp;amp;appctx=ConferenceVue"&gt;&lt;em&gt;https://login.live.com/wlogin.srf?appid=000000004C03DD21&amp;amp;alg=wsignin1.0&amp;amp;appctx=ConferenceVue&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&amp;quot;);&lt;br /&gt;$httpReq = [system.net.HttpWebRequest]::Create($uri)&lt;br /&gt;$httpReq.Accept = &amp;quot;application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, */*&amp;quot;&lt;br /&gt;$httpReq.Referer = &amp;quot;&lt;/em&gt;&lt;a href="http://www.mssharepointconference.com/Pages/Login.aspx?ReturnUrl=%2f_layouts%2fauthenticate.aspx%3fSource%3d%252FPages%252FDefault%252Easpx&amp;amp;Source=%2FPages%2FDefault%2Easpx"&gt;&lt;em&gt;http://www.mssharepointconference.com/Pages/Login.aspx?ReturnUrl=%2f_layouts%2fauthenticate.aspx%3fSource%3d%252FPages%252FDefault%252Easpx&amp;amp;Source=%2FPages%2FDefault%2Easpx&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&amp;quot;&lt;br /&gt;$httpReq.ContentType = &amp;quot;application/x-www-form-urlencoded&amp;quot;&lt;br /&gt;$httpReq.method = &amp;quot;GET&amp;quot;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$res = $httpReq.GetResponse()&lt;br /&gt;$rs = $res.GetResponseStream();&lt;br /&gt;[System.IO.StreamReader]$sr = New-Object System.IO.StreamReader -argumentList $rs;&lt;br /&gt;[string]$results = $sr.ReadToEnd();&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;#get the cookies&lt;br /&gt;$strCookies = $res.Headers[&amp;quot;set-cookie&amp;quot;].toString();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&gt;$res.Close(); &lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$mspr = $strCookies.substring(0, $strCookies.indexof(&amp;quot;;&amp;quot;)+1)&lt;br /&gt;$mspok = $strCookies.substring($strCookies.indexof(&amp;quot;MSPOK&amp;quot;))&lt;br /&gt;$mspok = $mspok.substring(0, $mspok.indexof(&amp;quot;;&amp;quot;))&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$strCookies = $mspr + $mspok&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;#get random html values&lt;br /&gt;$ppft = $results.remove(0, $results.indexof(&amp;quot;PPFT&amp;quot;))&lt;br /&gt;$ppft = $ppft.remove(0, $ppft.indexof(&amp;quot;value&amp;quot;) + 7)&lt;br /&gt;$ppft = $ppft.substring(0, $ppft.indexof(&amp;quot;`&amp;quot;&amp;quot;))&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$posturl = $results.remove(0, $results.indexof(&amp;quot;g_QS=&amp;quot;)+6)&lt;br /&gt;$posturl = $posturl.substring(0, $posturl.indexof(&amp;quot;`&amp;quot;&amp;quot;))&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;####################################&lt;br /&gt;#&amp;nbsp; Do the login &lt;br /&gt;####################################&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$uri = new-object uri(&amp;quot;&lt;/em&gt;&lt;a href="https://login.live.com/ppsecure/post.srf"&gt;&lt;em&gt;https://login.live.com/ppsecure/post.srf&lt;/em&gt;&lt;/a&gt;&lt;em&gt;?&amp;quot; + $posturl)&lt;br /&gt;$post = &amp;quot;login=&amp;quot; + $username + &amp;quot;&amp;amp;passwd=&amp;quot; + $password +&amp;quot;&amp;amp;type=11&amp;amp;LoginOptions=3&amp;amp;NewUser=1&amp;amp;MEST=&amp;amp;PPSX=Passport&amp;amp;PPFT=&amp;quot; + $ppft + &amp;quot;&amp;amp;idsbho=1&amp;amp;PwdPad=&amp;amp;sso=&amp;amp;i1=&amp;amp;i2=1&amp;amp;i3=4778&amp;amp;i4=&amp;amp;i12=1&amp;amp;i13=&amp;amp;i14=333&amp;amp;i15=334&amp;quot;&lt;br /&gt;$encoding = new-object system.text.asciiencoding&lt;br /&gt;$buf = $encoding.GetBytes($post)&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$httpReq = [system.net.HttpWebRequest]::Create($uri)&lt;br /&gt;$httpReq.method = &amp;quot;POST&amp;quot;&lt;br /&gt;$httpReq.Referer = &amp;quot;&lt;/em&gt;&lt;a href="https://login.live.com/wlogin.srf?appid=000000004C03DD21&amp;amp;alg=wsignin1.0&amp;amp;appctx=ConferenceVue"&gt;&lt;em&gt;https://login.live.com/wlogin.srf?appid=000000004C03DD21&amp;amp;alg=wsignin1.0&amp;amp;appctx=ConferenceVue&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&amp;quot;&lt;br /&gt;$httpReq.contentlength = $buf.length&lt;br /&gt;$httpReq.Headers.add(&amp;quot;Cookie&amp;quot;, $strCookies)&lt;br /&gt;$httpReq.ContentType = &amp;quot;application/x-www-form-urlencoded&amp;quot;&lt;br /&gt;$stream = $httpReq.GetRequestStream()&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;[void]$stream.write($buf, 0, $buf.length)&lt;br /&gt;$stream.close()&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$res = $httpReq.GetResponse()&lt;br /&gt;$rs = $res.GetResponseStream();&lt;br /&gt;[System.IO.StreamReader]$sr = New-Object System.IO.StreamReader -argumentList $rs;&lt;br /&gt;[string]$results = $sr.ReadToEnd();&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$stoken = $results.remove(0, $results.indexof(&amp;quot;id=`&amp;quot;stoken&amp;quot;)+19)&lt;br /&gt;$stoken = $stoken.substring(0, $stoken.indexof(&amp;quot;`&amp;quot;&amp;quot;))&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;####################################&lt;br /&gt;#&amp;nbsp; Return token back to spconf site&lt;br /&gt;####################################&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$uri = new-object uri(&amp;quot;&lt;/em&gt;&lt;a href="http://www.mssharepointconference.com/_layouts/ConferenceVue/WindowsLive.aspx"&gt;&lt;em&gt;http://www.mssharepointconference.com/_layouts/ConferenceVue/WindowsLive.aspx&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&amp;quot;)&lt;br /&gt;$post = &amp;quot;stoken=&amp;quot; + $stoken + &amp;quot;&amp;amp;appctx=ConferenceVue&amp;amp;action=login&amp;quot;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$encoding = new-object system.text.asciiencoding&lt;br /&gt;$buf = $encoding.GetBytes($post)&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$httpReq = [system.net.HttpWebRequest]::Create($uri)&lt;br /&gt;$httpReq.method = &amp;quot;POST&amp;quot;&lt;br /&gt;$httpReq.contentlength = $buf.length&lt;br /&gt;$httpReq.ContentType = &amp;quot;application/x-www-form-urlencoded&amp;quot;&lt;br /&gt;$httpReq.Accept = &amp;quot;application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, */*&amp;quot;&lt;br /&gt;$httpReq.UserAgent = &amp;quot;Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E; MS-RTC LM 8; LEN2)&amp;quot;&lt;br /&gt;$httpReq.headers.Add(&amp;quot;Cookie&amp;quot;, $vnlehn + &amp;quot;; webauthtoken=&amp;quot;)&lt;br /&gt;$httpReq.headers.Add(&amp;quot;Accept-Language&amp;quot;, &amp;quot;en-US&amp;quot;)&lt;br /&gt;$httpReq.KeepAlive = $true&lt;br /&gt;$httpReq.AllowAutoRedirect = $false&lt;br /&gt;$stream = $httpReq.GetRequestStream()&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;[void]$stream.write($buf, 0, $buf.length)&lt;br /&gt;$stream.close()&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$res = $httpReq.GetResponse()&lt;br /&gt;$rs = $res.GetResponseStream();&lt;br /&gt;[System.IO.StreamReader]$sr = New-Object System.IO.StreamReader -argumentList $rs;&lt;br /&gt;[string]$results = $sr.ReadToEnd();&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;#get the cookie&lt;br /&gt;$strCookies = $res.Headers[&amp;quot;Set-Cookie&amp;quot;].toString();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;#get the webauthtoken&lt;br /&gt;if ($strcookies.contains(&amp;quot;webauthtoken&amp;quot;))&lt;br /&gt;{&lt;br /&gt;$webauthtoken = $strCookies.substring($strCookies.indexof(&amp;quot;webauthtoken&amp;quot;))&lt;br /&gt;$webauthtoken = $webauthtoken.substring(0, $webauthtoken.indexof(&amp;quot;;&amp;quot;))&lt;br /&gt;}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;#get the fedauth&lt;br /&gt;if ($strcookies.contains(&amp;quot;FedAuth&amp;quot;))&lt;br /&gt;{&lt;br /&gt;$fedauth = $strCookies.substring($strCookies.indexof(&amp;quot;FedAuth&amp;quot;))&lt;br /&gt;$fedauth = $fedauth.substring(0, $fedauth.indexof(&amp;quot;;&amp;quot;))&lt;br /&gt;}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;return $vnlehn + &amp;quot;;&amp;quot; + $fedauth + &amp;quot;;&amp;quot; + $webauthtoken + &amp;quot;;&amp;quot;&lt;br /&gt;}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;######################################&lt;br /&gt;#&amp;nbsp; Parse the HTML of the SPConf site&lt;br /&gt;#####################################&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;#$results = get-content AllHtml.txt&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;#parse out the pptx links&lt;br /&gt;#while($results.contains(&amp;quot;SessionPresentations&amp;quot;))&lt;br /&gt;#{&lt;br /&gt;#$results = $results.remove(0, $results.indexof(&amp;quot;SessionPresentations/&amp;quot;)+21)&lt;br /&gt;#$filename = $results.substring(0, $results.indexof(&amp;quot;pptx&amp;quot;) + 4)&lt;br /&gt;#$results = $results.remove(0, $results.indexof(&amp;quot;pptx&amp;quot;)+4)&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;#$filename&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;#add-content &amp;quot;c:\temp\ppts.txt&amp;quot; $filename&lt;br /&gt;#}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;##############################&lt;br /&gt;#&amp;nbsp; Start program&lt;br /&gt;###############################&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;[System.Reflection.Assembly]::LoadWithPartialName( &amp;quot;System.Web&amp;quot; ) | out-null&lt;br /&gt;[System.Reflection.Assembly]::LoadWithPartialName( &amp;quot;System.Net&amp;quot; ) | out-null&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$username = read-host &amp;quot;Enter your LiveID username: &amp;quot;&lt;br /&gt;$password = read-host &amp;quot;Enter your LiveID password: &amp;quot;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$auth = GetAuth $username $password&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;while(-not $auth.tostring().contains(&amp;quot;webauthtoken&amp;quot;))&lt;br /&gt;{&lt;br /&gt;$auth = GetAuth $username $password&lt;br /&gt;}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;############################&lt;br /&gt;# Download all the PPTs&lt;br /&gt;###############################&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;#use for testing in case you NEVER get the webauthtoken back...&lt;br /&gt;#$auth = &amp;quot;&amp;quot;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$ppts = get-content &amp;quot;c:\ppts.txt&amp;quot;&lt;br /&gt;mkdir &amp;quot;c:\spc11&amp;quot;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;foreach($line in $ppts)&lt;br /&gt;{&lt;br /&gt;DownloadFile $auth $line&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Here&amp;#39;s all the PPTX files on the site (Place in a files called c:\ppts.txt):&lt;/p&gt;&lt;p&gt;&lt;em&gt;SPC216.pptx&lt;br /&gt;SPC340.pptx&lt;br /&gt;SPC102.pptx&lt;br /&gt;SPC2991.pptx&lt;br /&gt;SPC214.pptx&lt;br /&gt;SPC240.pptx&lt;br /&gt;SPC367.pptx&lt;br /&gt;SPC2994.pptx&lt;br /&gt;SPC249.pptx&lt;br /&gt;SPC263.pptx&lt;br /&gt;SPC253.pptx&lt;br /&gt;SPC256.pptx&lt;br /&gt;SPC274.pptx&lt;br /&gt;SPC285.pptx&lt;br /&gt;SPC202.pptx&lt;br /&gt;SPC225.pptx&lt;br /&gt;SPC345.pptx&lt;br /&gt;SPC228.pptx&lt;br /&gt;SPC350.pptx&lt;br /&gt;SPC104.pptx&lt;br /&gt;SPC229_Mercaldo.pptx&lt;br /&gt;SPC387.pptx&lt;br /&gt;SPC2992.pptx&lt;br /&gt;SPC410.pptx&lt;br /&gt;SPC376.pptx&lt;br /&gt;SPC258.pptx&lt;br /&gt;SPC265.pptx&lt;br /&gt;SPC273.pptx&lt;br /&gt;SPC201.pptx&lt;br /&gt;SPC311.pptx&lt;br /&gt;SPC403.pptx&lt;br /&gt;SPC335.pptx&lt;br /&gt;SPC406.pptx&lt;br /&gt;SPC226.pptx&lt;br /&gt;SPC358.pptx&lt;br /&gt;SPC359.pptx&lt;br /&gt;SPC245.pptx&lt;br /&gt;SPC246.pptx&lt;br /&gt;SPC262.pptx&lt;br /&gt;SPC221.pptx&lt;br /&gt;SPC200.pptx&lt;br /&gt;SPC330.pptx&lt;br /&gt;SPC346.pptx&lt;br /&gt;SPC347.pptx&lt;br /&gt;SPC351.pptx&lt;br /&gt;SPC239.pptx&lt;br /&gt;SPC242.pptx&lt;br /&gt;SPC371.pptx&lt;br /&gt;SPC252.pptx&lt;br /&gt;SPC109.pptx&lt;br /&gt;SPC254.pptx&lt;br /&gt;SPC255.pptx&lt;br /&gt;SPC382.pptx&lt;br /&gt;SPC266.pptx&lt;br /&gt;SPC271.pptx&lt;br /&gt;SPC3995.pptx&lt;br /&gt;SPC224.pptx&lt;br /&gt;SPC310.pptx&lt;br /&gt;SPC223.pptx&lt;br /&gt;SPC298.pptx&lt;br /&gt;SPC244.pptx&lt;br /&gt;SPC366.pptx&lt;br /&gt;SPC212.pptx&lt;br /&gt;SPC264.pptx&lt;br /&gt;SPC108_Barnard.pptx&lt;br /&gt;SPC391.pptx&lt;br /&gt;SPC280.pptx&lt;br /&gt;SPC3992.pptx&lt;br /&gt;SPC269.pptx&lt;br /&gt;SPC289.pptx&lt;br /&gt;SPC292.pptx&lt;br /&gt;SPC215.pptx&lt;br /&gt;SPC219.pptx&lt;br /&gt;SPC338.pptx&lt;br /&gt;SPC343.pptx&lt;br /&gt;SPC234.pptx&lt;br /&gt;SPC352.pptx&lt;br /&gt;SPC103.pptx&lt;br /&gt;SPC357.pptx&lt;br /&gt;SPC248.pptx&lt;br /&gt;SPC398.pptx&lt;br /&gt;SPC288.pptx&lt;br /&gt;SPC251.pptx&lt;br /&gt;SPC306.pptx&lt;br /&gt;SPC307.pptx&lt;br /&gt;SPC204.pptx&lt;br /&gt;SPC322.pptx&lt;br /&gt;SPC206.pptx&lt;br /&gt;SPC207.pptx&lt;br /&gt;SPC2993.pptx&lt;br /&gt;SPC348.pptx&lt;br /&gt;SPC409_Kogan.pptx&lt;br /&gt;SPC243.pptx&lt;br /&gt;SPC368.pptx&lt;br /&gt;SPC375.pptx&lt;br /&gt;SPC383.pptx&lt;br /&gt;SPC388.pptx&lt;br /&gt;SPC275-1.pptx&lt;br /&gt;SPC281.pptx&lt;br /&gt;SPC3996.pptx&lt;br /&gt;SPC293.pptx&lt;br /&gt;SPC314.pptx&lt;br /&gt;SPC213.pptx&lt;br /&gt;SPC331.pptx&lt;br /&gt;SPC401.pptx&lt;br /&gt;SPC220.pptx&lt;br /&gt;SPC222.pptx&lt;br /&gt;SPC336.pptx&lt;br /&gt;SPC3982.pptx&lt;br /&gt;SPC397.pptx&lt;br /&gt;SPC260.pptx&lt;br /&gt;SPC261.pptx&lt;br /&gt;SPC279.pptx&lt;br /&gt;SPC291.pptx&lt;br /&gt;SPC400_1.pptx&lt;br /&gt;SPC203.pptx&lt;br /&gt;SPC315_1.pptx&lt;br /&gt;SPC342.pptx&lt;br /&gt;SPC257.pptx&lt;br /&gt;SPC259.pptx&lt;br /&gt;SPC299.pptx&lt;br /&gt;SPC365_1.pptx&lt;br /&gt;SPC373_1.pptx&lt;br /&gt;SPC377.pptx&lt;br /&gt;SPC272.pptx&lt;br /&gt;SPC389_1.pptx&lt;br /&gt;SPC250.pptx&lt;br /&gt;SPC278.pptx&lt;br /&gt;SPC290.pptx&lt;br /&gt;SPC304_A.pptx&lt;br /&gt;SPC319_A.pptx&lt;br /&gt;SPC287.pptx&lt;br /&gt;SPC321_1.pptx&lt;br /&gt;SPC296.pptx&lt;br /&gt;SPC356_1.pptx&lt;br /&gt;SPC374_1.pptx&lt;br /&gt;SPC386_1.pptx&lt;br /&gt;SPC270.pptx&lt;br /&gt;SPC392_f.pptx&lt;br /&gt;SPC414.pptx&lt;br /&gt;SPC3999.pptx&lt;br /&gt;SPC309_1.pptx&lt;br /&gt;SPC328.pptx&lt;br /&gt;SPC333_1.pptx&lt;br /&gt;SPC339_1.pptx&lt;br /&gt;SPC341.pptx&lt;br /&gt;SPC407.pptx&lt;br /&gt;SPC349_1.pptx&lt;br /&gt;SPC237.pptx&lt;br /&gt;SPC355_1.pptx&lt;br /&gt;SPC360_1.pptx&lt;br /&gt;SPC354_1.pptx&lt;br /&gt;SPC379_1.pptx&lt;br /&gt;SPC101.pptx&lt;br /&gt;SPC396.pptx&lt;br /&gt;SPC282.pptx&lt;br /&gt;SPC410r.pptx&lt;br /&gt;SPC308.pptx&lt;br /&gt;SPC313_1.pptx&lt;br /&gt;SPC205.pptx&lt;br /&gt;SPC318.pptx&lt;br /&gt;SPC210.pptx&lt;br /&gt;SPC230.pptx&lt;br /&gt;SPC233.pptx&lt;br /&gt;SPC295.pptx&lt;br /&gt;SPC236.pptx&lt;br /&gt;SPC268.pptx&lt;br /&gt;SPC369_1.pptx&lt;br /&gt;SPC380_1.pptx&lt;br /&gt;SPC384_1.pptx&lt;br /&gt;SPC412_1.pptx&lt;br /&gt;SPC266r.pptx&lt;br /&gt;SPC241.ppt&lt;br /&gt;SPC326.pptx&lt;br /&gt;SPC329_1.pptx&lt;br /&gt;SPC217.pptx&lt;br /&gt;SPC218.pptx&lt;br /&gt;SPC402_1.pptx&lt;br /&gt;SPC404_1.pptx&lt;br /&gt;SPC337_1.pptx&lt;br /&gt;SPC408_1.pptx&lt;br /&gt;SPC232_1.pptx&lt;br /&gt;SPC378_1.pptx&lt;br /&gt;SPC385_1.pptx&lt;br /&gt;SPC300.pptx&lt;br /&gt;SPC302.pptx&lt;br /&gt;SPC344.pptx&lt;br /&gt;SPC320.pptx&lt;br /&gt;SPC362.pptx&lt;br /&gt;SPC324.pptx&lt;br /&gt;SPC327.pptx&lt;br /&gt;SPC332.pptx&lt;br /&gt;SPC334.pptx&lt;br /&gt;SPC227.pptx&lt;br /&gt;SPC277.pptx&lt;br /&gt;SPC283.pptx&lt;br /&gt;SPC413.pptx&lt;br /&gt;SPC294.pptx&lt;br /&gt;SPC3983.pptx&lt;br /&gt;SPC267.pptx&lt;br /&gt;SPC247.pptx&lt;br /&gt;SPC361.pptx&lt;br /&gt;SPC364.pptx&lt;br /&gt;SPC393.pptx&lt;br /&gt;SPC394.pptx&lt;br /&gt;SPC395.pptx&lt;br /&gt;SPC3993.pptx&lt;br /&gt;SPC297.pptx&lt;br /&gt;SPC303.pptx&lt;br /&gt;SPC353.pptx&lt;br /&gt;SPC2995.pptx&lt;br /&gt;SPC372.pptx&lt;br /&gt;SPC323.pptx&lt;br /&gt;SPC411.pptx&lt;br /&gt;SPC399.pptx&lt;br /&gt;SPC3994.pptx&lt;/em&gt;&lt;/p&gt;&lt;p&gt;SPC221.pptx&lt;br /&gt;SPC235.pptx&lt;br /&gt;SPC276.pptx&lt;br /&gt;SPC286.pptx&lt;br /&gt;SPC312_1.pptx&lt;br /&gt;SPC316_1.pptx&lt;br /&gt;SPC363.pptx&lt;br /&gt;SPC370.pptx&lt;br /&gt;SPC381_a.pptx &lt;br /&gt;SPC3991_1.pptx&lt;br /&gt;SPC3997_Maio.pptx &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Enjoy!&lt;br /&gt;Chris&lt;/p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=391" width="1" height="1"&gt;</description><enclosure url="http://blogs.architectingconnectedsystems.com/blogs/cjg/attachment/391.ashx" length="7832" type="application/octet-stream" /><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/spc11/default.aspx">spc11</category></item><item><title>Case Study: How to Use Managed Metadata in Site Creation to drive Searchability</title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/10/10/How-to-Use-Managed-Metadata-in-Site-Creation-to-drive-Searchability.aspx</link><pubDate>Mon, 10 Oct 2011 17:12:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:390</guid><dc:creator>cjg</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;As part of our eBay presentation at the SharePoint Conference 2011, we showed how we performed the upgrade in 3 months and utilized Managed Metadata (MMS) in site creation to drive searchability across the SharePoint Farm.&amp;nbsp;&amp;nbsp;The biggest question I have received so far&amp;nbsp;from the presentation is about the MMS subject.&amp;nbsp;&amp;nbsp;So&amp;nbsp;I&amp;#39;m going to outline it in detail here.&amp;nbsp;For those of you that are not familiar with MMS, I like to describe it using the 3rd rule in&amp;nbsp;my three rules of development.&amp;nbsp; The first rule is &amp;quot;Don&amp;#39;t code the same line of code twice&amp;quot;, if you see the same line of code twice, you did something wrong (no polymorphism, missing base method calls, inheritance, etc).&amp;nbsp; The second is don&amp;#39;t put the same thing in memory more than once (this really needs no clarification).&amp;nbsp; The third rule says don&amp;#39;t put the same thing on disk twice.&amp;nbsp; By doing this, you now must implement synchronization between the multiple instances.&amp;nbsp; The only product I worked with over the years that ever implemented this pattern perfectly was Lotus Notes.&amp;nbsp; It is for this reason, we have MMS in 2010.&lt;/p&gt;&lt;p&gt;In SharePoint 2007, imagine you have created a list in SharePoint that uses&amp;nbsp;a choice column.&amp;nbsp;You would have 50 states, plus the other various items the US owns (Examples:&amp;nbsp;Guam, Virgin Islands...can you name them all?).&amp;nbsp; If you use the state column in other places in the Farm, you pretty much have to copy and paste all the items over and over again.&amp;nbsp; This is somewhat of a problem.&amp;nbsp; For instance, if Texas ever successfully succeeds from the union, you gotta remove them from all the choice columns!&amp;nbsp; What about Iraq and Afghanistan?&amp;nbsp; Maybe those should be added to the list?&amp;nbsp;&amp;nbsp; Who knows what might happen in the future, but you&amp;#39;d have to update each and every source in order for the data to be meaningful.&amp;nbsp; Therefore, rule #3 is a good one...don&amp;#39;t put data on disk more than twice.&amp;nbsp; MMS helps us do this by centrally stored our list data in one place.&amp;nbsp; &lt;/p&gt;&lt;p&gt;So how did we use MMS at eBay?&amp;nbsp; The summary of the process is that when users create their own site, the content inside the site should be pre-tagged with MMS data so as to allow for simple searching of their content via FAST Search.&amp;nbsp; Here&amp;#39;s a breakout of the parts:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Site Creation:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The first step is to create a site creation form.&amp;nbsp; This can be anything you are comfortable with (an aspx page, an infopath form, web parts, etc).&amp;nbsp; In the case of eBay we used two web parts.&amp;nbsp; One is the site creation landing page web part.&amp;nbsp; Previously the values used to &amp;quot;tag&amp;quot; the sites was hardcoded in the code.&amp;nbsp; As part of the upgrade I changed this to pull dynamically from MMS.&amp;nbsp; This web part allows the entry of the following information:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Business Unit (MMS)&lt;/li&gt;&lt;li&gt;Organization (MMS)&lt;/li&gt;&lt;li&gt;Office Location (MMS)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/images/mmsblog/1.jpg" /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Site Name&lt;/li&gt;&lt;li&gt;Description&lt;/li&gt;&lt;li&gt;Keywords (terms that will allow users to find the site later)&lt;/li&gt;&lt;li&gt;Template (teamsite, blog, etc)&lt;/li&gt;&lt;li&gt;Security (allow inheritance/everyone to view the site)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;When clicking submit, several things happen:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Create a new list item with all the details of the site creation request&lt;/li&gt;&lt;li&gt;Submit to the site creation processing webpart with the site creation request id&lt;/li&gt;&lt;li&gt;Start a long running transaction&lt;/li&gt;&lt;li&gt;Impersonate the user that made the request&lt;/li&gt;&lt;li&gt;Get a site number from a database for the site URL (example: 12345)&lt;/li&gt;&lt;li&gt;Determine what site collection to add the site to (allows for load balancing the sites across content databases)&lt;/li&gt;&lt;li&gt;Create the new web&lt;/li&gt;&lt;li&gt;Add to the custom site directory list (this list is used for later look up on a site lookup web part)&lt;/li&gt;&lt;li&gt;Setup navigation for the site&lt;/li&gt;&lt;li&gt;Set the web property bag with the Organization, BusinessUnit and Location properties &lt;/li&gt;&lt;li&gt;Create the metadata columns (outlined below)&lt;/li&gt;&lt;li&gt;Add the site keywords to FAST Search&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;All throughout this process if any errors occur another list is setup to keep track of the errors and steps of the long running process.&amp;nbsp; This allows OPS to debug the process and work with development in case something needs to be tweaked.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Site Directory:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;You will need to ensure you have a list setup to keep track of your sites.&amp;nbsp; In the case of a pre-existing site directory it is likely that you have already created a choice column with your values.&amp;nbsp; This doesn&amp;#39;t move very easily to MMS.&amp;nbsp; You will have to migrate the values to new MMS columns (create new column with different name, move value over, deleted old column, create&amp;nbsp;column with old name, copy values again)&amp;nbsp;.&amp;nbsp; If you already have this site directory, it is simple to run back through all the sites and add the web properties and then add the MMS columns to all the existing lists in the already existing sites (so not only new sites have MMS, but old ones too)!&lt;/p&gt;&lt;p&gt;&lt;strong&gt;MMS Setup:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;We used the following&amp;nbsp;PowerShell script to pre-populate the MMS:&lt;/p&gt;&lt;p&gt;&lt;em&gt;$session = get-sptaxonomysession -site &lt;/em&gt;&lt;a href="http://contoso.com/"&gt;&lt;em&gt;http://contoso.com&lt;/em&gt;&lt;/a&gt;&lt;br /&gt;&lt;em&gt;$termstore = $session.termstores[&amp;quot;Contoso Corporate MMS&amp;quot;]&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$termGroup = $termstore.groups[&amp;quot;Contoso&amp;quot;]&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;if (-not $termGroup)&lt;br /&gt;{&lt;br /&gt;$termGroup = $termstore.creategroup(&amp;quot;Contoso&amp;quot;)&lt;br /&gt;}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$termSet = $termGroup.TermSets[&amp;quot;Organization&amp;quot;]&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;if (-not $termSet)&lt;br /&gt;{&lt;br /&gt;$termSet = $termGroup.CreateTermSet(&amp;quot;Organization&amp;quot;)&lt;br /&gt;}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;foreach($t in $termset.terms)&lt;br /&gt;{&lt;br /&gt;$t.delete()&lt;br /&gt;}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$termSet.createterm(&amp;quot;Finance&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;Human Resources&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;Information Technology&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;Legal&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;Marketing and Sales&amp;quot;,1033)&lt;br /&gt;&lt;br /&gt;$termSet = $termGroup.termsets[&amp;quot;BusinessUnit&amp;quot;]&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;if (-not $termSet)&lt;br /&gt;{&lt;br /&gt;$termSet = $termGroup.CreateTermSet(&amp;quot;BusinessUnit&amp;quot;)&lt;br /&gt;}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;foreach($t in $termset.terms)&lt;br /&gt;{&lt;br /&gt;$t.delete()&lt;br /&gt;}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$termSet.createterm(&amp;quot;Corporate&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;PayPal&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;StubHub&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;Bill Me Later&amp;quot;,1033)&lt;br /&gt;&lt;br /&gt;$termSet = $termGroup.termsets[&amp;quot;Location&amp;quot;]&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;if (-not $termSet)&lt;br /&gt;{&lt;br /&gt;$termSet = $termGroup.CreateTermSet(&amp;quot;Location&amp;quot;)&lt;br /&gt;}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;foreach($t in $termset.terms)&lt;br /&gt;{&lt;br /&gt;$t.delete()&lt;br /&gt;}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$termSet.createterm(&amp;quot;APAC - Australia&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;APAC - China&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;APAC - Hong Kong&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;APAC - India&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;APAC - Israel&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;APAC - Korea&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;APAC - Taiwan&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;EU - Austria&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;EU - Belgium&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;EU - Czech Replubic&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;EU - Estonia&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;EU - France&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;EU - Germany&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;EU - Ireland&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;EU - Italy&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;EU - Luxembourg&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;EU - Netherlands&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;EU - Poland&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;EU - Spain&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;EU - Sweden&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;EU - Switzerland&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;EU - UK&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;NA - Canada&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;NA - U.S.&amp;quot;,1033)&lt;br /&gt;$termSet.createterm(&amp;quot;Global&amp;quot;,1033)&lt;br /&gt;$termStore.CommitAll()&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Note that once it is created, you should not delete the values.&amp;nbsp; This will cause the linkage between any previously created columns to be eliminated.&amp;nbsp; Not fun to look at and fix later.&amp;nbsp; So be sure to tell the ops team not to run the create more than once...EVER...&lt;/p&gt;&lt;p&gt;&lt;strong&gt;MMS Columns:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The hardest part of the entire process is the MMS column creation.&amp;nbsp; It works like this:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Check to see if the web prop bag has been set, if not then set the web props to the values in the intranet site directory list, otherwise set to some default values&lt;/li&gt;&lt;li&gt;For each list, add the metadata columns&lt;/li&gt;&lt;ul&gt;&lt;li&gt;You should not add metatdata to lists that are &amp;quot;hidden&amp;quot; or that are&amp;nbsp;type &amp;quot;Survey&amp;quot;.&amp;nbsp; It will break those list types&lt;/li&gt;&lt;li&gt;Great example is the HiddenTaxonomyList, kinda weird adding a MMS column to that one as it keeps track of MMS usage across the site, creates a bit of a loop...not good!&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;You should also avoid everything but the following site types, if you don&amp;#39;t you will get some VERY ugly messages from SharePoint 2010 (try adding MMS to an Access Services site, it doesn&amp;#39;t work!):&lt;/li&gt;&lt;ul&gt;&lt;li&gt;STS&lt;/li&gt;&lt;li&gt;MPS&lt;/li&gt;&lt;li&gt;BLANKINTERNET&lt;/li&gt;&lt;li&gt;CMSPUBLISHING&lt;/li&gt;&lt;li&gt;PUBLISHING&lt;/li&gt;&lt;li&gt;WIKI&lt;/li&gt;&lt;li&gt;BLOG&lt;/li&gt;&lt;li&gt;SPS&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Adding the metadata column involves the following process:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Detemine if the column already exists (choose your column name wisely), in this case, we preappended with &amp;quot;Geo&amp;quot; to avoid any clashes with already existing column names and internal SP names&lt;/li&gt;&lt;li&gt;Provision a note field to support your MMS field (yup, each MMS column is actually two columns)&lt;/li&gt;&lt;li&gt;Create a new taxonomy field using the Guid of the note field in the TextField property&lt;/li&gt;&lt;li&gt;Set the default value of the field using the &amp;quot;WSSID;#VALUE|TERMID&amp;quot;, hint: use -1 if&amp;nbsp;WSSID has not been defined yet&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;The result is every viable list has MMS columns added:&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/images/mmsblog/7.jpg" /&gt;&lt;/p&gt;&lt;p&gt;Each MMS column has a default value set:&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/images/mmsblog/8.jpg" /&gt;&lt;/p&gt;&lt;p&gt;When a new item is created, the user doesn&amp;#39;t have to do anything!&amp;nbsp; The values are pre-populated with the values they selected at site&amp;nbsp;creation time!&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/images/mmsblog/9.jpg" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Search:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;As part of the site creation&amp;nbsp;there is a keyword&amp;nbsp;text box.&amp;nbsp; Users can type keywords delimited by semicolon.&amp;nbsp; Their keywords are then added to FAST Search.&amp;nbsp; Initially we thought adding to both SharePoint Search and FAST Search was the answer, but that didn&amp;#39;t work as it actually would&amp;nbsp;show two keywords in the results and not just one.&amp;nbsp;&amp;nbsp;You can also have the keywords added as search suggestions.&amp;nbsp; What this means is that when they start typing in the search box, you will see the keyword displayed as a suggestion:&lt;/p&gt;&lt;p&gt;&lt;img height="226" src="http://blogs.architectingconnectedsystems.com/images/mmsblog/2.jpg" style="width:383px;height:226px;" width="383" /&gt;&lt;/p&gt;&lt;p&gt;Then when the search is executed, you will see the site as a keyword and&amp;nbsp;the results for that keyword displayed as business as usual:&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/images/mmsblog/4.jpg" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Once the columns have been added to all the list items in all the sites,&amp;nbsp;you have setup&amp;nbsp;FAST Content SSA&amp;nbsp;and&amp;nbsp;indexed the content you will get some pretty cool results.&amp;nbsp; Because of the TaxonomyFilter refiners that is preconfigured in the FAST Search Center, you will see the pre-defined MMS column values on the left side of the screen:&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/images/mmsblog/5.jpg" /&gt;&lt;/p&gt;&lt;p&gt;Users can now find content specific to their geography, organization and functional group.&amp;nbsp; Results are now more meaningful and can be found much faster than with SharePoint 2007!&lt;/p&gt;&lt;p&gt;Enjoy!&lt;br /&gt;Chris&lt;/p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=390" width="1" height="1"&gt;</description><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/ebay/default.aspx">ebay</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/mms/default.aspx">mms</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/site+provisioning/default.aspx">site provisioning</category></item><item><title>SharePoint Conference 2011 Recap</title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/10/07/SharePoint-Conference-2011-Recap.aspx</link><pubDate>Fri, 07 Oct 2011 21:31:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:388</guid><dc:creator>cjg</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Here is a short recap of all the cool stuff that happened this week.&lt;/p&gt;&lt;p&gt;Over 7,500 people showed up in Anaheim, CA on Sunday to enjoy networking and learning about SharePoint!&amp;nbsp; The event started off with the exhibit hall reception where you got your first sneak peak at the vendors.&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Exhibit Hall&lt;/strong&gt; &lt;br /&gt;&lt;/p&gt;&lt;p&gt;The first big booths you would get to see was &lt;a href="http://twitter.com/questsoftware" target="_blank"&gt;Quest &lt;/a&gt;and HP in the center.&amp;nbsp; HP didn&amp;#39;t have much that interested me, but the Quest folks sure made things entertaining with their &amp;quot;Bonk&amp;quot; game.&amp;nbsp; You can find lots of pictures of SharePoint superstars on facebook and twitter, it was quite humorous and they gave away lots of cold hard cash to answer SharePoint questions!&amp;nbsp; In the following pictures you&amp;#39;ll see &lt;a href="http://twitter.com/joelolsen" target="_blank"&gt;@joelolsen&lt;/a&gt; &lt;a href="http://twitter.com/michaelnoel"&gt;@michaelnoel&lt;/a&gt; &lt;a href="http://twitter.com/buckleyplanet" target="_blank"&gt;@buckleyplanet&lt;/a&gt; and then &lt;a href="http://twitter.com/zlatandzinic" target="_blank"&gt;@ZlatanDzinic&lt;/a&gt; and &lt;a href="http://twitter.com/eusp" target="_blank"&gt;@eusp&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img height="255" src="http://a7.sphotos.ak.fbcdn.net/hphotos-ak-snc7/300305_10150846993385300_683315299_21197380_941316488_n.jpg" width="366" /&gt;&amp;nbsp;&lt;img height="256" src="http://a4.sphotos.ak.fbcdn.net/hphotos-ak-ash4/314471_10150846993920300_683315299_21197386_1522516771_n.jpg" width="343" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;To the left of HP was the the great guys from &lt;a href="http://twitter.com/avepoint_inc" target="_blank"&gt;AvePoint&lt;/a&gt; (&lt;a href="http://twitter.com/danholme" target="_blank"&gt;@danholme&lt;/a&gt;, &lt;a href="http://twitter.com/tweetraw" target="_blank"&gt;@tweetraw&lt;/a&gt;, &lt;a href="http://twitter.com/jthake" target="_blank"&gt;@jthake&lt;/a&gt;)!&amp;nbsp; As they have done for the past few SPConferences, they had a killer Ducati motorcycle to giveaway to some lucky attendee:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img height="595" src="http://yfrog.com/h3mcnbaoj:tw1" width="397" /&gt;&lt;/p&gt;&lt;p&gt;AvePoint also hosted the party of all parties, The Red Party, at a local bar called Heat Ultra Lounge.&amp;nbsp; Everyone was dressed in Red and the inside has all red lights, it was amazingly awesome!&amp;nbsp; AvePoint announced their new product versions including a Governance tool that has been under the wing of &lt;a href="http://twitter.com/jthake" target="_blank"&gt;Jeremy Thake&lt;/a&gt;.&amp;nbsp; &lt;/p&gt;&lt;p&gt;On the right side of Quest were the very cool &lt;a href="http://twitter.com/k2onk2" target="_blank"&gt;K2&lt;/a&gt; guys showing off their awesome BlackPearl product and other workflow tools.&amp;nbsp; They were giving away a Segway for some lucky attendee!&lt;/p&gt;&lt;p&gt;&lt;img height="399" src="http://yfrog.com/nxmuqyj:tw1" width="300" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Behind Quest and K2 were the good ole boys from fpweb.net (&amp;quot;fp&amp;quot; by the way means &amp;quot;Front Page&amp;quot; which was from an acquisition from a company called VTI which is the name of the web services directory VTI_BIN). fpweb pretty much has the coolest booth I had ever seen.&amp;nbsp; It has two stories with a full living room on the top floor.&amp;nbsp; It was of course roped off to only special fpweb MVPs and customers.&amp;nbsp; After a long day of sessions and walking the exhibit hall it was great to relax and drink a glass of wine on their very comfy couches.&lt;/p&gt;&lt;p&gt;&lt;img height="343" src="http://yfrog.com/nwbfcxqj:tw1" width="461" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;fpweb.net had a couple of events during the week, including one that I master minded called the &amp;quot;Move like Jagger Contest&amp;quot;.&amp;nbsp; There were several people at the conference that brought wives and kiddos and need extra passes.&amp;nbsp; It just turned out that three people gave me their passes and we decided to make people work for them by moving like Mick Jagger.&amp;nbsp; &lt;a href="http://twitter.com/fpwebrob" target="_blank"&gt;Rob LaMear&lt;/a&gt;, CEO of fpweb, put in some extra incentive by placing $100 bills on each of the passes, that got us about 10 people to do some Mick Jagger moves, one such person is &lt;a href="http://twitter.com/grumpytech" target="_blank"&gt;@grumpytech.&lt;/a&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://s3.amazonaws.com/twitpic/photos/full/415307245.jpg?AWSAccessKeyId=AKIAJF3XCCKACR3QDMOA&amp;amp;Expires=1318039838&amp;amp;Signature=R3dDqtKgZ3YZALotK2X%2BLxmmO3o%3D" style="width:286px;height:382px;" /&gt;&lt;/p&gt;&lt;p&gt;I&amp;#39;ll be posting the video very soon!&amp;nbsp; The other event was a &amp;quot;fpweb.net is flexbile&amp;quot;, where several young ladies came out and did some pretty amazing moves:&lt;/p&gt;&lt;p&gt;&lt;img height="466" src="http://desmond.yfrog.com/Himg736/scaled.php?tn=0&amp;amp;server=736&amp;amp;filename=rg5uwk.jpg&amp;amp;xsize=640&amp;amp;ysize=640" width="624" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;As far as new comers to the SharePoint software space, I though these two vendors had a pretty rocking demo:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;#1 - &lt;a href="http://www.esri.com/" target="_blank"&gt;ESRI&lt;/a&gt; - a long time ruling company in geocoding and mapping software came out with a Solution Package with a web part, custom field type with wizards to pull SharePoint list data and backend data to do geo-coding and mapping with heat maps. This stuff even knows how to use the SQL Server SpatialTypes to generate the data - AMAZINGLY COOL! &amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;#2 - &lt;a href="http://twitter.com/shareplus" target="_blank"&gt;SouthLabs&lt;/a&gt; - A very nice looking iPad and iPhone app for connecting to SharePoint with many authentication method support.&amp;nbsp; They were some very cool and bright guys from Uruguay and I think they will be able to win quite a lot of business from SharePoint customers with their mobile apps.&lt;/li&gt;&lt;li&gt;#3 - &lt;a href="http://twitter.com/pingarhq" target="_blank"&gt;Pingar&lt;/a&gt;- They have an auto tagging solution designed by several computer science artificial intelligence people which used wikipedia as an input source to determine how to auto tag content in your SharePoint Farm.&amp;nbsp; It is by far the most advanced auto-tagging solution I have seen&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;And of course the hottest booth babe was my wifey who was hanging out at the &lt;a href="http://twitter.com/sharesquared" target="_blank"&gt;@sharesquared&lt;/a&gt; booth:&lt;/p&gt;&lt;p&gt;&lt;img height="400" src="http://a5.sphotos.ak.fbcdn.net/hphotos-ak-ash4/302199_10150846994065300_683315299_21197388_834619741_n.jpg" width="300" /&gt;&amp;nbsp;&lt;img height="399" src="http://a6.sphotos.ak.fbcdn.net/hphotos-ak-ash4/321041_10150847018035300_683315299_21197527_508518624_n.jpg" width="538" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Keynote:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The keynote area was HUGE!&amp;nbsp; As you can imagine, fitting over 7500 people into a room is quite a task.&amp;nbsp; During the keynote we had SharePoint Team member &lt;a href="http://twitter.com/#!/thekameleon" target="_blank"&gt;@thekameleon&lt;/a&gt; dj&amp;#39;ing. &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img height="248" src="http://a0.twimg.com/profile_images/1572200019/SPC2011_DJing.jpg" width="330" /&gt;&lt;/p&gt;&lt;p&gt;The SharePoint trio, Jared Spararo, Jeff Teper and Kurt Delbene spoke and in-between they played some &amp;quot;cute&amp;quot; videos of celebrities, but unfortunately they didn&amp;#39;t have anyone actually &amp;quot;present&amp;quot; for us to look at.&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;img height="243" src="http://a4.sphotos.ak.fbcdn.net/hphotos-ak-ash4/299880_284192174943998_254473817915834_1075570_1231196189_n.jpg" width="304" /&gt;&amp;nbsp;&lt;img height="241" src="http://a6.sphotos.ak.fbcdn.net/hphotos-ak-ash4/311089_284192218277327_254473817915834_1075571_1399272763_n.jpg" width="324" /&gt;&lt;/p&gt;&lt;p&gt;The real highlight for me of the keynote was when the customer video played.&amp;nbsp; The very opening of the video had my customer eBay&amp;#39;s intranet called &amp;quot;TheHUB&amp;quot;.&amp;nbsp; The eBay mobile app also made an appearance with my name displayed and then immediately followed by me making a cameo on screen!&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;img height="247" src="http://a8.sphotos.ak.fbcdn.net/hphotos-ak-ash4/320548_10150847089360300_683315299_21198081_119564485_n.jpg" width="216" /&gt;&amp;nbsp;&lt;img height="247" src="http://a6.sphotos.ak.fbcdn.net/hphotos-ak-ash4/312290_10150847089380300_683315299_21198082_851231203_n.jpg" width="343" /&gt;&lt;/p&gt;&lt;p&gt;I&amp;#39;ll post the video link later so you can watch it!&amp;nbsp; One of the other neat demos they did was have a SQL Server Denali instance setup in a cluster with some pretty crazy numbers around data corpus.&amp;nbsp; They pulled the network cable on the active SQL Server and had the cluster failover to the passive SQL Server node.&amp;nbsp; The hardware was in the range of $1.5 million and as much as it was a fun demo to see, it is not likely that many customers would be purchasing hardware of that magnitude.&amp;nbsp; Especially when you need have to build out the disaster recovery component at a similar cost in a different geographically located data center:&lt;/p&gt;&lt;p&gt;&lt;img src="http://a5.sphotos.ak.fbcdn.net/hphotos-ak-ash4/321594_10150847089250300_683315299_21198078_1788783991_n.jpg" style="width:428px;height:178px;" /&gt;&amp;nbsp;&lt;img src="http://a2.sphotos.ak.fbcdn.net/hphotos-ak-ash4/294232_10150847089320300_683315299_21198080_2113633661_n.jpg" style="width:412px;height:213px;" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Sessions:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;There were lots and lots of sessions!&amp;nbsp; One thing I noticed was that FAST Search made an appearance in each of the session sets.&amp;nbsp; It was great for me as I had just finished my &lt;a href="http://www.architectingconnectedsystems.com/course.aspx?courseid=43" target="_blank"&gt;FAST Search course&lt;/a&gt; and was able to validate that everything was actually covered!&amp;nbsp; One of the coolest sessions on FAST was the one held by Joshua at the International Monetary Fund (IMF).&amp;nbsp; They had done some pretty amazing stuff with FAST Search Center. The other impressive FAST Search session was done by Paul Branson, he was very knowledgeable and impressed me quite a bit with his demos and movement around the FAST directories.&lt;/p&gt;&lt;p&gt;Our eBay upgrade session was on Wednesday at 3:15, so we were able to party the night before and not have a early morning session where everyone was hungover and sleeping from the previous night!&amp;nbsp;&amp;nbsp; We packed the room (with standing room only) with several Microsoft folks and saw several SharePoint colleagues in the audience.&amp;nbsp; I guess we did a pretty good job as our scores are right around 4.6 out of 5.0.&amp;nbsp; That&amp;#39;s pretty outstanding survey results!&amp;nbsp; After the session I had several people ask me to blog about the MMS implementation and my upgrade tool.&amp;nbsp; I&amp;#39;ll be doing that next week for everyone!&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I&amp;#39;ll be posting the slides to the &lt;a href="http://blogs.architectingconnectedsystems.com/controlpanel/blogs/www.sanspug.org" target="_blank"&gt;SanSpug.org&lt;/a&gt; site for our members to check out as soon as I am able to meaningfully categorize them all.&amp;nbsp; &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Parties:&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;There were a ton of parties this week. As I already mentioned, the best party was the AvePoint &amp;quot;Red Party&amp;quot; party, having an entire dance club to ourselves is pretty darn awesome!&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;img height="263" src="http://a3.sphotos.ak.fbcdn.net/hphotos-ak-ash4/303068_10150847017525300_683315299_21197522_805442508_n.jpg" width="353" /&gt;&amp;nbsp;&lt;img height="262" src="http://a8.sphotos.ak.fbcdn.net/hphotos-ak-ash4/302645_10150847017760300_683315299_21197524_1378949932_n.jpg" width="351" /&gt;&lt;/p&gt;&lt;p&gt;The next best party would have to be the Speaker Party on Thursday night.&amp;nbsp; They brought in two in-and-out burger trucks and cooked us up fresh burgers, fries and shakes...the best part however was their was a DJ.&amp;nbsp; And not only were the speakers invited, but the event staff too.&amp;nbsp; The speakers and MS folks kind sat around chatted, but the staff got down!&amp;nbsp; Two of the staff folks were just flat out awesome break dancers and started a competition...it was killer!&amp;nbsp; The DJ started to play the last song and then I yelled &amp;quot;Move like Jagger&amp;quot;, he pointed at me and said &amp;quot;That&amp;#39;s a better one...&amp;quot; and mixed/faded into it perfectly from Sister Sledge.&amp;nbsp; We danced for a good hour at that party and I had my heart going and sweated it up... &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img height="419" src="http://a8.sphotos.ak.fbcdn.net/hphotos-ak-snc7/297278_10150846994180300_683315299_21197390_1272024871_n.jpg" width="560" /&gt;&lt;/p&gt;&lt;p&gt;The next best party was the Disneyland event hosted by &lt;a href="http://twitter.com/Neudesic" target="_blank"&gt;Nuedesic&lt;/a&gt;.&amp;nbsp; They managed to rent out the entire park just for the SharePoint conference, and what was even more cool, they had bars setup all over the park.&amp;nbsp; The staff said they had never seen alcohol served park-wide before, so I&amp;#39;m guessing they spent a heck of a lot of money getting that event setup for us:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img height="355" src="http://a1.sphotos.ak.fbcdn.net/hphotos-ak-ash4/303890_10150846993445300_683315299_21197381_391005301_n.jpg" width="475" /&gt;&lt;/p&gt;&lt;p&gt;The next best party of the week was the Octoberfiesta party, although we didn&amp;#39;t make it over, I heard they did some pretty cool stuff and everyone enjoyed it:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img height="363" src="http://c0013984.r32.cf1.rackcdn.com/x2_8a07536" width="485" /&gt;&lt;/p&gt;&lt;p&gt;The next best drinking event was the karaoke late into the night on Wednesday.&amp;nbsp; We had the likes of &lt;a href="http://twitter.com/andrewconnell" target="_blank"&gt;Andrew Connell&lt;/a&gt;, &lt;a href="http://twitter.com/meetdux" target="_blank"&gt;Dux Raymond&lt;/a&gt;, AvePoint folks, Dave Milner and several others singing it up.&amp;nbsp; I did the Sister Sledge, &amp;quot;We Are &amp;#39;SharePoint&amp;#39; Family&amp;quot;,but I&amp;#39;d have to say the best singer ended up being &lt;a href="http://twitter.com/dmilner" target="_blank"&gt;Dave Miler&lt;/a&gt;!&amp;nbsp; We (&lt;a href="http://twitter.com/tweetraw" target="_blank"&gt;Randy Williams&lt;/a&gt; and I) tried to get a mosh pit going with some body banging, but the karaoke lady stopped us right away...darn it...&lt;/p&gt;&lt;p&gt;&lt;img height="442" src="http://a5.sphotos.ak.fbcdn.net/hphotos-ak-ash4/321077_10150846994605300_683315299_21197397_2067898735_n.jpg" width="590" /&gt;&amp;nbsp;&lt;img height="442" src="http://a3.sphotos.ak.fbcdn.net/hphotos-ak-snc7/298700_10150846994120300_683315299_21197389_1129948668_n.jpg" width="590" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;Even though we didn&amp;#39;t learn anything new about v.next (other than that they have hired alot of UI developers), the event was a great chance for the SharePoint community to come together, &amp;quot;new kids on the block&amp;quot; vendors to show off their products and have one heck of a set of parties!&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Enjoy!&lt;br /&gt;Chris &lt;br /&gt;&lt;/p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=388" width="1" height="1"&gt;</description><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/spc11/default.aspx">spc11</category></item><item><title>SharePoint Printing Services, UrlAction, STSNavigate2 - Fixing &quot;Invalid page URL:&quot; in SharePoint 2010</title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/10/01/SharePoint-Printing-Services_2C00_-UrlAction_2C00_-STSNavigate2-_2D00_-Fixing-_2200_Invalid-page-URL_3A002200_-in-SharePoint-2010.aspx</link><pubDate>Sat, 01 Oct 2011 18:38:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:384</guid><dc:creator>cjg</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;After the eBay upgrade, I have decided that it is really easy to do SharePoint upgrades and thusly I&amp;#39;m doing another upgrade here in San Diego.&amp;nbsp; As part of the upgrade, you have to go through and analyze the 3rd party components that are installed and make sure they are going to work in 2010.&amp;nbsp; As I have learned, most are not SP2010 ready (OutlookPowerTools, older CorasWorks versions to name a few).&amp;nbsp; Some of them work with some tweaking.&amp;nbsp; That&amp;#39;s what this blog post is about.&amp;nbsp; &lt;/p&gt;&lt;p&gt;This particular customer has the PrintingServices.wsp that allows a one click approach to printing pages and items.&amp;nbsp; What this product does is adds custom actions with a javascript url as the target of the click.&amp;nbsp; This works great in SharePoint 2007, but unfortunately, does not in SP2010.&amp;nbsp; The reason it does not work in SP2010 is that they do not simply pass the URL to the page anymore.&amp;nbsp; It is now wrapped by another javascript method called &amp;quot;STSNavigate2&amp;quot;:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;function STSNavigate2(evt, url)&lt;br /&gt;{ULSxSy:;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; STSNavigate(url);&lt;br /&gt;}&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;As you can see, it in turn calls function STSNavigate:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;function STSNavigate(Url)&lt;br /&gt;{ULSxSy:;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (window.location.search.indexOf(&amp;quot;IsDlg=1&amp;quot;) !=-1)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (Url.indexOf(&amp;quot;?&amp;quot;) !=-1)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (Url.match(&amp;quot;&amp;amp;$&amp;quot;) !=&amp;quot;&amp;amp;&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&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;Url=Url+&amp;quot;&amp;amp;IsDlg=1&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&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;Url=Url+&amp;quot;IsDlg=1&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Url=Url+&amp;quot;?IsDlg=1&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (isPortalTemplatePage(Url))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;window.top.location=STSPageUrlValidation(Url);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;window.location=STSPageUrlValidation(Url);&lt;br /&gt;}&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;STSNavigate in turn calls STSPageUrlvalidation: &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;function STSPageUrlValidation(url)&lt;br /&gt;{ULSxSy:;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return PageUrlValidation(url);&lt;br /&gt;}&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;It then calls PageUrlValidation - THIS IS THE KEY PART:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;function PageUrlValidation(url)&lt;br /&gt;{ULSxSy:;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if ((url.substr(0, 4)==&amp;quot;http&amp;quot;) ||&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(url.substr(0, 1)==&amp;quot;/&amp;quot;)&amp;nbsp;&amp;nbsp; &amp;nbsp; ||&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(url.indexOf(&amp;quot;:&amp;quot;)==-1))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return url;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;var L_InvalidPageUrl_Text=&amp;quot;Invalid page URL: &amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;alert(L_InvalidPageUrl_Text);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return &amp;quot;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Notice that the only valid URLS start with http and contain a colon!!!!&amp;nbsp; Not sure the reasoning behind this &amp;quot;validation&amp;quot;, but it breaks any custom actions that had a simple &amp;quot;javascript&amp;quot; call in them.&amp;nbsp; &lt;/p&gt;&lt;p&gt;You can fix this by changing the C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\1033\Init.js file.&amp;nbsp; Note that this file has been minified (variable names reduced and spaces removed) and does not match the init.debug.js file.&amp;nbsp; Find the following text in the init.js file:&lt;/p&gt;&lt;p&gt;&lt;em&gt;function PageUrlValidation(a){ULSA13:;if(a.substr(0,4)==&amp;quot;http&amp;quot;||a.substr(0,1)==&amp;quot;/&amp;quot;||a.indexOf(&amp;quot;:&amp;quot;)==-1)return a;else{var L_InvalidPageUrl_Text=&amp;quot;Invalid page URL: &amp;quot;;alert(L_InvalidPageUrl_Text);return &amp;quot;&amp;quot;}}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Change it too: &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;function 
PageUrlValidation(a){ULSA13:;&lt;strong&gt;if(a.toLowerCase().indexOf(&amp;quot;javascript&amp;quot;)&amp;gt;-1) return a;&lt;/strong&gt; if(a.substr(0,4)==&amp;quot;http&amp;quot;||a.substr(0,1)==&amp;quot;/&amp;quot;||a.indexOf(&amp;quot;:&amp;quot;)==-1)return
 a;else{var L_InvalidPageUrl_Text=&amp;quot;Invalid page URL: 
&amp;quot;;alert(L_InvalidPageUrl_Text);return &amp;quot;&amp;quot;}}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;This will then allow the older javascript links to work.&amp;nbsp; be sure to document the change as it would get overwrite with any service packs later. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Enjoy!&lt;br /&gt;Chris &lt;br /&gt;&lt;/p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=384" width="1" height="1"&gt;</description><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/custom+actions/default.aspx">custom actions</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/init.js/default.aspx">init.js</category></item><item><title>New 5-day Course - FAST Search for SharePoint!</title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/10/01/New-Course-_2D00_-FAST-Search-for-SharePoint_2100_.aspx</link><pubDate>Sat, 01 Oct 2011 18:31:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:383</guid><dc:creator>cjg</dc:creator><slash:comments>1</slash:comments><description>
&lt;p&gt;After finally having some time to do some course development, I have finished our FAST Search for SharePoint course.&amp;nbsp; We implemented FAST at eBay and we learned quite a few lessons after doing it, all this is rolled up into the course!&amp;nbsp; I&amp;#39;ll be giving away a couple copies of the course during the SharePoint Conference.&amp;nbsp; You&amp;#39;ll have to join us at our &lt;a href="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/08/24/SharePoint-Conference-2011-_2D00_-SoCal-SharePint.aspx" target="_blank"&gt;SoCal party hosted by ACS, ShareSquared and New Horizons SoCal&lt;/a&gt; to win!&amp;nbsp; Here is the outline:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Designing and Deploying FAST Search&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;Install FAST ESP For SharePoint&lt;/li&gt;&lt;li&gt;Configure FAST ESP&lt;/li&gt;&lt;li&gt;Configure Claims Authentication&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Index Content into FAST Databases&lt;/li&gt;&lt;li&gt;Setup FAST Search Center&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Exploring Nctrl&lt;/li&gt;&lt;li&gt;Disabling unnecessary FAST services&lt;/li&gt;&lt;li&gt;Reconfiguring FAST Services&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Explore Log Files&lt;/li&gt;&lt;li&gt;Explore Performance Counters&lt;/li&gt;&lt;li&gt;Explore WMI&lt;/li&gt;&lt;li&gt;InfoToo.exe&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Feeding Content&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;Utilize DocPush.exe to Feed documents&lt;/li&gt;&lt;li&gt;Utilize DocLog.exe to get pipeline information&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Enable the Spy Stage&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Create a custom Pipeline Extension (Console Application)&lt;/li&gt;&lt;li&gt;Create a custom Pipeline Extension (PowerShell)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Configure FAST Search database connector&lt;/li&gt;&lt;li&gt;Perform a crawl using the FAST Search database connector&lt;/li&gt;&lt;li&gt;Clearing the FAST Search index&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Processing Content&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;Managing Property Extractions&lt;/li&gt;&lt;li&gt;Creating a custom Property Extractor&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Explore optionalprocessing.xml&lt;/li&gt;&lt;li&gt;Enabling Offensive Content Filtering&lt;/li&gt;&lt;li&gt;Enable Advanced Filter Pack&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Enable XML Format Detection&lt;/li&gt;&lt;li&gt;Enable XML Mapping&lt;/li&gt;&lt;li&gt;Create a XML Mapper Configuration File&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Configuring StopWordThresholds&lt;/li&gt;&lt;li&gt;Configuring Managed Property Levels&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Utilize the DocVector managed property to generate a Tag Cloud&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Searching Content and Retrieving Results&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;Simple Searches via SharePoint Search&lt;/li&gt;&lt;li&gt;RSS and Windows Explorer Search&lt;/li&gt;&lt;li&gt;AND clause&lt;/li&gt;&lt;li&gt;ANDNOT clause&lt;/li&gt;&lt;li&gt;OR clause&lt;/li&gt;&lt;li&gt;COUNT clause&lt;/li&gt;&lt;li&gt;XRANK clause&lt;/li&gt;&lt;li&gt;NEAR clause&lt;/li&gt;&lt;li&gt;ONEAR clause&lt;/li&gt;&lt;li&gt;Wildcard query&lt;/li&gt;&lt;li&gt;Random query&lt;/li&gt;&lt;li&gt;Testing Search Result Security&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Adding Keywords&lt;/li&gt;&lt;li&gt;Adding Best Bets&lt;/li&gt;&lt;li&gt;Adding Visual Best Bets&lt;/li&gt;&lt;li&gt;Adding Crawl Properties&lt;/li&gt;&lt;li&gt;Adding Managed Properties&lt;/li&gt;&lt;li&gt;Modifying Search Results XSLT&lt;/li&gt;&lt;li&gt;Modifying Refiners (Managed Property)&lt;/li&gt;&lt;li&gt;Modifying Refiners (Managed Metadata)&lt;/li&gt;&lt;li&gt;Managed User Profile Properties&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Creating User Context Properties&lt;/li&gt;&lt;li&gt;Creating User Contexts&lt;/li&gt;&lt;li&gt;Implementing Site Promotions&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Add Query Suggestion (PowerShell)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Modify the Summary Length in Results&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Explore SharePoint Search Scopes&lt;/li&gt;&lt;li&gt;Create Search Scopes utilizing Extended Search Filters&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Add Query Suggestion (PowerShell)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Explore SharePoint Search Scopes&lt;/li&gt;&lt;li&gt;Create Search Scopes utilizing Extended Search Filters&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Implementing Relevance and Linguistics&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;Configuring Query time Lemmatization&lt;/li&gt;&lt;li&gt;Explore FAST Dictionaries&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Configuring Query time Lemmatization&lt;/li&gt;&lt;li&gt;Exploring Dictionaries&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Explore Refiners&lt;/li&gt;&lt;li&gt;Add new Refiners&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Explore Ranking Profiles&lt;/li&gt;&lt;li&gt;Create new Ranking Profiles&lt;/li&gt;&lt;li&gt;Change default ranking profile&lt;/li&gt;&lt;li&gt;Managed Property Boosts&lt;/li&gt;&lt;li&gt;Configuring RankLog Analysis&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Explore Current Spell checking suggestions&lt;/li&gt;&lt;li&gt;Add a Spell Check Exception&lt;/li&gt;&lt;li&gt;Reset the Spell Checking Dictionary&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Create a Site Promotion&lt;/li&gt;&lt;li&gt;Create a Site Demotion&lt;/li&gt;&lt;li&gt;Create a Document Promotion&lt;/li&gt;&lt;li&gt;Create a Document Demotion&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Character Normalization&lt;/li&gt;&lt;li&gt;Antiphrasing&lt;/li&gt;&lt;li&gt;Synonyms&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Configure FAST Tokenization (Word Breaker)&lt;/li&gt;&lt;li&gt;Enable substring tokenization&lt;/li&gt;&lt;li&gt;Configure substring and linguistic tokenization properties&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;&amp;nbsp;See everyone at the conference!&lt;br /&gt;
Chris &lt;br /&gt;
&lt;/p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=383" width="1" height="1"&gt;</description></item><item><title>SharePoint Conference 2011 Session - How eBay Successfully Upgraded their Intranet to SharePoint 2010 </title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/08/26/SharePoint-Conference-Session-_2D00_-How-eBay-Successfully-Upgraded-their-Intranet-to-SharePoint-2010-.aspx</link><pubDate>Fri, 26 Aug 2011 17:11:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:381</guid><dc:creator>cjg</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Dear SharePoint Colleagues,&amp;nbsp;&lt;/p&gt;&lt;p&gt;Join the eBay team and myself as we discuss the eBay upgrade to SharePoint 2010 and how we did it in 3.5 months.&amp;nbsp; The Conference session link is here:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.mssharepointconference.com/pages/sessiondetailsShort.aspx?sessionguid=98f698ae-097d-499e-9908-6023126a44cc" target="_blank"&gt;&lt;span class="ucsd_SpeakerInfo" id="ctl00_PlaceHolderMain_ucSessionDetailsShort_labelTitle"&gt;How eBay Successfully Upgraded their Intranet to SharePoint 2010&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Here is an outline of what we plan on speaking about:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Why eBay moved to SharePoint 2010&lt;/li&gt;&lt;li&gt;The environments (2007 and 2010)&lt;/li&gt;&lt;li&gt;eBay Governance&lt;/li&gt;&lt;li&gt;eBay Project Plan - how we managed the project and the methodologies we used&lt;/li&gt;&lt;li&gt;How we documented the farm&lt;/li&gt;&lt;li&gt;How we approached the technical side of&amp;nbsp;the upgrade&lt;/li&gt;&lt;li&gt;How we increased performane by 30%&lt;/li&gt;&lt;li&gt;How eBay implemented disaster recovery&lt;/li&gt;&lt;li&gt;And alot more!&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;We will answer questions after the session, but to have a one on one with the eBay team, join us Wednesday night at our SoCal SharePint.&amp;nbsp;&amp;nbsp;We will have a limited number of drink tickets and details on how to get the tickets are here:&lt;/p&gt;&lt;p&gt;&lt;a href="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/08/24/SharePoint-Conference-2011-_2D00_-SoCal-SharePint.aspx" target="_blank"&gt;http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/08/24/SharePoint-Conference-2011-_2D00_-SoCal-SharePint.aspx&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Hope to see you there!&lt;br /&gt;Chris&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=381" width="1" height="1"&gt;</description><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/ebay/default.aspx">ebay</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/spc11/default.aspx">spc11</category></item><item><title>SharePoint Conference 2011 - SoCal SharePint</title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/08/24/SharePoint-Conference-2011-_2D00_-SoCal-SharePint.aspx</link><pubDate>Wed, 24 Aug 2011 04:36:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:380</guid><dc:creator>cjg</dc:creator><slash:comments>2</slash:comments><description>&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;Dear SharePoint Colleagues,&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;Get ready for a great evening at the 2011 SharePoint Conference!&amp;nbsp; On Wednesday night, Oct 5th,&amp;nbsp;after the exhibit hall reception, we will be having a &lt;strong&gt;SoCal&lt;/strong&gt; SharePint party.&amp;nbsp; Join us at &lt;/font&gt;&lt;a href="http://console.mxlogic.com/redir/?1osd7b2qbWpJdNcsY-MMr014dyvlKnWHYpmTBY9Rl_3t-psLuZXTLsTsToD6l0ljokmr8Y01dEETushdEIEInpuvhjdFFCMmd96y0o2MAq80JIpBzh05zZx2k29KvxYY1NJ4SPsSCUCeuvhKrcb3Q" target="_blank"&gt;&lt;font color="#0000ff" face="Calibri" size="3"&gt;Bar Louie&amp;#39;s&lt;/font&gt;&lt;/a&gt;&lt;font face="Calibri" size="3"&gt; outside patio reserved specifically for us&amp;nbsp;(directly across the street from the Convention Center) for a quick drink from&amp;nbsp;7 to 9pm.&amp;nbsp;Meet the &lt;/font&gt;&lt;a href="http://console.mxlogic.com/redir/?2MUqem4QnQPqryoVVZxwS02YxFrBPt-psLuZXTLsTsToD6l0ljokmr8Y01dEETushdEIEInpuvhjdFFCMmd96y0o2MAq80JIpBzh05zZx2k29KvxYY1NJcSPsSCUCeuvhKr7tCECDt9" target="_blank"&gt;&lt;font color="#0000ff" face="Calibri" size="3"&gt;eBay&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt; team, one of a few reference customers of the SPC11 conference, and several SharePoint MVPs and superstars.&amp;nbsp; After the SoCal SharePint, we will head over&amp;nbsp;to&amp;nbsp;enjoy&amp;nbsp;another SharePint in the ESPNZone in Downtown Disney!&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;This event is hosted by the local Southern California companies that want to make sure you have a great time while in Anaheim, CA:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="MsoNormal" style="margin:0in 0in 0pt;tab-stops:list .5in;"&gt;&lt;span&gt;&lt;a href="http://blogs.architectingconnectedsystems.com/controlpanel/blogs/www.architectingconnectedsystems.com" target="_blank"&gt;&lt;font color="#0000ff" face="Calibri" size="3"&gt;Architecting Connected Systems&lt;/font&gt;&lt;/a&gt;&amp;nbsp;(San Diego,CA)&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&amp;nbsp;- eBay Upgrade Architect and Preferred&amp;nbsp;Microsoft Certified SharePoint Courseware Company&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="margin:0in 0in 0pt;tab-stops:list .5in;"&gt;&lt;span&gt;&lt;a href="http://www.nhsocal.com/" target="_blank"&gt;&lt;font color="#0000ff" face="Calibri" size="3"&gt;New Horizons of Southern California&lt;/font&gt;&lt;/a&gt;&amp;nbsp;(Anahiem, CA)&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&amp;nbsp;- A Premier Microsoft Certified&amp;nbsp;SharePoint Training Company&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="margin:0in 0in 0pt;tab-stops:list .5in;"&gt;&lt;span&gt;&lt;a href="http://www.sharesquared.com" target="_blank"&gt;&lt;font color="#0000ff" face="Calibri" size="3"&gt;ShareSquared&lt;/font&gt;&lt;/a&gt;&amp;nbsp;(Pasadena, CA)&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&amp;nbsp;- A Premier Microsoft Certified SharePoint Consulting and Software&amp;nbsp;Company&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;tab-stops:list .5in;"&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Get&amp;nbsp;your free drink tickets!&amp;nbsp; There are several ways to get a free drink ticket:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;ul&gt;&lt;li class="MsoNormal" style="margin:0in 0in 0pt;tab-stops:list .5in;"&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Find any of&amp;nbsp;the eBay team (they will be wearing eBay shirts and badges as well as&amp;nbsp;have a session during the conferece) and ask them about their upgrade, and you get a free drink ticket!&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="margin:0in 0in 0pt;tab-stops:list .5in;"&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Stop by the ShareSquared booth&amp;nbsp;and ask them about their great SharePoint offerings, and you get a free drink ticket!&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="margin:0in 0in 0pt;tab-stops:list .5in;"&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Call your local SoCal New Horizons Account Executive, 888-825-6684,&amp;nbsp;and/or stop by the New Horizons office in Anaheim, and you get a free drink ticket!&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-family:'Calibri','sans-serif';font-size:11pt;"&gt;Looking forward to seeing&amp;nbsp;you there!&lt;br /&gt;Chris&lt;/span&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=380" width="1" height="1"&gt;</description><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/sharepoint+conference/default.aspx">sharepoint conference</category></item><item><title>SharePoint 2010 Upgrade Project and Goverance Plan Samples</title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/08/24/SharePoint-2010-Upgrade-Project-and-Goverance-Plan-Samples.aspx</link><pubDate>Wed, 24 Aug 2011 04:29:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:379</guid><dc:creator>cjg</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Dear SharePoint Colleagues,&amp;nbsp;&lt;/p&gt;&lt;p&gt;We are pleased to announce that&amp;nbsp;we are&amp;nbsp;making available generic MS Project Plan&amp;nbsp;and Governance plans and the SP Build Guide and MS Project Deployment Project&amp;nbsp;based on all the upgrade projects&amp;nbsp;we have been involved with over the years (including the latest eBay project).&amp;nbsp; I will post the PayPal links for these later this week in this blog post and will setup a seperate site for them.&amp;nbsp; Licensing will be based on user and will be non-transferrable except for projects you work on at least 25%.&amp;nbsp; I&amp;#39;ll post some pictures of the generic outline of the sections for both so you see what you are getting.&amp;nbsp; You will get a full stampled PDF version and/or a MS Project template&amp;nbsp;of each as part of your purchase.&amp;nbsp; These items have been and will continue to be&amp;nbsp;included in ACS SharePoint courses at no additional charge.&lt;/p&gt;&lt;table&gt;&lt;tr&gt;&lt;td align="left"&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.architectingconnectedsystems.com/tools.aspx" target="_blank"&gt;SharePoint 2010 Build Guide - $199 &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.architectingconnectedsystems.com/tools.aspx"&gt;SharePoint 2010 Project Plan - $149&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.architectingconnectedsystems.com/tools.aspx"&gt;SharePoint 2010 Governance Plan - $149&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.architectingconnectedsystems.com/tools.aspx"&gt;SharePoint 2010 Deployment Plan - $199&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;OR get all four for a discount!&lt;/p&gt;&lt;li&gt;&lt;a href="http://www.architectingconnectedsystems.com/tools.aspx"&gt;SharePoint 2010&amp;nbsp;Documentation Package&amp;nbsp;- $599&lt;/a&gt;&lt;/li&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;Each of these are based on large SharePoint projects and years of working with customers around the globle implementing SharePoint 2007 and 2010. The most recent being the large eBay upgrade project. &lt;br /&gt;&lt;br /&gt;&lt;p&gt;Enjoy!&lt;br /&gt;Chris&lt;/p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=379" width="1" height="1"&gt;</description><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/project+plan/default.aspx">project plan</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/governance+plan/default.aspx">governance plan</category></item><item><title>What the hell is NDR64 and why should you care?</title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/08/24/What-the-hell-is-NDR64-and-why-should-you-care_3F00_.aspx</link><pubDate>Wed, 24 Aug 2011 03:57:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:378</guid><dc:creator>cjg</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Sooo, I mentioned that we did a few *firsts* at eBay.&amp;nbsp; One of them was to put Windows Server 2008 R2 in the DMZ and try to get SharePoint 2010 to work.&amp;nbsp; Needless to say, after setting everything up properly, it didn&amp;#39;t.&amp;nbsp; After enabling 500 failed request tracing in the web servers and doing some crazy port analyzer stuff with good ole WireShark, I determined that there was some kind of firewall issue occuring between IIS and the domain controller in the DMZ.&amp;nbsp; &lt;/p&gt;&lt;p&gt;Everything was setup properly in the firewall, with IIS and with SharePoint, so we all were very confused by what was occuring.&amp;nbsp; It got so bad, that we made a preimer support call to see if someone could help us figure out what the hell was going on.&amp;nbsp; Turns out we got one of the top IIS guys in Redmond on the phone and he was able to very quickly tell us we were having an RPC problem.&amp;nbsp; We were all very confused, why are we having an RPC problem?&amp;nbsp; He quickly told us about NDR64.&amp;nbsp;&amp;nbsp; NDR64 is a new protocol for RPC communicaiton in windows server 2008 and windows server 2008 R2.&amp;nbsp; This protocol was not exactly written by Microsoft nor did Microsoft want to implement it&amp;nbsp;(hint it was a MS partner that drove them to do it, but NDA keeps me from saying who and why).&amp;nbsp; here&amp;#39;s the details of NDR64:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="http://bit.ly/nN1YOt"&gt;http://bit.ly/nN1YOt&lt;/a&gt;&lt;/p&gt;&lt;p&gt;So what does that mean?&amp;nbsp; Well, let me explain it...turns out that today&amp;#39;s firewalls are able to recognize RPC packets and conversations and can dynamically open the ports between servers based on these conversations.&amp;nbsp; The new NDR64 is a 64bit version of the older 32bit version of the RPC protocol and MOST firewalls today, DO NOT know how to handle or interrogate the traffic.&amp;nbsp; SO what does that mean?&amp;nbsp; It means that you better be ready to open a whole bunch of high level ports to ensure that your authentication traffic will work when running SharePoint 2010 in your DMZ on Server 2008 and Server 2008 R2.&lt;/p&gt;&lt;p&gt;Until all the firewall vendors write a new bios/software to support his new RPC protocol, you will have to keep from implementing a DMZ 2010 environment, or open a lot of ports until your firewall vendor figures it out.&lt;/p&gt;&lt;p&gt;I&amp;#39;d start calling your firewall vendor NOW and see when you can get the latest firmware/software version.&lt;/p&gt;&lt;p&gt;Enjoy,&lt;br /&gt;Chris&lt;/p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=378" width="1" height="1"&gt;</description><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/ndr64/default.aspx">ndr64</category></item><item><title>FAST Seach - Admin OM Exception occurred. Message: Failed to communicate with the WCF service - The trust relationship between the primary domain and the trusted domain failed.</title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/08/20/FAST-Seach-_2D00_-Admin-OM-Exception-occurred.-Message_3A00_-Failed-to-communicate-with-the-WCF-service-_2D00_-The-trust-relationship-between-the-primary-domain-and-the-trusted-domain-failed_2E00_.aspx</link><pubDate>Sat, 20 Aug 2011 22:09:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:376</guid><dc:creator>cjg</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I was getting this error:&lt;/p&gt;&lt;p&gt;Admin OM Exception occurred. Message: Failed to communicate with the WCF service. , Error Code:e107, Stacktrace:Microsoft.SharePoint.Search.Extended.Administration.Common.AdminException: Failed to communicate with the WCF service. &amp;mdash;&amp;gt; System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]: The trust relationship between the primary domain and the trusted domain failed.&amp;nbsp;&lt;/p&gt;&lt;p&gt;This was a great blog to point me to the issue.&amp;nbsp; Turns out I had two domains in my Active Directory that had lost the trust setup but nothing was broken with my Active Directory or FAST setup.&amp;nbsp; I had to delete the trusts and add them back, then it started working again.&lt;/p&gt;&lt;p&gt;&lt;a href="http://blog.isaacblum.com/tag/the-trust-relationship-between-the-primary-domain-and-the-trusted-domain-failed/"&gt;http://blog.isaacblum.com/tag/the-trust-relationship-between-the-primary-domain-and-the-trusted-domain-failed/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Enjoy!&lt;br /&gt;Chris&lt;/p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=376" width="1" height="1"&gt;</description><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/FAST+Search/default.aspx">FAST Search</category></item><item><title>Just another Don't Do this when Developing SharePoint Blog Post - IT IS NEEDED!</title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/08/09/Just-another-Don_2700_t-Do-this-when-Developing-SharePoint-Blog-Post-_2D00_-IT-IS-NEEDED_2100_.aspx</link><pubDate>Tue, 09 Aug 2011 18:38:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:375</guid><dc:creator>cjg</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Ok, you hear over and over and over again, &lt;strong&gt;don&amp;#39;t do this, don&amp;#39;t do&lt;/strong&gt; &lt;strong&gt;that&lt;/strong&gt; when developing SharePoint.&amp;nbsp; But it seems that not too many people listen to all that wonderful best practice guidance.&amp;nbsp; As part of the eBay project, we inherited A LOT of code from previous developers and consultants (which will remain unnamed, but ask me at SPC and I&amp;#39;ll tell you).&amp;nbsp; This code has so many bad components to it it was unbelieveable.&amp;nbsp; Every SharePoint&amp;nbsp;rule was broken.&amp;nbsp; There were so many broken things that we couldn&amp;#39;t fix them all, so we focused on the most important and visable items.&amp;nbsp; &lt;/p&gt;&lt;p&gt;Maarten has done a great job of summarizing all the things we had to do to fix this code.&amp;nbsp; Check out his blog post here:&lt;/p&gt;&lt;p&gt;&lt;a href="http://withinsharepoint.com/archives/186"&gt;http://withinsharepoint.com/archives/186&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Enjoy!&lt;br /&gt;Chris&lt;/p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=375" width="1" height="1"&gt;</description><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/Sharepoint/default.aspx">Sharepoint</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/upgrade/default.aspx">upgrade</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/development/default.aspx">development</category></item><item><title>Output Caching in SharePoint 2010 - It doesn't work, err it does...</title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/07/29/Object-Caching-in-SharePoint-2010-_2D00_-It-doesn_2700_t-work_2C00_-err-it-does_2E002E002E00_.aspx</link><pubDate>Fri, 29 Jul 2011 20:56:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:370</guid><dc:creator>cjg</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Blog #7&amp;nbsp;in How I Successfully Upgraded&amp;nbsp;eBay to SharePoint 2010 - &lt;a href="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/07/29/Increasing-SharePoint-Performance-_2D00_-CSS_2C00_-Javascript-and-Pictures.aspx" target="_blank"&gt;&lt;font color="#555555"&gt;See Previous Blog&amp;nbsp;In Series&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In my last blog post I made a comment that Output Caching does not work in 2010.&amp;nbsp; Well, it works, but &lt;strong&gt;that&amp;#39;s the problem&lt;/strong&gt;.&amp;nbsp; SharePoint 2010 has elements that are very poorly designed...but we all knew that didn&amp;#39;t we?&lt;/p&gt;&lt;p&gt;What is object caching?&amp;nbsp; It&amp;#39;s an ASP.NET feature that allows the HTML of the page to be cached in the web server&amp;#39;s memory and very quickly be presented to the clients (albeit slowly with high latency).&amp;nbsp; Output caching can be turned on on your publishing sites in the Site Actions, Site Settings page for the site collection.&amp;nbsp; Again, once turned on, the HTML is cached....this is bad.&amp;nbsp; Yes, I said it is bad.&amp;nbsp; Why?&amp;nbsp; &lt;/p&gt;&lt;p&gt;There is this wonderful control called &amp;quot;PersonalSiteActions&amp;quot;.&amp;nbsp; This control emits javascript directly to the page.&amp;nbsp; This javascript is specifc to a user.&amp;nbsp; Wha????&amp;nbsp;&amp;nbsp; Specifc to a user?&amp;nbsp; But that means....yep....you got it.&amp;nbsp; The first person to hit the page will cause the HTML to render and &lt;strong&gt;THAT HTML WILL BE CACHED&lt;/strong&gt;.&amp;nbsp;&amp;nbsp; What does the rendered HTML look like?&amp;nbsp; Here it is:&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;span class="JS_KEY"&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; ctl00_ctl39_SocialNavControl_insertMyProfileMenu() {&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;/em&gt;&lt;em&gt;&lt;span class="JS_KEY"&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; menus = document.getElementsByTagName(&lt;span class="JS_STR"&gt;&lt;font color="#800000"&gt;&amp;#39;menu&amp;#39;&lt;/font&gt;&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;span class="JS_KEY"&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (menus == &lt;span class="JS_KEY"&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;)&amp;nbsp; &lt;span class="JS_KEY"&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;span class="JS_KEY"&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; menu = &lt;span class="JS_KEY"&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;span class="JS_KEY"&gt;&lt;font color="#0000ff"&gt;for&lt;/font&gt;&lt;/span&gt; (&lt;span class="JS_KEY"&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; i=&lt;span class="JS_NUM"&gt;&lt;font color="#ff0000"&gt;0&lt;/font&gt;&lt;/span&gt;, len=menus.length; i&amp;lt;len; i++) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span class="JS_KEY"&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (menus&lt;img src="http://blogs.architectingconnectedsystems.com/emoticons/emotion-55.gif" alt="Idea" /&gt;.id.lastIndexOf(&lt;span class="JS_STR"&gt;&lt;font color="#800000"&gt;&amp;#39;PersonalActionMenu&amp;#39;&lt;/font&gt;&lt;/span&gt;) != &lt;span class="JS_NUM"&gt;&lt;font color="#ff0000"&gt;-1&lt;/font&gt;&lt;/span&gt;) { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;menu = menus&lt;img src="http://blogs.architectingconnectedsystems.com/emoticons/emotion-55.gif" alt="Idea" /&gt;; &lt;span class="JS_KEY"&gt;&lt;font color="#0000ff"&gt;break&lt;/font&gt;&lt;/span&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;&amp;nbsp; &lt;span class="JS_KEY"&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (menu == &lt;span class="JS_KEY"&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;)&amp;nbsp;&amp;nbsp; &lt;span class="JS_KEY"&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;span class="JS_KEY"&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; elm = document.createElement(&lt;span class="JS_STR"&gt;&lt;font color="#800000"&gt;&amp;#39;ie:menuitem&amp;#39;&lt;/font&gt;&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;elm.setAttribute(&lt;span class="JS_STR"&gt;&lt;font color="#800000"&gt;&amp;#39;menugroupid&amp;#39;&lt;/font&gt;&lt;/span&gt;, &lt;span class="JS_STR"&gt;&lt;font color="#800000"&gt;&amp;#39;50&amp;#39;&lt;/font&gt;&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;elm.setAttribute(&lt;span class="JS_STR"&gt;&lt;font color="#800000"&gt;&amp;#39;description&amp;#39;&lt;/font&gt;&lt;/span&gt;, &lt;span class="JS_STR"&gt;&lt;font color="#800000"&gt;&amp;#39;View and manage your profile.&amp;#39;&lt;/font&gt;&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;elm.setAttribute(&lt;span class="JS_STR"&gt;&lt;font color="#800000"&gt;&amp;#39;text&amp;#39;&lt;/font&gt;&lt;/span&gt;, &lt;span class="JS_STR"&gt;&lt;font color="#800000"&gt;&amp;#39;My Profile&amp;#39;&lt;/font&gt;&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;elm.setAttribute(&lt;span class="JS_STR"&gt;&lt;font color="#800000"&gt;&amp;#39;onmenuclick&amp;#39;&lt;/font&gt;&lt;/span&gt;, &lt;span class="JS_STR"&gt;&lt;font color="#800000"&gt;&amp;#39;STSNavigate2(event,\&amp;#39;http:\u002f\u002fwww.blah.org:80\u002fsites\u002fmy\u002fPerson.aspx?accountname=&lt;strong&gt;CONTOSO\GIVENSCJ&lt;/strong&gt;)&amp;#39;&lt;/font&gt;&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;elm.setAttribute(&lt;span class="JS_STR"&gt;&lt;font color="#800000"&gt;&amp;#39;id&amp;#39;&lt;/font&gt;&lt;/span&gt;, &lt;span class="JS_STR"&gt;&lt;font color="#800000"&gt;&amp;#39;ID_MySiteLinksMenu&amp;#39;&lt;/font&gt;&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;span class="JS_KEY"&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; elm2 = document.createElement(&lt;span class="JS_STR"&gt;&lt;font color="#800000"&gt;&amp;#39;ie:menuitem&amp;#39;&lt;/font&gt;&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;elm2.setAttribute(&lt;span class="JS_STR"&gt;&lt;font color="#800000"&gt;&amp;#39;menugroupid&amp;#39;&lt;/font&gt;&lt;/span&gt;, &lt;span class="JS_STR"&gt;&lt;font color="#800000"&gt;&amp;#39;50&amp;#39;&lt;/font&gt;&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;elm2.setAttribute(&lt;span class="JS_STR"&gt;&lt;font color="#800000"&gt;&amp;#39;description&amp;#39;&lt;/font&gt;&lt;/span&gt;, &lt;span class="JS_STR"&gt;&lt;font color="#800000"&gt;&amp;#39;Open your personal homepage&amp;#39;&lt;/font&gt;&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;elm2.setAttribute(&lt;span class="JS_STR"&gt;&lt;font color="#800000"&gt;&amp;#39;text&amp;#39;&lt;/font&gt;&lt;/span&gt;, &lt;span class="JS_STR"&gt;&lt;font color="#800000"&gt;&amp;#39;My Site&amp;#39;&lt;/font&gt;&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;elm2.setAttribute(&lt;span class="JS_STR"&gt;&lt;font color="#800000"&gt;&amp;#39;onmenuclick&amp;#39;&lt;/font&gt;&lt;/span&gt;, &lt;span class="JS_STR"&gt;&lt;font color="#800000"&gt;&amp;#39;STSNavigate2(event,\&amp;#39;http:\u002f\u002fwww.blah.org:80\u002fsites\u002fmy\u002f\&amp;#39;)&amp;#39;&lt;/font&gt;&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;elm2.setAttribute(&lt;span class="JS_STR"&gt;&lt;font color="#800000"&gt;&amp;#39;id&amp;#39;&lt;/font&gt;&lt;/span&gt;, &lt;span class="JS_STR"&gt;&lt;font color="#800000"&gt;&amp;#39;ID_MySiteMenu&amp;#39;&lt;/font&gt;&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;span class="JS_KEY"&gt;&lt;font color="#0000ff"&gt;...&lt;/font&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;What happens when the next user comes along?&amp;nbsp; The javascript is CACHED.&amp;nbsp; When they click on the &amp;quot;My Profile&amp;quot; link, they will go to the GIVENSCJ personal site NOT their personal site.&amp;nbsp; This is what is know as a &lt;strong&gt;non-cache safe control&lt;/strong&gt;.&amp;nbsp; One might think that you could just go into the ASPX page and edit this, but NO.&amp;nbsp; This is inside the&amp;nbsp;PersonalSiteActions control.&amp;nbsp; One might think, I&amp;#39;ll create my own control...well, that&amp;#39;s a start, but upon further investigation via reflector, you see that is IMPOSSIBLE.&amp;nbsp; The control has several permission based checks for if a page is in Shared mode or Personal mode and all kinds of internal methods and properties.&amp;nbsp; Dead end.&lt;/p&gt;&lt;p&gt;This same problem happens for any control you have written that outputs user specific content.&amp;nbsp; You must ensure that ALL of your controls are cache safe for the basic out of the box output caching to work.&amp;nbsp; If you don&amp;#39;t want these to be cached, you are goign to have to tell the output cache not to cache those sections.&amp;nbsp; Now we are customizing the out of the box master pages...YUK.&lt;/p&gt;&lt;p&gt;NOTE:&amp;nbsp; One other issue with the PersonalSiteActions is the &amp;quot;My Site&amp;quot; link.&amp;nbsp; Notice how it takes you to the default.aspx page that has the newsfeeds.&amp;nbsp; How is that your &amp;quot;My Site&amp;quot;???&amp;nbsp; Really?&amp;nbsp; The SharePoint team could have kept the branding similar as it just confused the hell out of users when they are navigating in SharePoint 2010.&amp;nbsp; So what can you do with this?&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Change the link where the javascript points&lt;/li&gt;&lt;li&gt;Update the page to have a redirect&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The only way to change the link for the PersonalSiteActions is to do HTML capture and rewrite (yes we even tried javascript and fancy JQuery - no go!).&amp;nbsp; You can write an HTTP Handler for this.&amp;nbsp; What happens if you do this?&amp;nbsp; Our friend Output Caching is not a friend to HTML rewrite.&amp;nbsp; It forces the output cache to disable itself.&amp;nbsp; Output cache minus the quirks in SharePoint 2010, can cause a huge increase in&amp;nbsp;application performance.&amp;nbsp; Implmenting HTTP redirect forces this off, but it worked as I was able to replace the link to the proper link for the my site&lt;/p&gt;&lt;p&gt;The easiest way to get the &amp;quot;branding&amp;quot; right, was to put on the default.aspx page, a redirect to person.aspx.&amp;nbsp; Problem solved, output cache saved.&lt;/p&gt;&lt;p&gt;Enjoy,&lt;br /&gt;Chris&lt;/p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=370" width="1" height="1"&gt;</description><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/personalsiteactions/default.aspx">personalsiteactions</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/output+cache/default.aspx">output cache</category></item><item><title>Increasing SharePoint Performance - CSS, Javascript and Pictures</title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/07/29/Increasing-SharePoint-Performance-_2D00_-CSS_2C00_-Javascript-and-Pictures.aspx</link><pubDate>Fri, 29 Jul 2011 19:44:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:369</guid><dc:creator>cjg</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Blog #6&amp;nbsp;in How I Successfully Upgraded&amp;nbsp;eBay to SharePoint 2010 - &lt;a href="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/07/29/Rapid-Solution-Deployment-_2D00_-SharePoint-2010.aspx" target="_blank"&gt;&lt;font color="#555555"&gt;See Previous Blog&amp;nbsp;In Series&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;One of the requirements of our upgrade was that the upgraded system would perform better than the current 2007 production environment.&amp;nbsp; This included the latency to Europe and other non-US countries.&amp;nbsp; Their are many options that one would have to do this, these include the following:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Increased bandwidth&lt;/li&gt;&lt;li&gt;Decrease&amp;nbsp;latency&lt;/li&gt;&lt;li&gt;Page Weight&lt;/li&gt;&lt;li&gt;Caching (Server, F5, Proxy, CDN)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Increased bandwidth:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;In our case, bandwidth was not an issue.&amp;nbsp; In your circumstances, that may or may not be the case.&amp;nbsp; If you have a small pipe, you won&amp;#39;t be able to get too many requests going through it.&amp;nbsp; In the end, this really isn&amp;#39;t a big deal.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Decreased Latancy:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;SUPER SUPER &lt;/strong&gt;important.&amp;nbsp; Latency is the time is takes for the html packets to get to the client.&amp;nbsp; If you have high latencies, your users are going to hate your intranet/SharePoint and call it slow.&amp;nbsp; Even though you spent millions on hardware and it is able to generate the HTML faster than any other system, it can&amp;#39;t get it to them fast enough.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Decrease Page Weight:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;If&amp;nbsp;you were to fire up Fiddler and watch the typcial traffic flow for a request to SharePoint 2010.&amp;nbsp; You will see several requests are being made to the server.&amp;nbsp; Because there is an order to the madness, their is a multiplier effect to the time it will take for a user to fully load a page (even with async requests occuring).&amp;nbsp; &lt;strong&gt;YOUR NUMBER ONE GOAL IS TO MINIMIZE THE HTTP REQUESTS FOR A PAGE.&amp;nbsp;&lt;/strong&gt; How do you do this?&amp;nbsp; You can do this in several ways:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div&gt;Compress CSS&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Minify Javascript&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Evalute Picture Usage&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Compress CSS:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;The CSS classes between 2007 and 2010 changed A LOT!&lt;/strong&gt;&amp;nbsp; If you had custom CSS that overrode the out of the box CSS, it very likely will not have any effect in 2010.&amp;nbsp; It should go without saying....you should remove this CSS.&amp;nbsp; You should also attempt to determine how many different CSS files you have being downloaded from your pages.&amp;nbsp; If you can consolidate those into one CSS, then you are going to be in a very good position moving foward.&amp;nbsp; Steps:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div&gt;Find all CSS classes used in your pages&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Evaluate if they can be combined into one CSS file&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Determine what CSS is used&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Remove un-used CSS from your CSS files&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Compress the CSS (remove all white space)&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;How does one find out is CSS is used or not?&amp;nbsp; Here&amp;#39;s the steps:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt;Get all your CSS classes used in your CSS files&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Export all ASPX files from SharePoint to the SharePoint Root&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Run a search on all the files for each CSS&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Any CSS that is not found can be deleted&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;1.&amp;nbsp; How does one export all the CSS?&amp;nbsp; Heres a handy script:&lt;/p&gt;&lt;p&gt;&lt;em&gt;$templateDir = &amp;quot;c:\program files\common files\microsoft shared\web server extensions\14\template&amp;quot;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;del &amp;quot;$templateDir\ASPX&amp;quot; -recurse -force&lt;br /&gt;mkdir &amp;quot;$templateDir\ASPX&amp;quot;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;#export all aspx files to temp directory&lt;br /&gt;$cdbs = get-spcontentdatabase&lt;br /&gt;$count = 0&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;foreach($cdb in $cdbs)&lt;br /&gt;{&lt;br /&gt;&amp;quot;Processing &amp;quot; + $cdb.Name&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$conn = new-object system.data.sqlclient.sqlconnection $cdb.legacydatabaseconnectionstring.replace(&amp;quot;Timeout=15&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;$conn.open()&lt;br /&gt;$cmd = $conn.CreateCommand()&lt;br /&gt;$cmd.CommandTimeout = 4000&lt;br /&gt;$cmd.commandtext = &amp;quot;select dirname, leafname, content from alldocs ad, alldocstreams ads where ad.Id = ads.id and ads.id in (select id from alldocs ad where extensionforfile in (&amp;#39;aspx&amp;#39;)) and ad.internalversion = ads.InternalVersion&amp;quot;;&lt;br /&gt;$reader = $cmd.executereader()&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;while ($reader.read())&lt;br /&gt;{&lt;br /&gt;$filename = $reader[&amp;quot;leafname&amp;quot;].replace(&amp;quot;/&amp;quot;,&amp;quot;_&amp;quot;)&lt;br /&gt;$fileContent = $reader[&amp;quot;content&amp;quot;]&lt;br /&gt;$dirname = $reader[&amp;quot;dirname&amp;quot;]&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$temp = $count.tostring() + &amp;quot;`t&amp;quot; + $cdb.Name +&amp;quot;`t&amp;quot; + $dirname +&amp;quot;`t&amp;quot; + $filename&lt;br /&gt;add-content &amp;quot;Files_ASPX.txt&amp;quot; $temp&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;[System.IO.File]::Writeallbytes($templateDir + &amp;quot;\ASPX\&amp;quot; + $count.tostring() + &amp;quot;_&amp;quot; + $filename, $fileContent)&lt;br /&gt;$count++&lt;br /&gt;}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$reader.close()&lt;br /&gt;$conn.close()&lt;br /&gt;}&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;2. How does one search for the CSS?&amp;nbsp; Here&amp;#39;s another handy script (note it will take a while for this to finish):&lt;/p&gt;&lt;p&gt;&lt;em&gt;$classes = get-content &amp;quot;Css.txt&amp;quot;&lt;br /&gt;cd &amp;quot;c:\program files\common files\microsoft shared\web server extensions\14&amp;quot;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;foreach($_ in $classes)&lt;br /&gt;{&lt;br /&gt;dir -r -i *.aspx | select-string $_ | select filename, linenumber &amp;gt;&amp;gt; $_.txt&lt;br /&gt;dir -r -i *.ascx | select-string $_ | select filename, linenumber &amp;gt;&amp;gt; $_.txt&lt;br /&gt;dir -r -i *.css | select-string $_ | select filename, linenumber &amp;gt;&amp;gt; $_.txt&lt;br /&gt;}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;3.&amp;nbsp; Create a list of all the CSS classes used in your CSS, &lt;/p&gt;&lt;p&gt;4.&amp;nbsp; Compare the output of the last script and your CSS list, determine what is not used.&amp;nbsp; I&amp;#39;ll leave it to you to write the script for that.&amp;nbsp; Just use a hashtable :)&lt;/p&gt;&lt;p&gt;5. Compress your CSS, tools for that:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div&gt;&lt;a href="http://www.csscompressor.com/"&gt;http://www.csscompressor.com/&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Minify BLOCKED SCRIPT&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;SharePoint 2010 will cause your page weight to go up.&amp;nbsp; This is because of its heavy use of JavaScript.&amp;nbsp; They did think ahead and minify the javascript files, so that ensure you don&amp;#39;t take a huge hit on the files.&amp;nbsp; If you have your own custom JavaScript and you haven&amp;#39;t minified it, you are causing a higher page weight and your remote users will not have an optimal experience.&lt;/p&gt;&lt;p&gt;Tools to Minify&amp;nbsp;are here:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div&gt;&lt;a href="http://www.minifyjavascript.com/"&gt;http://www.minifyjavascript.com/&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Evaluate Picture Usage:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Does your site have a lot of pictures?&amp;nbsp; Doesn&amp;#39;t look like SharePoint anymore?&amp;nbsp; That&amp;#39;s both a good and bad thing.&amp;nbsp; The more pictures you have, the large the page weight.&amp;nbsp; Here&amp;#39;s what you can do to decrease the page weight:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div&gt;Ensure that buffer images are width 1 and heigth 1 - I can&amp;#39;t tell you how many times I have seen an image created that is 10K and is used as a buffer image.&amp;nbsp; It only needs to be a few bytes and a 1x1 image!!!&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Use sprites - make lots of small images into one to reduce your HTTP requests&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Caching:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;There are lots of ways to do caching.&amp;nbsp; And there is a ranking of most benefical and easy caching methods...here they are:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div&gt;Proxy Server&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Content Delivery Network (CDN)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Hardware compression&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;F5 Load Balancer&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Web Server&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Proxy Server &lt;/strong&gt;- The proxy server method &lt;strong&gt;*really*&lt;/strong&gt; is the best one.&amp;nbsp; You can put a proxy server in each of your geo locations.&amp;nbsp; The job of the proxy server is to cache common elements like CSS, Images and Javascript and do it on that side of the &amp;quot;pond&amp;quot;.&amp;nbsp; This makes such a &lt;strong&gt;HUGE &lt;/strong&gt;difference its not even funny.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Content Delivery Network (CDN)&amp;nbsp;&lt;/strong&gt;- very similar to the Proxy server in that it keeps a local copy of the content, but you have to factor that into your web page design/HTML.&amp;nbsp; I&amp;#39;m not a fan from an easy of manageability standpoint, but it would match the proxy server in the performance increase you would see.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Hardware Compression -&lt;/strong&gt;&amp;nbsp;By deploying devices on your network edges, you can&amp;nbsp;compress the WAN traffic.&amp;nbsp;&amp;nbsp;This&amp;nbsp;tends&amp;nbsp;to be a very costly&amp;nbsp;solution and requires a lot of testing.&lt;strong&gt;&amp;nbsp; In larger organizations, good luck with getting the network guys to mess with anything sitting next to the routers!&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;F5 Load balancer &lt;/strong&gt;- an F5 can act like a proxy server by caching files, but typcially the F5 sites in front of the web servers on the Farm side of the network.&amp;nbsp; It is very cost prohibative to have an F5 in each data center in each geo location acting as a proxy server.&amp;nbsp; That being said, it can still site on the Farm side and cache the CSS, Images and Javascript.&amp;nbsp; It still is exposed to the latency of your network, but the files will be in memory and be served up faster to the clients because they won&amp;#39;t have to be fetched from the web server file system or content database.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Web Server &lt;/strong&gt;- You can have the web server cache HTML from the execution of the ASPX pages.&amp;nbsp; This does NOT&amp;nbsp;help with the latency issues, but it does help with the actual execution performance.&amp;nbsp; As we will see in the next blog post, &lt;strong&gt;Object Caching KILLS SharePoint 2010 so you have to be careful where you implement it.&amp;nbsp; &lt;/strong&gt;You can also implement Blob caching at the web server level.&amp;nbsp; This is very beneficial for publishing sites as it will keep SharePoitn from hitting the content database every time to load images, CSS and Javascript.&lt;/p&gt;&lt;p&gt;In the end, we were able to increase the visible and technical user performance for Eurpoean users by over 30%.&amp;nbsp; They have made alot of comments of how much faster it is, even if their are weird quirks with the sites, they are still amazed at how fast it is!&amp;nbsp; Chalk one up for the CJG-mister!&lt;/p&gt;&lt;p&gt;Enjoy!&lt;br /&gt;Chris&lt;/p&gt;&lt;p&gt;See the next blog post in this series &lt;a href="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/07/29/Object-Caching-in-SharePoint-2010-_2D00_-It-doesn_2700_t-work_2C00_-err-it-does_2E002E002E00_.aspx" target="_blank"&gt;HERE&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=369" width="1" height="1"&gt;</description><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category></item><item><title>Rapid Solution Deployment - SharePoint 2010</title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/07/29/Rapid-Solution-Deployment-_2D00_-SharePoint-2010.aspx</link><pubDate>Fri, 29 Jul 2011 19:32:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:367</guid><dc:creator>cjg</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Blog #5&amp;nbsp;in How I Successfully Upgraded&amp;nbsp;eBay to SharePoint 2010 - &lt;a href="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/07/21/Upgrading-to-SharePoint-2010-_2D00_-Excel-And-InfoPath-Forms-.aspx" target="_blank"&gt;&lt;font color="#555555"&gt;See Previous Blog&amp;nbsp;In Series&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;As part of the eBay upgrade, we had several code changes that had to be made and tested.&amp;nbsp; This included Solution Deployment and all its glory.&amp;nbsp; One of the things I really got tired of doing was going into Central Adminsitration and undeploying solutions.&amp;nbsp; It is a very painful process.&amp;nbsp; You may ask, why didn&amp;#39;t you do it through Visual Studio...yeah right...it errors out half the time and never really gives you a great message on how to resolve it.&amp;nbsp; Therefore, I wrote a script for that!&amp;nbsp; I&amp;#39;m going to be posting several of the scripts we utilized to very common processes during the upgrade.&amp;nbsp; Here is the script that we built to deploy the solutions:&lt;/p&gt;&lt;p&gt;&lt;em&gt;$minutes = $args[0]&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;if (-not $minutes)&lt;br /&gt;{&lt;br /&gt;$minutes = 15&lt;br /&gt;}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$di = new-object system.io.directoryinfo(&amp;quot;c:\WSPDirectory&amp;quot;)&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;foreach ($fi in $di.getfiles(&amp;quot;*.wsp&amp;quot;))&lt;br /&gt;{&lt;br /&gt;$date = get-date&lt;br /&gt;$date = $date.addminutes($minutes*-1)&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;if ($date -lt $fi.lastwritetime)&lt;br /&gt;{&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$fi.name&lt;br /&gt;$sol = $null&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;try&lt;br /&gt;{&lt;br /&gt;$sol = get-spsolution $fi.name&amp;nbsp; -erroraction silentlycontinue&lt;br /&gt;}&lt;br /&gt;catch{}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;if ($sol)&lt;br /&gt;{&lt;br /&gt;&amp;quot;Retracting $fi&amp;quot;&lt;br /&gt;uninstall-spsolution $fi.name -confirm:$false -allwebapplications -erroraction silentlycontinue&lt;br /&gt;uninstall-spsolution $fi.name -confirm:$false -erroraction silentlycontinue&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;while($sol.jobexists -eq $true)&lt;br /&gt;{&lt;br /&gt;start-sleep 3&lt;br /&gt;$sol.jobstatus&lt;br /&gt;$sol = get-spsolution $fi.name&lt;br /&gt;}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&amp;quot;Deleting $fi&amp;quot;&lt;br /&gt;$sol.delete()&lt;br /&gt;}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&amp;quot;Adding $fi&amp;quot;&lt;br /&gt;add-spsolution $fi.fullname&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$sol = get-spsolution $fi.name&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&amp;quot;Installing $fi&amp;quot;&lt;br /&gt;install-spsolution $fi.name -allwebapplications -gacdeployment -erroraction silentlycontinue -force&lt;br /&gt;install-spsolution $fi.name -gacdeployment -erroraction silentlycontinue -force&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;while($sol.jobexists -eq $true)&lt;br /&gt;{&lt;br /&gt;start-sleep 3&lt;br /&gt;$sol.jobstatus&lt;br /&gt;$sol = get-spsolution $fi.name&lt;br /&gt;}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&amp;quot;Deployed $fi&amp;quot;&lt;br /&gt;}&lt;br /&gt;}&lt;/em&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Note that one thing that can be added to this script is an interrogation of the solution ID.&amp;nbsp; This is better&amp;nbsp;than going off the name of the solution (which actually changes in production deployment using YYYY-MM-DD notation) and this script would not work for production.&amp;nbsp; Only in Development and QA was this handy.&lt;/p&gt;&lt;p&gt;Enjoy!&lt;br /&gt;Chris&lt;/p&gt;&lt;p&gt;See the next blog post in this series &lt;a href="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/07/29/Increasing-SharePoint-Performance-_2D00_-CSS_2C00_-Javascript-and-Pictures.aspx" target="_blank"&gt;HERE&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=367" width="1" height="1"&gt;</description><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/solution+deployment/default.aspx">solution deployment</category></item><item><title>Upgrading to SharePoint 2010 - Excel Workbooks And InfoPath Forms With Data Connections</title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/07/21/Upgrading-to-SharePoint-2010-_2D00_-Excel-And-InfoPath-Forms-.aspx</link><pubDate>Thu, 21 Jul 2011 22:34:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:359</guid><dc:creator>cjg</dc:creator><slash:comments>3</slash:comments><description>&lt;p&gt;Blog #4&amp;nbsp;in How I Successfully Upgraded&amp;nbsp;eBay to SharePoint 2010 - &lt;a href="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/07/21/Upgrading-SharePoint-2010-_2D00_-Changing-Your-Host-Headers-_2D00_-What-It-Means-To-Your-Consultant.aspx" target="_blank"&gt;See Previous Blog&amp;nbsp;In Series&lt;/a&gt;&lt;/p&gt;&lt;p&gt;So you decided to move your content databases around eh?&amp;nbsp; The urls for the site collections and webs are different?&amp;nbsp; Did you ever think about all those lonely lost users that created InfoPath Forms and&amp;nbsp;Excel Workbooks with Data Connections to lists?&amp;nbsp;&amp;nbsp; Hmm...probably not!&lt;/p&gt;&lt;p&gt;So what would be the steps to start this massive endeavour?&amp;nbsp; Well, the first would be to identify all the Excel and InfoPath workbooks in your farm, then you should download all of them, check if they have a data connection, then update them if they do.&amp;nbsp; Wha?&amp;nbsp; What if you have 1000s of them?&amp;nbsp; Damn...you will spend months doing that...good luck!&lt;/p&gt;&lt;p&gt;Wait...Microsoft built us a commandlet for it.&amp;nbsp; It is called &amp;quot;Update-SPInfoPathUserFileUrl&amp;quot;.&amp;nbsp; What does it do you ask?&amp;nbsp; Well, it will iterate through all the infopath forms and data connection libraries in your farm and update similar to the Url Updater I talked about in the previous post.&amp;nbsp; The only problem with this commandlet...&lt;strong&gt;IT DOESN&amp;quot;T WORK!&amp;nbsp; Yes, you heard it right, it doesn&amp;#39;t work.&amp;nbsp; &lt;/strong&gt;After serveral calls with the product support team, they finally conceded to us this fact.&amp;nbsp; What is wrong with it you ask, here&amp;#39;s a run down:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;If the data connection library has anything else other than an ODC file, it will fail&lt;/li&gt;&lt;li&gt;If the ODC file has a CDATA tag in it (or is not a standard everyday XML file), the tool fails when it tries to create an XMLDocument of the file&lt;/li&gt;&lt;li&gt;For no reason at all, it won&amp;#39;t update all the files&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;They submitted some internal bug requests and told us they would try to get us a hotfix (but it would take several weeks).&amp;nbsp; Unfortunately, that didn&amp;#39;t fly very well with us as we had to do the upgrade in two weeks!&amp;nbsp; So, I wrote our own tool to do it programmatically!&amp;nbsp; I&amp;#39;ll summarize the steps:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Find all the InfoPath and Data Connection files in the Farm (across all content databases)&lt;/li&gt;&lt;li&gt;Run the tool passing in the same input file of replacement URLs&lt;/li&gt;&lt;li&gt;Update the InfoPath Files (which are CAB files by the way) in place in their respective libraries&lt;/li&gt;&lt;li&gt;Update the Data Connection (ODC) files, which are simply XML in place&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;So finding the files is the easy part, here&amp;#39;s the script:&lt;/p&gt;&lt;p&gt;&lt;em&gt;#export all aspx files to temp directory&lt;br /&gt;$cdbs = get-spcontentdatabase&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$count=0&lt;br /&gt;foreach($cdb in $cdbs)&lt;br /&gt;{&lt;br /&gt;&amp;quot;Exporting file list from &amp;quot; + $cdb.Name&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$conn = new-object system.data.sqlclient.sqlconnection $cdb.legacydatabaseconnectionstring.replace(&amp;quot;Timeout=15&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;$conn.open()&lt;br /&gt;$cmd = $conn.CreateCommand()&lt;br /&gt;$cmd.CommandTimeout = 4000&lt;br /&gt;$cmd.commandtext = &amp;quot;select DirName, leafname from AllDocs where extensionforfile in (&amp;#39;xsn&amp;#39;, &amp;#39;odc&amp;#39;)&amp;quot;;&lt;br /&gt;$reader = $cmd.executereader()&lt;br /&gt;$i = 0&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;while ($reader.read())&lt;br /&gt;{&lt;br /&gt;$line = $cdb.WebApplication.Url + $reader[&amp;quot;dirname&amp;quot;] + &amp;quot;/&amp;quot; + $reader[&amp;quot;leafname&amp;quot;]&lt;br /&gt;add-content &amp;quot;InfoPathFilesToUpDate.txt&amp;quot; $line&lt;br /&gt;$i++&lt;br /&gt;}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;$reader.CLose()&lt;br /&gt;$conn.CLose()&lt;br /&gt;}&lt;/em&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Once you have the list of the files you need to update, the rest is easy....relatively speaking &lt;img src="http://blogs.architectingconnectedsystems.com/emoticons/emotion-2.gif" alt="Big Smile" /&gt;.&amp;nbsp; So what&amp;#39;s the next step?&amp;nbsp; You gotta loop through all these files and determine if they have the old URLs in them.&amp;nbsp; For an xml file, that is pretty easy.&amp;nbsp; It&amp;#39;s just a text file, but most ODC files are not valid XML files...YUK.&amp;nbsp; But that&amp;#39;s beside the point, its easy to replace the ODC file connection info, just look for the &amp;lt;odc:Connection&amp;gt; element.&amp;nbsp; Inside of it will be a connection string with the url you are looking for.&lt;/p&gt;&lt;p&gt;Now on to the InfoPath files.&amp;nbsp; How does one update an InfoPath file without opening it in InfoPath and changing the Data Connection?&amp;nbsp; You could download it and use the &amp;quot;extract.exe&amp;quot; tool to output the file contents, then rebuild it using &amp;quot;makecab.exe&amp;quot;, but wow, that is just too much work.&amp;nbsp; And yes, I tried it, and it sucked.&amp;nbsp; Basically Windows still has the ability to have a folder to be &amp;quot;tagged&amp;quot;.&amp;nbsp; Did you ever have that problem with hackers hitting your FTP server and &amp;quot;tagging&amp;quot; it?&amp;nbsp; You couldn&amp;#39;t delete their tag without wipping the entire drive.&amp;nbsp; Guess what...when extracting certain InfoPath files, you can &amp;quot;tag&amp;quot; your directory.&amp;nbsp; When making a scrip&amp;nbsp;with a &amp;quot;delete all&amp;quot; files in a folder command errors out more RED than you ever care to see.&amp;nbsp; So how do you successfully update an InfoPath CAB file?&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Use the awesome Reflector&amp;nbsp;tool to get the CabinetExtractor class out of the SharePoint dlls for the CommandLet.&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;This is an entire set of classes specifcally designed to update CAB files in memory. PERFECT!&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Once I had the code working, I simply passed in the list of files, checked the manifest.xml file in the InfoPath CAB package for any offending URLs and if they were found, updated the file and then streamed it back into the CAB file.&amp;nbsp; Then I just upload to the library.&amp;nbsp; &lt;strong&gt;Everything worked like a charm!&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;NOTE:&amp;nbsp; Site and List templates are CAB files...internally, they have a version called &amp;quot;3&amp;quot; in them.&amp;nbsp; Magically, if you change this value to &amp;quot;4&amp;quot;, a majority of them will work in 2010...HINT HINT...&lt;/p&gt;&lt;p&gt;Enjoy,&lt;br /&gt;Chris&lt;/p&gt;&lt;p&gt;See next blog post in this series &lt;a href="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/07/21/Upgrading-to-SharePoint-2010-_2D00_-Excel-And-InfoPath-Forms-.aspx" target="_blank"&gt;here&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=359" width="1" height="1"&gt;</description><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/upgrade/default.aspx">upgrade</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/cab/default.aspx">cab</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/infopath/default.aspx">infopath</category></item><item><title>Upgrading SharePoint 2010 - Changing Your Host Headers - What It Means To Your Consultant</title><link>http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/07/21/Upgrading-SharePoint-2010-_2D00_-Changing-Your-Host-Headers-_2D00_-What-It-Means-To-Your-Consultant.aspx</link><pubDate>Thu, 21 Jul 2011 20:51:00 GMT</pubDate><guid isPermaLink="false">4aac0a7f-2495-46e5-9eb3-fa68b32063a9:356</guid><dc:creator>cjg</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;Part 3 of How I Successfully Upgraded eBay - &lt;a href="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/07/21/Upgrading-UserProfiles-to-SharePoint-2010-Non-Database-Attach.aspx" target="_blank"&gt;Previous Blog Post&lt;/a&gt;&lt;/p&gt;&lt;p&gt;So what does it mean for you to &amp;quot;retire&amp;quot; an older web application for branding purposes?&amp;nbsp; It is a simple change in Central Administration, but a nasty proposition when it comes to content in the site and most consultants will take the easy way out and say, no you can&amp;#39;t do that (because they know how much work it is and don&amp;#39;t really know what will break).&amp;nbsp; What am I talking about?&amp;nbsp; Let me give you an example:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;In 2007, the web application host header was &lt;a href="http://abc.contoso.com/"&gt;http://abc.contoso.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;In 2010, you want it to be &lt;a href="http://xyz.contoso.com/"&gt;http://xyz.contoso.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Moving&amp;nbsp;a content database from one web applicaiton to another with a different name (for service delivery reasons)&lt;/li&gt;&lt;li&gt;Moving a site collection from one content database to another content database in a different web application&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Again, it is easy to do via Central Administration.&amp;nbsp; It is easy to do the DNS and add an AAM, but did you think about content?&amp;nbsp; Huh, what about the content...here&amp;#39;s what you &lt;strong&gt;didn&amp;#39;t&lt;/strong&gt; think about:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Non relative links used in&amp;nbsp;3rd Party applications (Corasworks)&amp;nbsp;&lt;/li&gt;&lt;li&gt;ASPX pages with non-relative links&lt;/li&gt;&lt;li&gt;Content Editor web parts with non-relative links&lt;/li&gt;&lt;li&gt;Update custom web part properties with non-relative links&lt;/li&gt;&lt;li&gt;Navigation nodes with existing non-relative links&lt;/li&gt;&lt;li&gt;Excel and InfoPath with Data Connections&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The problem is non-relative links.&amp;nbsp; It was a big problem in 2007 and in most vendors products that they didn&amp;#39;t check the URL of where the code was running and convert the saved content into relative links!&amp;nbsp; This is a major pain in the ass!&amp;nbsp; Now you will see in 2010 and in most vendor products, they have learned a VERY valuable lesson.&amp;nbsp; &lt;strong&gt;ALWAYS USE RELATIVE LINKS!&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;How does one upgrade 10s of 1000s of pages, 1000s of content editor web parts and navigation nodes with the new URLs?&amp;nbsp; You build a tool of course!&amp;nbsp; The tool is simple in its requirements:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Take an input file of old url to new url&amp;nbsp;&lt;/li&gt;&lt;li&gt;Update all aspx pages with the new links - CHECK&lt;/li&gt;&lt;li&gt;Update Content Editor web parts with the new links - CHECK&lt;/li&gt;&lt;li&gt;Update custom web parts with links - CHECK&lt;/li&gt;&lt;li&gt;Update Navigation nodes with new links - CHECK&lt;/li&gt;&lt;li&gt;Update....wait...how to you update Excel and InfoPath? - OH MY...(the topic of the next blog post)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The tool is easy to build, but add in 1000s of sites, 1000s of pages and web parts...you have&amp;nbsp;some problems:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;It will take too long for it to update all your resources before the upgrade is finished.&amp;nbsp; So what do you do to meet your upgrade window?&lt;/li&gt;&lt;li&gt;You have external links that still point to these older urls&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The problem has a simple solution.&amp;nbsp; HttpModules.&amp;nbsp; All you have to do is intercept the HTTP request and redirect to the proper place.&amp;nbsp; How do you know where to redirect them?&amp;nbsp; Same as the tool, use the input file for the tool.&amp;nbsp; Create a SharePoint list that the HttpModule pulls from that will redirect the request to the proper place.&amp;nbsp; Here is a coule of examples:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Redirect &lt;a href="http://abc/"&gt;http://abc&lt;/a&gt; to &lt;a href="http://xyz/"&gt;http://xyz&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Redirect &lt;a href="http://abc/HelloWorld"&gt;http://abc/HelloWorld&lt;/a&gt; to &lt;a href="http://def/HelloWorld"&gt;http://def/HelloWorld&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;There is an issue here.&amp;nbsp; You would have two entries in the configuration list:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://abc-%3ehttp//xyz"&gt;http://abc-&amp;gt;http://xyz&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://abx/HelloWorld-%3Ehttp://def/HelloWorld"&gt;http://abx/HelloWorld-&amp;gt;http://def/HelloWorld&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In this case, the order of replacement matters.&amp;nbsp;If the first entry is applied, they will incorrectly get redirected to &lt;a href="http://xyz/HelloWorld"&gt;http://xyz/HelloWorld&lt;/a&gt;.&amp;nbsp; This is not the desired outcome.&amp;nbsp; You must redirect in order of most specific first, then to the most generic.&amp;nbsp; You must also be careful with generic entries.&amp;nbsp; Suppose you have two web applications:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://abc/"&gt;http://abc&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://abcdef/"&gt;http://abcdef&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If you have the following in your configuration list:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://abc-%3ehttp//xyz"&gt;http://abc-&amp;gt;http://xyz&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;You can expect that the requests to &lt;a href="http://abc/"&gt;http://abc&lt;/a&gt; will be redirected properly, but the &lt;a href="http://abcdef/"&gt;http://abcdef&lt;/a&gt;, will also get redirected and not the way you want.&amp;nbsp; Also in the case of &lt;a href="http://abc-%3ehttp//abcdef"&gt;http://abc-&amp;gt;http://abcdef&lt;/a&gt;, you would be in a continuous loop of adding &lt;a href="http://abc/"&gt;http://abc&lt;/a&gt; to the redirect and of course, you will eventually overrun the address line in the browser!&lt;/p&gt;&lt;p&gt;Enjoy,&lt;br /&gt;Chris&lt;/p&gt;&lt;p&gt;&lt;a href="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/2011/07/21/Upgrading-to-SharePoint-2010-_2D00_-Excel-And-InfoPath-Forms-.aspx" target="_blank"&gt;See next blog post in this series&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.architectingconnectedsystems.com/aggbug.aspx?PostID=356" width="1" height="1"&gt;</description><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/upgrade/default.aspx">upgrade</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/ebay/default.aspx">ebay</category><category domain="http://blogs.architectingconnectedsystems.com/blogs/cjg/archive/tags/host+headers/default.aspx">host headers</category></item></channel></rss>
