<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8931224549897564274</id><updated>2012-02-01T12:20:14.400-08:00</updated><category term='install'/><category term='load weights'/><category term='Visual Studio'/><category term='Novell'/><category term='XSL'/><category term='SPWebConfigModification'/><category term='Search Core Results'/><category term='Powershell'/><category term='Governance'/><category term='SharePoint Search'/><category term='Column Validation'/><category term='My Site'/><category term='Permissions'/><category term='updates'/><category term='F5'/><category term='Usage Blob'/><category term='Search'/><category term='Feature Staple'/><category term='stsadm'/><category term='LDAP'/><category term='eDirectory'/><category term='Ribbon'/><category term='t-sql'/><category term='Acknowledgement'/><category term='userprofile'/><category term='Crawl Property'/><category term='CustomAction'/><category term='Disclaimer'/><category term='microsoft access'/><category term='load balancing'/><category term='Database'/><category term='Web Part'/><category term='Sharepoint'/><category term='httpmodule'/><category term='Branding'/><category term='SharePoint Server 2010'/><category term='vbscript'/><category term='NetBIOS'/><category term='Custom Advanced Search'/><category term='Managed Property'/><category term='mdb'/><category term='web.config'/><title type='text'>SharePoint Multiple Personality Disorder</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>28</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-8635180582068051698</id><published>2012-01-16T09:02:00.001-08:00</published><updated>2012-01-16T09:21:19.939-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ribbon'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2010'/><title type='text'>Add “Change Item Order” to a Custom Link List</title><content type='html'>&lt;p&gt;I built a SharePoint 2010 Visual Studio solution which included a &lt;strong&gt;custom list definition&lt;/strong&gt; based on a &lt;strong&gt;custom content type&lt;/strong&gt; inherited from the out-of-the-box &lt;strong&gt;Links content type&lt;/strong&gt;.&amp;#160; The out-of-the-box links list contains a “Change Item Order” button in it’s ribbon bar which I needed for my solution (see image below).&amp;#160; I thought I’d get in my custom list by inheriting from the Links content type but that didn’t happen.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-GSskp7jYTTU/TxRYKdQu7NI/AAAAAAAAAFA/LGNZiH6cFlc/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-zEpFx_qEz2o/TxRYKlG9jmI/AAAAAAAAAFI/Ti_pqf0zZEA/image_thumb%25255B1%25255D.png?imgmax=800" width="358" height="112" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So I had to get the Change Item order back in my ribbon.&amp;#160; Looking deeper I found that there’s a hidden page called &lt;strong&gt;reorder.aspx &lt;/strong&gt;in &lt;strong&gt;_layouts &lt;/strong&gt;which, with the combination of your list GUID, brings you to a page where you can reorder items.&amp;#160; Try it – go into your list settings and change the page part of the URL from &lt;strong&gt;listedit.aspx&lt;/strong&gt; to &lt;strong&gt;reorder.aspx (e.g. &lt;a href="http://sitename/_layouts/reorder.aspx?List=[GUID"&gt;http://sitename/_layouts/reorder.aspx?List=[GUID&lt;/a&gt;]).&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The links list appears to be the only list where this reordering impacts a list view.&amp;#160; You can reorder other lists or libraries using the _&lt;strong&gt;layouts/reorder.aspx?List=[GUID]&lt;/strong&gt; page but it does nothing to change your list views.&amp;#160; Comparing the Links list view settings to other list view settings, you’ll see that you have an option in the Links list to &lt;strong&gt;“Allow users to order items” &lt;/strong&gt;(screenshot below) which you don’t get with other types of lists.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-8e0BJjc-JrE/TxRYK2V70qI/AAAAAAAAAFQ/a6_1Ao8h_Ns/s1600-h/image%25255B7%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-uktRcYeu3e4/TxRYLOHVvQI/AAAAAAAAAFY/KHUhXD-JWf4/image_thumb%25255B3%25255D.png?imgmax=800" width="477" height="85" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;However, the reorder values do stick when you go back to this reorder page for any type of list so in theory you could use this in a CAML query using a hidden field named&lt;strong&gt; “order”&lt;/strong&gt; (e.g. string qry = &amp;quot;&amp;lt;OrderBy&amp;gt;&amp;lt;FieldRef Name='Order' /&amp;gt;&amp;lt;/OrderBy&amp;gt;&amp;quot;;) if you were to build a custom content query webpart which needed a link to a sorting interface.&lt;/p&gt;  &lt;p&gt;But for my solution, I’m inheriting from the links list content type so the sort works, I just don’t get the option in the ribbon bar.&amp;#160; Chris O’Brien gives a good overview of customizing the ribbon here (&lt;a href="http://www.sharepointnutsandbolts.com/2010/01/adding-ribbon-items-into-existing.html"&gt;Adding ribbon items into existing tabs/groups (ribbon customization part 2)&lt;/a&gt;.&amp;#160; With Chris’ guide and viewing the source on an OOB Links list view page, I was able to determine that I could get the XML I needed to display the “Change Item Order” in my ribbon by opening the CMDUI.XML and grab the button element XML for &lt;strong&gt;Ribbon.ListItem.Actions.ChangeItemOrder&lt;/strong&gt; (below).&lt;/p&gt;  &lt;pre id="codeSnippet" class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt;&lt;br /&gt;  &lt;span class="attr"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Ribbon.ListItem.Actions.ChangeItemOrder&amp;quot;&lt;/span&gt;&lt;br /&gt;  &lt;span class="attr"&gt;Sequence&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;20&amp;quot;&lt;/span&gt;&lt;br /&gt;  &lt;span class="attr"&gt;Command&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ChangeLinkOrder&amp;quot;&lt;/span&gt;&lt;br /&gt;  &lt;span class="attr"&gt;Image16by16&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;/_layouts/$Resources:core,Language;/images/formatmap16x16.png&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Image16by16Top&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;-192&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Image16by16Left&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;-144&amp;quot;&lt;/span&gt;&lt;br /&gt;  &lt;span class="attr"&gt;Image32by32&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;/_layouts/$Resources:core,Language;/images/formatmap32x32.png&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Image32by32Top&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;-192&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Image32by32Left&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;-288&amp;quot;&lt;/span&gt;&lt;br /&gt;  &lt;span class="attr"&gt;LabelText&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;$Resources:core,cui_ButChangeItemOrder;&amp;quot;&lt;/span&gt;&lt;br /&gt;  &lt;span class="attr"&gt;ToolTipTitle&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;$Resources:core,cui_ButChangeItemOrder;&amp;quot;&lt;/span&gt;&lt;br /&gt;  &lt;span class="attr"&gt;ToolTipDescription&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;$Resources:core,cui_STT_ButChangeItemOrder;&amp;quot;&lt;/span&gt;&lt;br /&gt;  &lt;span class="attr"&gt;TemplateAlias&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;o1&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Here’s the final XML I used for the element I added to my visual studio solution to get the “Change Item Order” button to appear in my custom link list.&amp;#160; Highlighted in below example: &lt;br /&gt;  &lt;br /&gt;&lt;strong&gt;-- Registrationid=”30099”&lt;/strong&gt; is my custom list definition's &lt;strong&gt;Type &lt;/strong&gt;value. &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;strong&gt;-- Location&lt;/strong&gt;&lt;strong&gt;=&amp;quot;Ribbon.ListItem.Actions.Controls._children &lt;/strong&gt;is the location where I want to place my button in the ribbon.&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;-- I changed the &lt;strong&gt;Id&lt;/strong&gt; for the button from &lt;strong&gt;Ribbon.ListItem.Actions.ChangeItemOrder&lt;/strong&gt; to &lt;strong&gt;Ribbon.ListItem.Actions.RibbonSortOrderButton&lt;/strong&gt; (when viewing source on initial deployment of my custom list, I saw ChangeItemOrder was being trimmed by an OOB JavaScript function so by changing this &lt;strong&gt;Id&lt;/strong&gt; I’m ensuring the OOB JavaScript isn’t trimming it) &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;strong&gt;-- Sequence=&amp;quot;25&amp;quot; &lt;/strong&gt;is my custom sequence for the order in which this button appears (see Chris O’Brien’s &lt;a href="http://www.sharepointnutsandbolts.com/2010/01/adding-ribbon-items-into-existing.html" target="_blank"&gt;blog&lt;/a&gt; for more info). &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;strong&gt;-- Command=&amp;quot;ChangeLinkOrder&amp;quot;&lt;/strong&gt; is the OOB command which means I don’t have to add a CommandUIHandler.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Elements&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.microsoft.com/sharepoint/&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class="rem"&gt;&amp;lt;!--Change Item order Ribbon--&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CustomAction&lt;/span&gt;&lt;br /&gt;    &lt;span class="attr"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;XYZ.Webpart.Links.XYZLinksListDefinition.RibbonSortOrderButton&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span class="attr"&gt;Location&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;CommandUI.Ribbon&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;font style="background-color: #ffff00"&gt;&lt;span class="attr"&gt;RegistrationId&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;30099&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;/font&gt;    &lt;span class="attr"&gt;RegistrationType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;List&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span class="attr"&gt;Title&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;List View Ribbon Customization&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CommandUIExtension&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CommandUIDefinitions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CommandUIDefinition&lt;/span&gt; &lt;span class="attr"&gt;&lt;font style="background-color: #ffff00"&gt;Location&lt;/font&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;font style="background-color: #ffff00"&gt;=&amp;quot;Ribbon.ListItem.Actions.Controls._children&lt;/font&gt;&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt;&lt;br /&gt;            &lt;span class="attr"&gt;&lt;font style="background-color: #ffff00"&gt;Id&lt;/font&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;font style="background-color: #ffff00"&gt;=&amp;quot;&lt;/font&gt;&lt;font style="background-color: #ffff00"&gt;Ribbon.ListItem.Actions.RibbonSortOrderButton&lt;/font&gt;&amp;quot;&lt;/span&gt;&lt;br /&gt;            &lt;font style="background-color: #ffff00"&gt;&lt;span class="attr"&gt;Sequence&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;25&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;/font&gt;            &lt;font style="background-color: #ffff00"&gt;&lt;span class="attr"&gt;Command&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ChangeLinkOrder&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;/font&gt;            &lt;span class="attr"&gt;Image16by16&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;/_layouts/$Resources:core,Language;/images/formatmap16x16.png&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Image16by16Top&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;-192&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Image16by16Left&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;-144&amp;quot;&lt;/span&gt;&lt;br /&gt;            &lt;span class="attr"&gt;Image32by32&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;/_layouts/$Resources:core,Language;/images/formatmap32x32.png&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Image32by32Top&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;-192&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Image32by32Left&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;-288&amp;quot;&lt;/span&gt;&lt;br /&gt;            &lt;span class="attr"&gt;LabelText&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;$Resources:core,cui_ButChangeItemOrder;&amp;quot;&lt;/span&gt;&lt;br /&gt;            &lt;span class="attr"&gt;ToolTipTitle&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;$Resources:core,cui_ButChangeItemOrder;&amp;quot;&lt;/span&gt;&lt;br /&gt;            &lt;span class="attr"&gt;ToolTipDescription&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;$Resources:core,cui_STT_ButChangeItemOrder;&amp;quot;&lt;/span&gt;&lt;br /&gt;            &lt;span class="attr"&gt;TemplateAlias&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;o1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;CommandUIDefinition&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;CommandUIDefinitions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;CommandUIExtension&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;CustomAction&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Elements&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-8635180582068051698?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/8635180582068051698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2012/01/add-change-item-order-to-custom-link.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/8635180582068051698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/8635180582068051698'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2012/01/add-change-item-order-to-custom-link.html' title='Add “Change Item Order” to a Custom Link List'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-zEpFx_qEz2o/TxRYKlG9jmI/AAAAAAAAAFI/Ti_pqf0zZEA/s72-c/image_thumb%25255B1%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-8075318674331424003</id><published>2012-01-06T14:00:00.001-08:00</published><updated>2012-01-06T14:04:15.349-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Column Validation'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2010'/><title type='text'>SharePoint 2010 Validate Special Characters</title><content type='html'>&lt;p&gt;I have a colleague who re-built my custom list based site provisioning solution using a &lt;strong&gt;Visual Studio Workflow&lt;/strong&gt; where I created it using custom &lt;strong&gt;SharePoint Designer Workflow actions&lt;/strong&gt;.&amp;#160; The solution uses the value of what an end-user puts in the “Title” field of the form to generate a URL.&amp;#160; Because the URL can’t contain &lt;strong&gt;Special Characters&lt;/strong&gt; (i.e. ~!@#$%^&amp;amp;*()-+=[]';,./{}\&amp;quot;:&amp;lt;&amp;gt;?&amp;quot;), I have actions which validate the column in my solution, using regular expressions, where he didn’t add that to his VS workflow redo.&lt;/p&gt;  &lt;p&gt;My colleague left the project recently and not soon after I was alerted about an issue where the site provisioning failed for a user who put a colon and a comma in their Title – to workaround, we simply we had the user resubmit the form with instruction not to use the colon and comma in the Title field but I figured I could fix a reoccurrence by adding the validation on submission.&amp;#160; I didn’t want to jump into visual studio to update his form and workflow and then redeploy the whole thing so I thought “Simple solution…I’ll just add validation to the&lt;strong&gt; Title&lt;/strong&gt; column in the list settings to check for special characters.”&amp;#160; I thought I would have found the formula out there already but had no luck so I’m putting it out now.&lt;/p&gt;  &lt;p&gt;So here’s a formula to check for special characters in a text column which you can add via List Settings to the &lt;strong&gt;Validation Settings &lt;/strong&gt;(Figure 1) for the entire list or just to the column’s &lt;strong&gt;Column Validation &lt;/strong&gt;(Figure 2)&lt;/p&gt;  &lt;p&gt;=AND(IF(ISERROR(FIND(&amp;quot;,&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;&amp;amp;&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;!&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;@&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;~&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;#&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;$&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;%&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;^&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;*&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;(&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;)&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;-&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;=&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;+&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;:&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;;&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;&amp;lt;&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;&amp;gt;&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;?&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;'&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;{&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;}&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;[&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;]&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;.&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;/&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&amp;quot;\&amp;quot;,Title)),TRUE),IF(ISERROR(FIND(&lt;font style="background-color: #ffff00"&gt;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;/font&gt;,Title)),TRUE))&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt;&amp;#160; To validate&lt;strong&gt; double quotes&lt;/strong&gt;, you need to enter &lt;strong&gt;double double quotes&lt;/strong&gt; in your formula (highlighted above).&amp;#160; This sample formula is validating a single word field (i.e., Title) so you don’t need to enclose the field name in brackets ([ ])&amp;#160; where if the field name contains two words you do need the brackets (e.g. [Project Name]).&amp;#160; Also, in SharePoint 2010, the validation formulas can be very similar to data validation formulas used in the past for Microsoft Excel so if your struggling to find a decent sample for a formula search for Microsoft Excel formula examples.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;List Settings Validation Options Screenshots:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-g3IRxcy_z8Y/Twdq5IzPQrI/AAAAAAAAAEg/oLIwDOjxxQw/s1600-h/image%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-rhOX4BHVDYc/Twdq5IQuXUI/AAAAAAAAAEo/0s6j6eplReY/image_thumb.png?imgmax=800" width="244" height="133" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Figure 1 (For overall list – using this method, the validation message appears at top of list item edit form upon failure).&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-K8M_34T3Z4A/Twdq5dL-pfI/AAAAAAAAAEw/lgjeMYz6glA/s1600-h/image%25255B6%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-dHd2lVgFXho/Twdq5leqctI/AAAAAAAAAE4/G_5_RsHHPVo/image_thumb%25255B2%25255D.png?imgmax=800" width="427" height="170" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Figure 2 (For only the column – using this method, validation message appears below the field in the list item edit form upon failure).&lt;/em&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-8075318674331424003?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/8075318674331424003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2012/01/sharepoint-2010-validate-special_06.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/8075318674331424003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/8075318674331424003'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2012/01/sharepoint-2010-validate-special_06.html' title='SharePoint 2010 Validate Special Characters'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-rhOX4BHVDYc/Twdq5IQuXUI/AAAAAAAAAEo/0s6j6eplReY/s72-c/image_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-4770894862496593526</id><published>2011-12-30T14:53:00.001-08:00</published><updated>2011-12-30T14:54:47.408-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Search'/><category scheme='http://www.blogger.com/atom/ns#' term='Search Core Results'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2010'/><title type='text'>SharePoint 2010 Search Scope to Aggregate Content</title><content type='html'>&lt;p&gt;For scalability in SharePoint, I’m in favor of provisioning site collections instead of sub sites.&amp;#160; However, the challenge with Site Collections is that they are isolated from each other so you need to create custom solutions to aggregate content from across site collections.&amp;#160; Using SharePoint &lt;strong&gt;Search Scopes&lt;/strong&gt; and the &lt;strong&gt;Search Core Results web part&lt;/strong&gt; provides a way where an administrator could create an aggregated solution.&amp;#160; I also like to use search query web parts because it takes SQL out of the query loop and by modifying the web part’s XSL you have options for formatting the way results display (SharePoint Designer helps).&lt;/p&gt;  &lt;p&gt;I had a requirement where a client wanted to display a feed of recent updates across site collections in a web part on a top level site.&amp;#160; I previously implemented a site provisioning solution for them which uses a site template – the template contains a discussion board, an images library, an announcement list, a document library, and a calendar.&amp;#160; The feed had to display similar to the My Sites Newsfeed where the feed item gives brief description of what type of content has been added or updated (e.g., A new image has been added…, A new discussion has been posted…, etc.).&lt;/p&gt;  &lt;p&gt;The first thing I did was to create a &lt;strong&gt;Search Scope&lt;/strong&gt; in the &lt;strong&gt;Search Service Application&lt;/strong&gt;.&amp;#160; Within the search scope, I added the following rules:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="641"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="67"&gt;&lt;strong&gt;Scope Rule Type&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="264"&gt;&lt;strong&gt;Web Address&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="62"&gt;&lt;strong&gt;Behavior&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="246"&gt;&lt;strong&gt;Comment&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="67"&gt;Web Address&lt;/td&gt;        &lt;td valign="top" width="264"&gt;         &lt;p&gt;&lt;a href="https://sites.xyz.com/sites"&gt;https://sites.xyz.com/sites&lt;/a&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="62"&gt;Include&lt;/td&gt;        &lt;td valign="top" width="246"&gt;Rule to only include sites under the web address (we’re using a managed path under which all the sites are provisioned – in sample “sites” is the managed path)&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;The below rules use the property &lt;strong&gt;“contentclass”.&lt;/strong&gt;&amp;#160; Contentclass is a search administration property commonly used in SharePoint search scopes.&amp;#160; More information on the ContentClass property can readily be found by doing a web search.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="698"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="67"&gt;&lt;strong&gt;Scope Rule Type&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="294"&gt;&lt;strong&gt;Property Query&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="77"&gt;&lt;strong&gt;Behavior&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="258"&gt;&lt;strong&gt;Comment&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="67"&gt;Property Query&lt;/td&gt;        &lt;td valign="top" width="294"&gt;         &lt;p&gt;&lt;a href="https://sites.xyz.com/sites"&gt;contentclass=STS_ListItem_DiscussionBoard&lt;/a&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="77"&gt;Include&lt;/td&gt;        &lt;td valign="top" width="258"&gt;This brings back all of the discussion board items&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="67"&gt;Property Query&lt;/td&gt;        &lt;td valign="top" width="294"&gt;         &lt;p&gt;&lt;a href="https://sites.xyz.com/sites"&gt;contentclass=STS_ListItem_PictureLibrary&lt;/a&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="77"&gt;Include&lt;/td&gt;        &lt;td valign="top" width="258"&gt;This brings back all of the Picture Library items&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="67"&gt;Property Query&lt;/td&gt;        &lt;td valign="top" width="294"&gt;         &lt;p&gt;&lt;a href="https://sites.xyz.com/sites"&gt;contentclass=STS_ListItem_Events&lt;/a&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="77"&gt;Include&lt;/td&gt;        &lt;td valign="top" width="258"&gt;This brings back all of the Calendar list items&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="67"&gt;Property Query&lt;/td&gt;        &lt;td valign="top" width="294"&gt;         &lt;p&gt;&lt;a href="https://sites.xyz.com/sites"&gt;contentclass=STS_ListItem_Announcements&lt;/a&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="77"&gt;Include&lt;/td&gt;        &lt;td valign="top" width="258"&gt;This brings back all of the Announcements list items&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="67"&gt;Property Query&lt;/td&gt;        &lt;td valign="top" width="294"&gt;         &lt;p&gt;&lt;a href="https://sites.xyz.com/sites"&gt;contentclass=STS_ListItem_DocumentLibrary&lt;/a&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="77"&gt;Include&lt;/td&gt;        &lt;td valign="top" width="258"&gt;This brings back all of the Document Library items&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="67"&gt;Property Query&lt;/td&gt;        &lt;td valign="top" width="294"&gt;         &lt;p&gt;&lt;a href="https://sites.xyz.com/sites"&gt;contentclass=STS_List_850&lt;/a&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="77"&gt;Exclude&lt;/td&gt;        &lt;td valign="top" width="258"&gt;The site template uses the Publishing Features which includes a “Pages” library – we don’t want results from the Pages library, just Documents, Announcements, Images, Events, and Discussion Board items&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;With this scope created, the next thing to do is to add a &lt;strong&gt;Search Core Results web part&lt;/strong&gt; to a page on your top level site and set the &lt;strong&gt;Fixed Keyword Query &lt;/strong&gt;value to use this scope.&amp;#160; With the fixed query, the results will display in the web part whenever the page loads.&amp;#160; Also set the &lt;strong&gt;Cross-Web Part query ID &lt;/strong&gt;to something other than “User Query” (in the sample below, it is set to “Query 3”).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-P6vzU4eCPgk/Tv5A9XILkDI/AAAAAAAAAEA/CUa9ep9blDU/s1600-h/image%25255B8%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-2sQFX4LtJmU/Tv5A9msWfnI/AAAAAAAAAEI/aRBP34dJw4U/image_thumb%25255B4%25255D.png?imgmax=800" width="211" height="362" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;My client also wanted the results to display in Newsfeed format.&amp;#160; To do this, I needed to switch the Search Core Results &lt;strong&gt;Display &lt;/strong&gt;properties to set sorting to &lt;strong&gt;Modified Date,&lt;/strong&gt; deselect &lt;strong&gt;Use Location Visualization&lt;/strong&gt; where I add &lt;strong&gt;contentclass &lt;/strong&gt;as a column to bring back in search results (I need this to create conditions in my XSL to determine what to display in the feed statement) and also added the column for the managed property “&lt;strong&gt;SiteTitle&lt;/strong&gt;” which I use to display the name of the site where the update occurred.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-xWtUE6M3_Ak/Tv5A94SymMI/AAAAAAAAAEQ/e28GkamCslQ/s1600-h/image%25255B16%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-JhL6i0PhPd4/Tv5A-T7IMlI/AAAAAAAAAEY/i7d_AflaZMA/image_thumb%25255B8%25255D.png?imgmax=800" width="215" height="317" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Finally, using SharePoint designer, I was able to take the raw XML search results and generate the XSLT to display the results in feed format which I added via the XSL editor in the Search Core Results Web Part (see MSDN guidance &lt;a href="http://msdn.microsoft.com/en-us/library/ee819886.aspx"&gt;here&lt;/a&gt; for customizing search results and Tobias Zimmergren has the step-by-step for SP 2007 &lt;a href="http://www.zimmergren.net/technical/moss-2007-customize-the-search-result-using-xslt-part-3-customize-using-sharepoint-designer-2007"&gt;here&lt;/a&gt; which isn’t much different in SP 2010).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-4770894862496593526?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/4770894862496593526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/12/sharepoint-2010-search-scope-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/4770894862496593526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/4770894862496593526'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/12/sharepoint-2010-search-scope-to.html' title='SharePoint 2010 Search Scope to Aggregate Content'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-2sQFX4LtJmU/Tv5A9msWfnI/AAAAAAAAAEI/aRBP34dJw4U/s72-c/image_thumb%25255B4%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-4662566145594272371</id><published>2011-12-30T13:06:00.001-08:00</published><updated>2011-12-30T13:06:24.299-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Usage Blob'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2010'/><title type='text'>SharePoint 2010 and the Usage BLOB</title><content type='html'>&lt;p&gt;I had a client who wanted to show a list of all site collections and sort them by most popular using site hits.&amp;#160; I was able to use Martin Kearn’s ShrarePoint 2010 solution on Codeplex (&lt;a href="http://spsitedirectory2010.codeplex.com/" target="_blank"&gt;here&lt;/a&gt;) to return the aggregated site collection list however Martin’s solution wasn’t grabbing site hits even though there is a method within his code that appears to do that – I confirmed that it doesn’t work.&lt;/p&gt;  &lt;p&gt;I then came across the solution in the &lt;strong&gt;SharePoint Diaries Blog&lt;/strong&gt;, in the post where Diego Bruno Galeota documents &lt;a href="http://sharepointdiaries.blogspot.com/2009/09/parsing-sharepoint-usage-blob.html" target="_blank"&gt;Parsing the SharePoint Usage BLOB&lt;/a&gt; and provides the code.&amp;#160; Site hits are collected if you have SharePoint’s Web Analytics enabled where the analytics is stored as a BLOB in the database – so to get site hits out of that BLOB, you have to parse it – which is what Diego’s code does.&amp;#160; I deployed Diego’s code and it works for SharePoint 2010.&amp;#160; However, one update I made to Diego’s code was to change the &lt;strong&gt;GetUsageBlob &lt;/strong&gt;function in the &lt;strong&gt;UsageBlob.cs&lt;/strong&gt; class to remove the &lt;strong&gt;NetworkCredential&lt;/strong&gt; property (snippet below).&amp;#160; Martin’s SharePoint directory solution is running at the farm level using elevated credentials so it works without having to hard code credentials.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:25acb281-68ac-43eb-adf3-6559da8f1a82" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;UsageBlob.cs Snippet&lt;/div&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#008000"&gt;//public static UsageBlob GetUsageBlob(string url, bool currentBlob, NetworkCredential credential)&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;static&lt;/span&gt; &lt;span style="color:#2b91af"&gt;UsageBlob&lt;/span&gt; GetUsageBlob(&lt;span style="color:#0000ff"&gt;string&lt;/span&gt; url, &lt;span style="color:#0000ff"&gt;bool&lt;/span&gt; currentBlob)&lt;/li&gt; &lt;li&gt;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;var&lt;/span&gt; uri = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Uri&lt;/span&gt;(url);            &lt;/li&gt; &lt;li&gt;    &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    ....&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Then, using Martin’s Site Directory Solution I was able to add the Site Hits to the Site Directory list with the following function:&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:6e9a0ae4-ffc1-49b0-9429-88149b512f29" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;ScanJobHelperMethods.cs Snip&lt;/div&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;int&lt;/span&gt; GetHitsCount(SPWeb webInSite)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;{&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;int&lt;/span&gt; intHits = 0;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#2b91af"&gt;GlobalMethods&lt;/span&gt; globalMethods = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;GlobalMethods&lt;/span&gt;();&lt;/li&gt; &lt;li&gt;    System.Net.&lt;span style="color:#2b91af"&gt;ServicePointManager&lt;/span&gt;.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) =&amp;gt; &lt;span style="color:#0000ff"&gt;true&lt;/span&gt;); &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;try&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    {&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; thisUrl = webInSite.Url.ToString();&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;var&lt;/span&gt; blob = &lt;span style="color:#2b91af"&gt;UsageBlob&lt;/span&gt;.GetUsageBlob(thisUrl, &lt;span style="color:#0000ff"&gt;true&lt;/span&gt;);&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;var&lt;/span&gt; now = &lt;span style="color:#2b91af"&gt;DateTime&lt;/span&gt;.Now;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;var&lt;/span&gt; minDate = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;DateTime&lt;/span&gt;(now.Year, now.Month, now.Day);&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;var&lt;/span&gt; browsers = &lt;span style="color:#0000ff"&gt;from&lt;/span&gt; b &lt;span style="color:#0000ff"&gt;in&lt;/span&gt; blob.Browsers.UsageRecords&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;                        &lt;span style="color:#0000ff"&gt;select&lt;/span&gt; &lt;span style="color:#0000ff"&gt;new&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                        {&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;                            Name = b.Key,&lt;/li&gt; &lt;li&gt;                            Hits = (&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;                                    &lt;span style="color:#0000ff"&gt;from&lt;/span&gt; v &lt;span style="color:#0000ff"&gt;in&lt;/span&gt; b.Values&lt;/li&gt; &lt;li&gt;                                    &lt;span style="color:#0000ff"&gt;where&lt;/span&gt; v.Date &amp;lt;= minDate&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;                                    &lt;span style="color:#0000ff"&gt;select&lt;/span&gt; v.Count&lt;/li&gt; &lt;li&gt;                                    ).Sum(),&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;                            Percentage = 0&lt;/li&gt; &lt;li&gt;                        };&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;var&lt;/span&gt; totalHits = browsers.Sum(b =&amp;gt; b.Hits);&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (totalHits &amp;gt; 0)&lt;/li&gt; &lt;li&gt;        {&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            browsers = &lt;span style="color:#0000ff"&gt;from&lt;/span&gt; b &lt;span style="color:#0000ff"&gt;in&lt;/span&gt; browsers&lt;/li&gt; &lt;li&gt;                        &lt;span style="color:#0000ff"&gt;orderby&lt;/span&gt; b.Hits &lt;span style="color:#0000ff"&gt;descending&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;                        &lt;span style="color:#0000ff"&gt;select&lt;/span&gt; &lt;span style="color:#0000ff"&gt;new&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                        {&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;                            Name = b.Name,&lt;/li&gt; &lt;li&gt;                            Hits = b.Hits,&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;                            Percentage = (&lt;span style="color:#0000ff"&gt;int&lt;/span&gt;)&lt;span style="color:#2b91af"&gt;Math&lt;/span&gt;.Round(((&lt;span style="color:#0000ff"&gt;double&lt;/span&gt;)b.Hits / totalHits) * 100)&lt;/li&gt; &lt;li&gt;                        };&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        }&lt;/li&gt; &lt;li&gt;        intHits = totalHits;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    }&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;catch&lt;/span&gt; (&lt;span style="color:#2b91af"&gt;Exception&lt;/span&gt; ex) &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    {&lt;/li&gt; &lt;li&gt;        globalMethods.WriteULSEntry(ex, TraceSeverity.Unexpected, &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;);&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    }&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; intHits;  &lt;/li&gt; &lt;li&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-4662566145594272371?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/4662566145594272371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/12/sharepoint-2010-and-usage-blob.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/4662566145594272371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/4662566145594272371'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/12/sharepoint-2010-and-usage-blob.html' title='SharePoint 2010 and the Usage BLOB'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-8336264890559354275</id><published>2011-12-29T17:32:00.001-08:00</published><updated>2012-01-16T09:47:55.904-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XSL'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2010'/><title type='text'>Adding XSL to a SharePoint Visual Studio Solution</title><content type='html'>&lt;p&gt;When working with custom SharePoint search results web parts, inheriting from &lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.office.server.search.webcontrols.coreresultswebpart.aspx"&gt;CoreResultsWebpart&lt;/a&gt;&lt;/strong&gt; you’ll often use XSL to transform the search results display (this is not limited to this type of web part, you can use for list views too).&amp;#160; You could deploy the web part and configure the XSL after deployment or you could include the link to your XSL in your web part and package the XSL with your Visual Studio 2010 project.&amp;#160; To do the latter, from your Visual Studio Project, right click the name of the project in the &lt;strong&gt;Solution Explorer&lt;/strong&gt; pane, select &lt;strong&gt;Add&lt;/strong&gt;, and select &lt;strong&gt;SharePoint Mapped Folder&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-X_lTulbMKZc/Tv0Ulmi9GWI/AAAAAAAAADg/Jd6m1Ygz5NQ/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-4OzERDVpQ_c/Tv0UnBPSMnI/AAAAAAAAADo/0ghgif64-Lg/image_thumb%25255B1%25255D.png?imgmax=800" width="644" height="313" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In resulting window, select the folder at path &lt;strong&gt;Template\LAYOUTS\XSL&lt;/strong&gt; to map.&amp;#160; Once mapped, I suggest adding a custom folder so it’s clear that this is custom XSL and then either upload your existing *.xsl file or create a new one and add your XSL (Side Note, SharePoint Designer does a great job of generating XSL based on any sample XML).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-XMZTsAkxmnU/Tv0UnUDYS5I/AAAAAAAAADw/weu8w6spz2A/s1600-h/image%25255B6%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-TzVneO5U634/Tv0UpDfqjhI/AAAAAAAAAD4/Coe0gTRWGR4/image_thumb%25255B2%25255D.png?imgmax=800" width="162" height="80" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In the inherited class’ ConfigureDataSourceProperties set the &lt;strong&gt;XslLink &lt;/strong&gt;property to the path of the XSL in the hive (“/_layouts/xsl/xyzcustom” in this case).&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; ConfigureDataSourceProperties()&lt;br /&gt;   {&lt;br /&gt;      ...&lt;br /&gt;      &lt;span class="kwrd"&gt;this&lt;/span&gt;.XslLink = &lt;span class="str"&gt;&amp;quot;/_layouts/xsl/xyzcustom/mmsearch.xsl&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;       ....&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;Now, wherever you deploy the web part and add to a page, it will use your custom XSL. &lt;br /&gt;&lt;br /&gt;&lt;p&gt;Using this method, the XSL can not be overridden, If you want to overide after adding the web part, instead add to your web part's properties like this.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;webParts&amp;gt;&lt;br /&gt;  &amp;lt;webPart xmlns=&amp;quot;http://schemas.microsoft.com/WebPart/v3&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;metaData&amp;gt;&lt;br /&gt;      &amp;lt;type name=&amp;quot;XYZSearchBuilder, $SharePoint.Project.AssemblyFullName$&amp;quot; /&amp;gt;&lt;br /&gt;      &amp;lt;importErrorMessage&amp;gt;$Resources:core,ImportErrorMessage;&amp;lt;/importErrorMessage&amp;gt;&lt;br /&gt;    &amp;lt;/metaData&amp;gt;&lt;br /&gt;    &amp;lt;data&amp;gt;&lt;br /&gt;      &amp;lt;properties&amp;gt;&lt;br /&gt;        &amp;lt;property name=&amp;quot;Title&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;My Core Search Results&amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;property name=&amp;quot;Description&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;Inherits from Core Results Web Part.  This web part provides a fixed query builder configuration to set keyword values to provide results containg the currently logged in user.  The web part also provides configuration to sort results by a managed property (reduce storage may need to be set).&amp;lt;/property&amp;gt;&lt;br /&gt;       &lt;font style="background-color: #ffff00"&gt; &amp;lt;property name=&amp;quot;XslLink&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;/_layouts/xsl/xyzcustom/xyzsearch.xsl&amp;lt;/property&amp;gt;&lt;/font&gt;&lt;br /&gt;      &amp;lt;/properties&amp;gt;&lt;br /&gt;    &amp;lt;/data&amp;gt;&lt;br /&gt;  &amp;lt;/webPart&amp;gt;&lt;br /&gt;&amp;lt;/webParts&amp;gt;&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-8336264890559354275?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/8336264890559354275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/12/adding-xsl-to-sharepoint-visual-studio.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/8336264890559354275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/8336264890559354275'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/12/adding-xsl-to-sharepoint-visual-studio.html' title='Adding XSL to a SharePoint Visual Studio Solution'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-4OzERDVpQ_c/Tv0UnBPSMnI/AAAAAAAAADo/0ghgif64-Lg/s72-c/image_thumb%25255B1%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-679030491701988230</id><published>2011-12-29T13:52:00.001-08:00</published><updated>2011-12-29T13:52:16.449-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Search'/><category scheme='http://www.blogger.com/atom/ns#' term='Search Core Results'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2010'/><title type='text'>SharePoint 2010 Custom “My” Search Core Results</title><content type='html'>&lt;p&gt;I’ve had a need to return search results specific to the currently logged in user which display on page load so I developed a My Search Core Results web part which inherits from the OOTB &lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.office.server.search.webcontrols.coreresultswebpart.aspx" target="_blank"&gt;CoreResultsWebpart&lt;/a&gt;. &lt;/strong&gt;Scott Hillier's &lt;a href="http://hillier.codeplex.com/releases/view/41126" target="_blank"&gt;solution&lt;/a&gt; for returning appended &amp;quot;My&amp;quot; results was a basis for this web part. But where Scott's example code appends to the user query, this generates a dynamic fixed query so results appear on page load. &lt;/p&gt;  &lt;p&gt;The core of this web part is the following snippet:&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:45979a9a-59a0-4354-b4cb-d289e709f682" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #fff; max-height: 400px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;namespace&lt;/span&gt; WP.CustomSearch.MySearchBuilder&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;{&lt;/li&gt; &lt;li&gt;    [&lt;span style="color:#2b91af"&gt;ToolboxItemAttribute&lt;/span&gt;(&lt;span style="color:#0000ff"&gt;false&lt;/span&gt;)]&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af"&gt;MySearchBuilder&lt;/span&gt; : CoreResultsWebPart&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    {&lt;/li&gt; &lt;li&gt;        [&lt;span style="color:#2b91af"&gt;Personalizable&lt;/span&gt;(&lt;span style="color:#2b91af"&gt;PersonalizationScope&lt;/span&gt;.Shared)]&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        [&lt;span style="color:#2b91af"&gt;WebBrowsable&lt;/span&gt;(&lt;span style="color:#0000ff"&gt;true&lt;/span&gt;)]&lt;/li&gt; &lt;li&gt;        [&lt;span style="color:#2b91af"&gt;WebDescription&lt;/span&gt;(&lt;span style="color:#a31515"&gt;&amp;quot;Main Keyword Query to search&amp;quot;&lt;/span&gt;)]&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        [&lt;span style="color:#2b91af"&gt;WebDisplayName&lt;/span&gt;(&lt;span style="color:#a31515"&gt;&amp;quot;Fixed Query to Search&amp;quot;&lt;/span&gt;)]&lt;/li&gt; &lt;li&gt;        [&lt;span style="color:#2b91af"&gt;Category&lt;/span&gt;(&lt;span style="color:#a31515"&gt;&amp;quot;My Query Builder&amp;quot;&lt;/span&gt;)]&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; MainQueryPrefix { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        [&lt;span style="color:#2b91af"&gt;Personalizable&lt;/span&gt;(&lt;span style="color:#2b91af"&gt;PersonalizationScope&lt;/span&gt;.Shared)]&lt;/li&gt; &lt;li&gt;        [&lt;span style="color:#2b91af"&gt;WebBrowsable&lt;/span&gt;(&lt;span style="color:#0000ff"&gt;true&lt;/span&gt;)]&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        [&lt;span style="color:#2b91af"&gt;WebDescription&lt;/span&gt;(&lt;span style="color:#a31515"&gt;&amp;quot;Mananged Property that should be searched for current user&amp;quot;&lt;/span&gt;)]&lt;/li&gt; &lt;li&gt;        [&lt;span style="color:#2b91af"&gt;WebDisplayName&lt;/span&gt;(&lt;span style="color:#a31515"&gt;&amp;quot;My Query Managed Property&amp;quot;&lt;/span&gt;)]&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        [&lt;span style="color:#2b91af"&gt;Category&lt;/span&gt;(&lt;span style="color:#a31515"&gt;&amp;quot;My Query Builder&amp;quot;&lt;/span&gt;)]&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; MyQueryPrefix { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;        [&lt;span style="color:#2b91af"&gt;Personalizable&lt;/span&gt;(&lt;span style="color:#2b91af"&gt;PersonalizationScope&lt;/span&gt;.Shared)]&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        [&lt;span style="color:#2b91af"&gt;WebBrowsable&lt;/span&gt;(&lt;span style="color:#0000ff"&gt;true&lt;/span&gt;)]&lt;/li&gt; &lt;li&gt;        [&lt;span style="color:#2b91af"&gt;WebDescription&lt;/span&gt;(&lt;span style="color:#a31515"&gt;&amp;quot;Sort by this managed property&amp;quot;&lt;/span&gt;)]&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        [&lt;span style="color:#2b91af"&gt;WebDisplayName&lt;/span&gt;(&lt;span style="color:#a31515"&gt;&amp;quot;Managed Property&amp;quot;&lt;/span&gt;)]&lt;/li&gt; &lt;li&gt;        [&lt;span style="color:#2b91af"&gt;Category&lt;/span&gt;(&lt;span style="color:#a31515"&gt;&amp;quot;Sort Override&amp;quot;&lt;/span&gt;)]&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; OrderByProperty { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        [&lt;span style="color:#2b91af"&gt;Personalizable&lt;/span&gt;(&lt;span style="color:#2b91af"&gt;PersonalizationScope&lt;/span&gt;.Shared)]&lt;/li&gt; &lt;li&gt;        [&lt;span style="color:#2b91af"&gt;WebBrowsable&lt;/span&gt;(&lt;span style="color:#0000ff"&gt;true&lt;/span&gt;)]&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        [&lt;span style="color:#2b91af"&gt;WebDescription&lt;/span&gt;(&lt;span style="color:#a31515"&gt;&amp;quot;Sort direction&amp;quot;&lt;/span&gt;)]&lt;/li&gt; &lt;li&gt;        [&lt;span style="color:#2b91af"&gt;Category&lt;/span&gt;(&lt;span style="color:#a31515"&gt;&amp;quot;Sort Override&amp;quot;&lt;/span&gt;)]&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; Microsoft.Office.Server.Search.Query.SortDirection SortDirection { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; ConfigureDataSourceProperties()&lt;/li&gt; &lt;li&gt;        {&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; QueryFormat = MainQueryPrefix + &lt;span style="color:#a31515"&gt;&amp;quot; &amp;quot;&lt;/span&gt; + MyQueryPrefix + &lt;span style="color:#a31515"&gt;&amp;quot;:&amp;#92;&amp;quot;{0}&amp;#92;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; currentUserName = SPContext.Current.Web.CurrentUser.LoginName;&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; currentName = SPContext.Current.Web.CurrentUser.Name;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#2b91af"&gt;StringBuilder&lt;/span&gt; sb = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;StringBuilder&lt;/span&gt;(&lt;span style="color:#2b91af"&gt;String&lt;/span&gt;.Format(QueryFormat, currentUserName));&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            sb.Append(&lt;span style="color:#2b91af"&gt;String&lt;/span&gt;.Format(&lt;span style="color:#a31515"&gt;&amp;quot; &amp;quot;&lt;/span&gt; + MyQueryPrefix + &lt;span style="color:#a31515"&gt;&amp;quot;:&amp;#92;&amp;quot;{0}&amp;#92;&amp;quot;&amp;quot;&lt;/span&gt;, currentName));&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.FixedQuery = sb.ToString();&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#008000"&gt;// only do stuff when search results are visible&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.ShowSearchResults)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            {&lt;/li&gt; &lt;li&gt;                &lt;span style="color:#008000"&gt;// run the base code&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;                &lt;span style="color:#0000ff"&gt;base&lt;/span&gt;.ConfigureDataSourceProperties();&lt;/li&gt; &lt;li&gt;                &lt;span style="color:#0000ff"&gt;try&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;                {&lt;/li&gt; &lt;li&gt;                    &lt;span style="color:#008000"&gt;// if OrderByProperty is not set, use default behavior&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;                    &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (!&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;.IsNullOrEmpty(OrderByProperty))&lt;/li&gt; &lt;li&gt;                    {&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;                        &lt;span style="color:#008000"&gt;// get the datasource and change the sortorder&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                        CoreResultsDatasource dataSource = &lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.DataSource &lt;span style="color:#0000ff"&gt;as&lt;/span&gt; CoreResultsDatasource;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;                        dataSource.SortOrder.Clear();&lt;/li&gt; &lt;li&gt;                        dataSource.SortOrder.Add(OrderByProperty, SortDirection);&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;                    }&lt;/li&gt; &lt;li&gt;                }&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;                &lt;span style="color:#0000ff"&gt;catch&lt;/span&gt; (&lt;span style="color:#2b91af"&gt;Exception&lt;/span&gt; ex)&lt;/li&gt; &lt;li&gt;                {&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;                    SPDiagnosticsService.Local.WriteTrace(0, &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; SPDiagnosticsCategory(&lt;span style="color:#a31515"&gt;&amp;quot;MYWEBPART&amp;quot;&lt;/span&gt;, TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, ex.Message, ex.StackTrace);&lt;/li&gt; &lt;li&gt;                }&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            }&lt;/li&gt; &lt;li&gt;        }&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    }&lt;/li&gt; &lt;li&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;The Web Part has configuration settings for &amp;quot;My Query Builder&amp;quot; which provides the ability to add an initial fixed query value (e.g.., to return just documents you could enter &amp;quot;IsDocument:1&amp;quot; in this field) and a field where the Managed Property contains the current user (e.g. ModifiedBy, Author, or your own Managed Property) so when the web part renders it adds the fixed query (e.g IsDocument:1 ModifiedBy:&amp;quot;&amp;lt;user login&amp;gt;&amp;quot;). Note: If you want to throw more than one of this webpart on a single page, make sure to set a unique Cross-Web Part query ID.&amp;#160; As you can see in screenshot below, the values from “My Query Builder” dynamically populate the fixed keyword query adding the currently logged in users ID to the fixed query.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-hhrFwqSrDyg/TvzhDBqNLvI/AAAAAAAAADQ/7zgcbrpz2a0/s1600-h/image%25255B10%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-yMPTxuotWkc/TvzhD3MQswI/AAAAAAAAADY/x027-OSzvqc/image_thumb%25255B4%25255D.png?imgmax=800" width="167" height="287" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The full Visual Studio solution can be downloaded &lt;a href="http://mysearchsp.codeplex.com/SourceControl/list/changesets" target="_blank"&gt;here.&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-679030491701988230?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/679030491701988230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/12/sharepoint-2010-custom-my-search-core.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/679030491701988230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/679030491701988230'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/12/sharepoint-2010-custom-my-search-core.html' title='SharePoint 2010 Custom “My” Search Core Results'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-yMPTxuotWkc/TvzhD3MQswI/AAAAAAAAADY/x027-OSzvqc/s72-c/image_thumb%25255B4%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-5931989198258840126</id><published>2011-12-29T11:26:00.001-08:00</published><updated>2011-12-29T11:38:25.043-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Search'/><category scheme='http://www.blogger.com/atom/ns#' term='Custom Advanced Search'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2010'/><title type='text'>SharePoint 2010 Custom Advanced Search for Power Users</title><content type='html'>&lt;p&gt;A few months ago, I had the need to aggregate list items from a list which exists on multiple site collections and display them as a list, filterable by column, on a top level site (as displayed below).&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-12d3UgXWpxo/Tvy-3M3LBRI/AAAAAAAAACg/KWTU_fxGyno/s1600-h/image%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-Ig0FnFTN2fs/Tvy-33Hg8NI/AAAAAAAAACo/IzRvTFnxG64/image_thumb%25255B2%25255D.png?imgmax=800" width="671" height="98" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The lists all use the same content type so it was simple enough to go into the &lt;strong&gt;Search Service Application&lt;/strong&gt; and create &lt;a href="http://technet.microsoft.com/en-us/library/ff621097.aspx" target="_blank"&gt;Managed Properties&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt; and a &lt;strong&gt;Scope,&lt;/strong&gt; go to a page on my top level site and add a &lt;strong&gt;Search Core Results web part&lt;/strong&gt; where I cleared the &lt;strong&gt;Use Location Visualization&lt;/strong&gt; selection, added the Columns to include my new Managed Properties (see &lt;a href="http://technet.microsoft.com/en-us/library/gg549987.aspx" target="_blank"&gt;TechNet&lt;/a&gt;), changed the &lt;strong&gt;XSLT&lt;/strong&gt; to display the search results formatted as a list (as a start for previously mentioned steps, see MSDN guidance &lt;a href="http://msdn.microsoft.com/en-us/library/ee819886.aspx" target="_blank"&gt;here&lt;/a&gt; for customizing search results and Tobias Zimmergren has the step-by-step for SP 2007 &lt;a href="http://www.zimmergren.net/technical/moss-2007-customize-the-search-result-using-xslt-part-3-customize-using-sharepoint-designer-2007" target="_blank"&gt;here&lt;/a&gt; which isn’t much different in SP 2010), and set the &lt;strong&gt;Append Text to Query&lt;/strong&gt; to the custom &lt;strong&gt;Scope&lt;/strong&gt; keyword so it automatically brings back search results for this Scope (You could use one of your custom managed properties here too – I used &lt;strong&gt;Append Text To Query&lt;/strong&gt; instead of &lt;strong&gt;Fixed Keyword Query&lt;/strong&gt; because Fixed Query won’t allow you to filter by other keywords – there are ways to dynamically change this fixed query which I developed later and is in a future post).&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-xcCqyQjTqYQ/Tvy-4T7XjPI/AAAAAAAAACw/cxZtMs6RdU4/s1600-h/image%25255B14%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-mjTuatr8eWU/Tvy-43q3-nI/AAAAAAAAAC4/BvjhiJfegno/image_thumb%25255B6%25255D.png?imgmax=800" width="184" height="374" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The filter was a challenge.&amp;#160; Using the out-of-the-box &lt;strong&gt;Advanced Search web part&lt;/strong&gt; was my initial thought but the designer’s wireframes had dropdown boxes where the &lt;strong&gt;Advanced Search Web Part&lt;/strong&gt; only allows plain text inputs and doesn’t display the way the designer had imagined.&amp;#160; I did a little research and came across a post from Tom Clarkson where he had a low-dev solution using a &lt;strong&gt;content editor web part&lt;/strong&gt;&amp;#160; to create a &lt;a href="http://tqcblog.com/2007/10/26/creating-a-custom-advanced-search-box-in-moss-2007/" target="_blank"&gt;Custom Advanced Search Box&lt;/a&gt; in SharePoint 2007 (please review Tom’s post to understand what the “ASB_” fields are).&amp;#160; So I thought I could try this for SharePoint 2010.&amp;#160; I did…and it did nothing.&amp;#160; I added some of the properties as a test and placed in a content editor web part as Tom had documented, switched my core results web part results query options to use “Query 2” so it would use the query from the custom search instead of the search query control on the page, ran the query…and nothing.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-s0zwFds161w/Tvy-5NwX-8I/AAAAAAAAADA/DtBBlKYftFg/s1600-h/image%25255B7%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-A7MAQq1eRP0/Tvy-5lKqPKI/AAAAAAAAADI/HA6ZK_9j34w/image_thumb%25255B3%25255D.png?imgmax=800" width="205" height="242" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I came across several posts on the web where people implemented Tom’s solution in SharePoint 2007, upgraded to SharePoint 2010, and found the solution no longer worked.&amp;#160; I was under a time crunch so I didn’t have time to start building something in Visual Studio and there was nothing that fit the bill on codeplex so I investigated further by &lt;strong&gt;reflecting &lt;/strong&gt;the code for the &lt;strong&gt;Advanced Search web part&lt;/strong&gt; to see that a lot of what the web part does is generate JavaScript functions so it became clearer that I wasn’t getting results because I didn’t have the JavaScript functions beginning with the key one &lt;strong&gt;“SearchButtonOnClick.”&amp;#160; So I needed the JavaScript…simple…I placed an OOTB Advanced Search Web Part on my page and set it’s layout property to “Hidden.”&amp;#160; &lt;/strong&gt;Not so simple, I had the JavaScript, but it didn’t want to use the HTML form from my content editor web part.&amp;#160; So I created my own function based on SearchButtonOnClick called &lt;strong&gt;SearchButtonOnClick2&lt;/strong&gt; (as displayed below -- In total, I had to customize 4 of the OOTB functions to get the search results to fit the requirement).&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; SearchButtonOnClick2(switchElement)&lt;br /&gt;{&lt;br /&gt;    ResetPageHashCode();&lt;br /&gt;    &lt;font style="background-color: #ffff00"&gt;DoAdvancedSearch2&lt;/font&gt;(&lt;span class="str"&gt;'k'&lt;/span&gt;, &lt;span class="str"&gt;'&lt;font style="background-color: #ffff00"&gt;\u002fPages\u002fAll-Projects.aspx'&lt;/font&gt;&lt;/span&gt;, &lt;span class="str"&gt;'&lt;font style="background-color: #ffff00"&gt;xyzProject&lt;/font&gt;'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_TQS_AndQ_tb'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_TQS_PhraseQ_tb'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_TQS_OrQ_tb'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_TQS_NotQ_tb'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_SS_scb_'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_SS_lcb_'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_SS_rtlb'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_PS_plb_'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_PS_olb_'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_PS_pvtb_'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_PS_lolb_'&lt;/span&gt;);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Notice the called function &lt;strong&gt;DoAdvancedSearch2 --&lt;/strong&gt; it is based on the OOTB function DoAdvancedSearch – and is where I instruct the search to grab values from my form (in sample, 4th element value “&lt;strong&gt;xyzProject”)&lt;/strong&gt; and I also set the results page to the current page in the 2nd element.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The &lt;strong&gt;DoAdvancedSearch2 &lt;/strong&gt;function is as follows:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; DoAdvancedSearch2(queryParameterName, resultsPage, &lt;br /&gt;                          idOuterTable, idAndQueryTextBox, idPhraseQueryTextBox,&lt;br /&gt;                          idOrQueryTextBox, idNotQueryTextBox, idPrefixScopeCheckBox,&lt;br /&gt;                          idPrefixLangsCheckBox, idResultTypeList,&lt;br /&gt;                          idPrefixPropNameSelect, idPrefixPropOperatorSelect,&lt;br /&gt;                          idPrefixPropValueTextBox, idPrefixPropAndOrSelect) {&lt;br /&gt; &lt;br /&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (ValidateForm()) {&lt;br /&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; elements = &lt;font style="background-color: #ffffff"&gt;findElements&lt;/font&gt;(idOuterTable, idAndQueryTextBox,&lt;br /&gt;                                    idPhraseQueryTextBox, idOrQueryTextBox,&lt;br /&gt;                                    idNotQueryTextBox, idPrefixScopeCheckBox,&lt;br /&gt;                                    idPrefixLangsCheckBox, idResultTypeList,&lt;br /&gt;                                    idPrefixPropNameSelect, idPrefixPropOperatorSelect,&lt;br /&gt;                                    idPrefixPropValueTextBox, idPrefixPropAndOrSelect);&lt;br /&gt; &lt;br /&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; query = &lt;font style="background-color: #ffff00"&gt;ComposeQuery2&lt;/font&gt;(elements);&lt;br /&gt;&lt;span class="rem"&gt;//alert(query);&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (query != &lt;span class="str"&gt;''&lt;/span&gt;) &lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; url = resultsPage + &lt;span class="str"&gt;'?'&lt;/span&gt; + queryParameterName + &lt;span class="str"&gt;'='&lt;/span&gt; + query;&lt;br /&gt;            navigateTo(url);&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;        {&lt;br /&gt;            alert(emptyQueryMessage);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Notice the &lt;strong&gt;ComposeQuery2 &lt;/strong&gt;function being called – again this are based on the OOTB generated function where the only reason I need to change it is to instead call the new &lt;strong&gt;ComposePropertySectionQuery2&lt;/strong&gt; function.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; ComposeQuery2(elements) {&lt;br /&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; encodeURIComponent(ConcatenateQueryParts(&lt;br /&gt;        ComposeTextSectionQuery(elements),&lt;br /&gt;        ComposeScopingSectionQuery(elements),&lt;br /&gt;        &lt;font style="background-color: #ffff00"&gt;ComposePropertySectionQuery2&lt;/font&gt;(elements)&lt;br /&gt;    ));&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; ComposePropertySectionQuery2(elements) {&lt;br /&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; queryParts = [];&lt;br /&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; querySeparators = [];&lt;br /&gt;    &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;var&lt;/span&gt; i = 0; i &amp;lt; elements.PropNameSelectArray.length; i++) {&lt;br /&gt;        propNameSelect = elements.PropNameSelectArray[i];&lt;br /&gt;        propOperatorSelect = elements.PropOperatorSelectArray[i];&lt;br /&gt;        propAndOrSelect = elements.PropAndOrSelectArray[i];&lt;br /&gt;&lt;br /&gt;        &lt;font style="background-color: #ffff00"&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (propNameSelect.selectedIndex &amp;gt;= 0)&lt;/font&gt; {&lt;br /&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; propIndex = findInArray(arrPropNames, propNameSelect.value);&lt;br /&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; propName = arrPropNames[propIndex];&lt;br /&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; propDataType = arrPropDTs[propIndex];&lt;br /&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; opIndex = findInArray(arrDTOps[propDataType], propOperatorSelect.value);&lt;br /&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; propPrefix = arrDTOpsStrPrefix[propDataType][opIndex];&lt;br /&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; propOperator = arrDTOpsStr[propDataType][opIndex];&lt;br /&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; propValue = elements.PropValueTextboxArray[i].value;&lt;br /&gt;        &lt;font style="background-color: #ffff00"&gt;&lt;span class="rem"&gt;//handle when no input entered or value selected&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (propValue == &lt;span class="str"&gt;''&lt;/span&gt;)&lt;br /&gt;        {&lt;/font&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;continue&lt;/span&gt;;&lt;br /&gt;            }    &lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; ((propValue.indexOf(&lt;span class="str"&gt;' '&lt;/span&gt;) != -1) ||    &lt;br /&gt;                (propName.toLowerCase() === &lt;span class="str"&gt;'path'&lt;/span&gt;)) &lt;br /&gt;            {&lt;br /&gt;        propValue = enquote(propValue);&lt;br /&gt;            }&lt;br /&gt;            queryParts.push(propPrefix + propName + propOperator + propValue);&lt;br /&gt;            querySeparators.push(arrAndOrKeywords[propAndOrSelect.selectedIndex]);&lt;br /&gt; &lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; query = ConcatenateQueryPartsWithSeparator(querySeparators, queryParts);&lt;br /&gt; &lt;br /&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (queryParts.length &amp;gt; 1)&lt;br /&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="str"&gt;'('&lt;/span&gt; + query + &lt;span class="str"&gt;')'&lt;/span&gt;; &lt;br /&gt;    &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; query;&lt;br /&gt; &lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The difference between &lt;strong&gt;ComposePropertySectionQuery2&lt;/strong&gt; and the OOTB &lt;strong&gt;ComposePropertySectionQuery&lt;/strong&gt; function is the change to condition&lt;strong&gt; “if (propNameSelect.selectedIndex &amp;gt;= 0)”&lt;/strong&gt; which allows the user to submit a query with no filter values – this is used when the user basically wants to reset to show all results after having previously queried using a filter value, and the logic I added under the comment “&lt;strong&gt;handle when no input enter in value selected.” &lt;/strong&gt;This logic is required because the user needs to filter by all fields, one field, or no fields (a reset).&amp;#160; If there is only one field they filter by, I don’t want the Query to be built to include searching by the other properties.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So there is also a limitation where these search functions will only work on plain text inputs -- however, I have requirement for dropdown boxes.&amp;#160; To get this to work, I need to add hidden text inputs to my form which correlate to the dropdown (sample below).&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;select&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;projPhase&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;projPhase&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt; &lt;span class="attr"&gt;selected&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;selected&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Any Phase&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Project Control&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Project Control&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Pre&amp;amp;#45;Initiate&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Pre&amp;amp;#45;Initiate&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Intitate&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Initiate&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Requirements&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Requirements&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Architecture&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Architecture&amp;amp;#47;Design&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Development&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Development&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Testing&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Testing&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Deployment&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Deployment&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;select&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;nameprefix_ASB_PS_pvtb_4&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;nameprefix$ASB_PS_pvtb_4&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;text&amp;quot;&lt;/span&gt; &lt;font style="background-color: #ffff00"&gt;&lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;display:none&amp;quot;&lt;/span&gt;&lt;/font&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;With the hidden text inputs, I can do actions on my form dropdown values in the &lt;strong&gt;SearchButtonOnClick2&lt;/strong&gt; function where I’m grabbing the selected value for my dropdown box using the JavaScript function &lt;strong&gt;getElementById&lt;/strong&gt;, and setting the hidden text input’s value to that value so the search functions can use it.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;SearchButtonOnClick2(switchElement)&lt;br /&gt;{&lt;br /&gt;    ResetPageHashCode();&lt;br /&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; elementStatus = document.getElementById(&lt;span class="str"&gt;'projStatus'&lt;/span&gt;);&lt;br /&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; elementStatusText = document.getElementById(&lt;span class="str"&gt;'nameprefix_ASB_PS_pvtb_2'&lt;/span&gt;);&lt;br /&gt;    elementStatusText.value = elementStatus.value;&lt;br /&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; elementSecurity = document.getElementById(&lt;span class="str"&gt;'projSecurity'&lt;/span&gt;);&lt;br /&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; elementSecurityText = document.getElementById(&lt;span class="str"&gt;'nameprefix_ASB_PS_pvtb_3'&lt;/span&gt;);&lt;br /&gt;    elementSecurityText.value = elementSecurity.value;&lt;br /&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; elementPhase = document.getElementById(&lt;span class="str"&gt;'projPhase'&lt;/span&gt;);&lt;br /&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; elementPhaseText = document.getElementById(&lt;span class="str"&gt;'nameprefix_ASB_PS_pvtb_4'&lt;/span&gt;);&lt;br /&gt;    elementPhaseText.value = elementPhase.value;&lt;br /&gt;    DoAdvancedSearch2(&lt;span class="str"&gt;'k'&lt;/span&gt;, &lt;span class="str"&gt;'\u002fPages\u002fAll-Projects.aspx'&lt;/span&gt;, &lt;span class="str"&gt;'mmProject'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_TQS_AndQ_tb'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_TQS_PhraseQ_tb'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_TQS_OrQ_tb'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_TQS_NotQ_tb'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_SS_scb_'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_SS_lcb_'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_SS_rtlb'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_PS_plb_'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_PS_olb_'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_PS_pvtb_'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_PS_lolb_'&lt;/span&gt;);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;For complete reference, here’s a sample of the full script that I placed in the HTML source of the content editor web part (notice the scopes are hidden from display but they are necessary for the query to run and they need to match whatever scopes you are showing in the hidden advanced search web part.&amp;#160; I’m also hiding the property values and conditions to meet the wireframe requirements but the query functions need them so they are included).&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&amp;lt;table id=&lt;span class="str"&gt;&amp;quot;xyzProject&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;    &amp;lt;tr&amp;gt;&lt;br /&gt;        &amp;lt;td&amp;gt;&lt;br /&gt;        &amp;lt;input id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_SS_scb_0_12&amp;quot;&lt;/span&gt; type=&lt;span class="str"&gt;&amp;quot;checkbox&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_SS_scb_0_12&amp;quot;&lt;/span&gt; &lt;font style="background-color: #ffff00"&gt;style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;/&lt;/font&gt;&amp;gt;&lt;br /&gt;        &amp;lt;input id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_SS_scb_1_10&amp;quot;&lt;/span&gt; type=&lt;span class="str"&gt;&amp;quot;checkbox&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_SS_scb_1_10&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;checked&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;checked&amp;quot;&lt;/span&gt; &lt;font style="background-color: #ffff00"&gt;style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;/&lt;/font&gt;&amp;gt;&lt;br /&gt;        &amp;lt;input id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_SS_scb_2_11&amp;quot;&lt;/span&gt; type=&lt;span class="str"&gt;&amp;quot;checkbox&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_SS_scb_2_11&amp;quot;&lt;/span&gt; &lt;font style="background-color: #ffff00"&gt;style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;/&lt;/font&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_SS_rtlb&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_SS_rtlb&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;Result Type&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;            &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;default&amp;quot;&lt;/span&gt;&amp;gt;All Results&amp;lt;/option&amp;gt;&lt;br /&gt;        &amp;lt;/select&amp;gt;&lt;br /&gt;        &amp;lt;/td&amp;gt;&lt;br /&gt;    &amp;lt;/tr&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;tr &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;ms-vh&amp;quot;&lt;/span&gt; nowrap=&lt;span class="str"&gt;&amp;quot;nowrap&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;font-family: Verdana, Helvetica, sans-serif; font-weight: bold; color: #666; text-decoration: none&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;td&amp;gt;&lt;br /&gt;            Project Name:&lt;br /&gt;        &amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;td&amp;gt;&lt;br /&gt;            Program Name:&lt;br /&gt;        &amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;td&amp;gt;&lt;br /&gt;            Status:&lt;br /&gt;        &amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;td&amp;gt;&lt;br /&gt;            Security:&lt;br /&gt;        &amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;td&amp;gt;&lt;br /&gt;            Current Phase:&lt;br /&gt;        &amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;td&amp;gt;&lt;br /&gt;            Project Manager:&lt;br /&gt;        &amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;td&amp;gt;&lt;br /&gt;            Description:&lt;br /&gt;        &amp;lt;/td&amp;gt;&lt;br /&gt;    &amp;lt;/tr&amp;gt;&lt;br /&gt;    &amp;lt;tr&amp;gt;&lt;br /&gt;        &amp;lt;td&amp;gt;&lt;br /&gt;            &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_plb_0&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_plb_0&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;Pick a Property&amp;quot;&lt;/span&gt; &lt;font style="background-color: #ffff00"&gt;style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;            &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;xyzProjectName&amp;quot;&lt;/span&gt;&amp;gt;Project Name&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;            &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_olb_0&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_olb_0&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;Inclusion Operator&amp;quot;&lt;/span&gt; &lt;font style="background-color: #ffff00"&gt;style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;                &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;Contains&amp;quot;&lt;/span&gt;&amp;gt;Contains&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;            &amp;lt;input id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_pvtb_0&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_pvtb_0&amp;quot;&lt;/span&gt; type=&lt;span class="str"&gt;&amp;quot;text&amp;quot;&lt;/span&gt;/&amp;gt;&lt;br /&gt;            &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_lolb_0&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_lolb_0&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;And Or Operator&amp;quot;&lt;/span&gt; &lt;font style="background-color: #ffff00"&gt;style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;                &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;And&amp;quot;&lt;/span&gt;&amp;gt;And&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;        &amp;lt;/td&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;td&amp;gt;&lt;br /&gt;            &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_plb_1&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_plb_1&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;Pick a Property&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;xyzProgramName&amp;quot;&lt;/span&gt;&amp;gt;Program Name&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;            &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_olb_1&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_olb_1&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;Inclusion Operator&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;Contains&amp;quot;&lt;/span&gt;&amp;gt;Contains&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;            &amp;lt;input id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_pvtb_1&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_pvtb_1&amp;quot;&lt;/span&gt; type=&lt;span class="str"&gt;&amp;quot;text&amp;quot;&lt;/span&gt;/&amp;gt;&lt;br /&gt;            &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_lolb_1&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_lolb_1&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;And Or Operator&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;And&amp;quot;&lt;/span&gt;&amp;gt;And&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;        &amp;lt;/td&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;td&amp;gt;&lt;br /&gt;            &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_plb_2&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_plb_2&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;Pick a Property&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;xyzProjectStatus&amp;quot;&lt;/span&gt;&amp;gt;Project Status&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;            &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_olb_2&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_olb_2&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;Inclusion Operator&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;Contains&amp;quot;&lt;/span&gt;&amp;gt;Contains&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;            &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;projStatus&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;projStatus&amp;quot;&lt;/span&gt; &amp;gt;&lt;br /&gt;                &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&amp;gt;Any Status&amp;lt;/option&amp;gt;&lt;br /&gt;                &amp;lt;option value=&lt;span class="str"&gt;&amp;quot;Active&amp;quot;&lt;/span&gt;&amp;gt;Active&amp;lt;/option&amp;gt;&lt;br /&gt;                &amp;lt;option value=&lt;span class="str"&gt;&amp;quot;Locked&amp;quot;&lt;/span&gt;&amp;gt;Locked&amp;lt;/option&amp;gt;&lt;br /&gt;                &amp;lt;option value=&lt;span class="str"&gt;&amp;quot;Cancelled&amp;quot;&lt;/span&gt;&amp;gt;Cancelled&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;            &amp;lt;input id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_pvtb_2&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_pvtb_2&amp;quot;&lt;/span&gt; type=&lt;span class="str"&gt;&amp;quot;text&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt; /&amp;gt;&lt;br /&gt;            &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_lolb_2&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_lolb_2&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;And Or Operator&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;And&amp;quot;&lt;/span&gt;&amp;gt;And&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;        &amp;lt;/td&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;td&amp;gt;&lt;br /&gt;            &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_plb_3&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_plb_3&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;Pick a Property&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;xyzProjectSecurity&amp;quot;&lt;/span&gt;&amp;gt;Project Status&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;            &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_olb_3&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_olb_3&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;Inclusion Operator&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;Contains&amp;quot;&lt;/span&gt;&amp;gt;Contains&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;            &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;projSecurity&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;projSecurity&amp;quot;&lt;/span&gt; &amp;gt;&lt;br /&gt;                &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&amp;gt;Any Level&amp;lt;/option&amp;gt;&lt;br /&gt;                &amp;lt;option value=&lt;span class="str"&gt;&amp;quot;FALSE&amp;quot;&lt;/span&gt;&amp;gt;Normal Level&amp;lt;/option&amp;gt;&lt;br /&gt;                &amp;lt;option value=&lt;span class="str"&gt;&amp;quot;TRUE&amp;quot;&lt;/span&gt;&amp;gt;Sensitive Level&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;            &amp;lt;input id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_pvtb_3&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_pvtb_3&amp;quot;&lt;/span&gt; type=&lt;span class="str"&gt;&amp;quot;text&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt; /&amp;gt;&lt;br /&gt;            &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_lolb_3&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_lolb_3&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;And Or Operator&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;And&amp;quot;&lt;/span&gt;&amp;gt;And&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;        &amp;lt;/td&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;td&amp;gt;&lt;br /&gt;            &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_plb_4&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_plb_4&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;Pick a Property&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;xyzProjectPhase&amp;quot;&lt;/span&gt;&amp;gt;Project Phase&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;            &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_olb_4&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_olb_4&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;Inclusion Operator&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;Contains&amp;quot;&lt;/span&gt;&amp;gt;Contains&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;            &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;projPhase&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;projPhase&amp;quot;&lt;/span&gt; &amp;gt;&lt;br /&gt;                &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&amp;gt;Any Phase&amp;lt;/option&amp;gt;&lt;br /&gt;                &amp;lt;option value=&lt;span class="str"&gt;&amp;quot;Project Control&amp;quot;&lt;/span&gt;&amp;gt;Project Control&amp;lt;/option&amp;gt;&lt;br /&gt;                &amp;lt;option value=&lt;span class="str"&gt;&amp;quot;Pre&amp;amp;#45;Initiate&amp;quot;&lt;/span&gt;&amp;gt;Pre&amp;amp;#45;Initiate&amp;lt;/option&amp;gt;&lt;br /&gt;                &amp;lt;option value=&lt;span class="str"&gt;&amp;quot;Intitate&amp;quot;&lt;/span&gt;&amp;gt;Initiate&amp;lt;/option&amp;gt;&lt;br /&gt;                &amp;lt;option value=&lt;span class="str"&gt;&amp;quot;Requirements&amp;quot;&lt;/span&gt;&amp;gt;Requirements&amp;lt;/option&amp;gt;&lt;br /&gt;                &amp;lt;option value=&lt;span class="str"&gt;&amp;quot;Architecture&amp;quot;&lt;/span&gt;&amp;gt;Architecture&amp;amp;#47;Design&amp;lt;/option&amp;gt;&lt;br /&gt;                &amp;lt;option value=&lt;span class="str"&gt;&amp;quot;Development&amp;quot;&lt;/span&gt;&amp;gt;Development&amp;lt;/option&amp;gt;&lt;br /&gt;                &amp;lt;option value=&lt;span class="str"&gt;&amp;quot;Testing&amp;quot;&lt;/span&gt;&amp;gt;Testing&amp;lt;/option&amp;gt;&lt;br /&gt;                &amp;lt;option value=&lt;span class="str"&gt;&amp;quot;Deployment&amp;quot;&lt;/span&gt;&amp;gt;Deployment&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;            &amp;lt;input id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_pvtb_4&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_pvtb_4&amp;quot;&lt;/span&gt; type=&lt;span class="str"&gt;&amp;quot;text&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt; /&amp;gt;&lt;br /&gt;            &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_lolb_4&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_lolb_4&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;And Or Operator&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;And&amp;quot;&lt;/span&gt;&amp;gt;And&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;        &amp;lt;/td&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;td&amp;gt;&lt;br /&gt;            &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_plb_5&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_plb_5&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;Pick a Property&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;xyzProjectManager&amp;quot;&lt;/span&gt;&amp;gt;Project Manager&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;            &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_olb_5&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_olb_5&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;Inclusion Operator&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;Contains&amp;quot;&lt;/span&gt;&amp;gt;Contains&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;            &amp;lt;input id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_pvtb_5&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_pvtb_5&amp;quot;&lt;/span&gt; type=&lt;span class="str"&gt;&amp;quot;text&amp;quot;&lt;/span&gt;/&amp;gt;&lt;br /&gt;            &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_lolb_5&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_lolb_5&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;And Or Operator&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;And&amp;quot;&lt;/span&gt;&amp;gt;And&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;        &amp;lt;/td&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;td&amp;gt;&lt;br /&gt;            &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_plb_6&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_plb_6&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;Pick a Property&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;xyzProjectDescription&amp;quot;&lt;/span&gt;&amp;gt;Project Description&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;            &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_olb_6&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_olb_6&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;Inclusion Operator&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;Contains&amp;quot;&lt;/span&gt;&amp;gt;Contains&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;            &amp;lt;input id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_pvtb_6&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_pvtb_6&amp;quot;&lt;/span&gt; type=&lt;span class="str"&gt;&amp;quot;text&amp;quot;&lt;/span&gt;/&amp;gt;&lt;br /&gt;            &amp;lt;select name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_PS_lolb_6&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_PS_lolb_6&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;And Or Operator&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                &amp;lt;option selected=&lt;span class="str"&gt;&amp;quot;selected&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;And&amp;quot;&lt;/span&gt;&amp;gt;And&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;        &amp;lt;/td&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;/tr&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;td align=&lt;span class="str"&gt;&amp;quot;right&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;        &amp;lt;input type=&lt;span class="str"&gt;&amp;quot;submit&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;nameprefix$ASB_BS_SRCH_1&amp;quot;&lt;/span&gt; value=&lt;span class="str"&gt;&amp;quot;Submit Query&amp;quot;&lt;/span&gt; onclick=&lt;span class="str"&gt;&amp;quot;SearchButtonOnClick2(); return false; WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&amp;amp;quot;nameprefix$ASB_BS_SRCH_1&amp;amp;quot;, &amp;amp;quot;&amp;amp;quot;, true, &amp;amp;quot;&amp;amp;quot;, &amp;amp;quot;&amp;amp;quot;, false, false))&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;nameprefix_ASB_BS_SRCH_1&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;Search&amp;quot;&lt;/span&gt; /&amp;gt;&lt;br /&gt;    &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script type=&lt;span class="str"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; SearchButtonOnClick2(switchElement)&lt;br /&gt;{&lt;br /&gt;    ResetPageHashCode();&lt;br /&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; elementStatus = document.getElementById(&lt;span class="str"&gt;'projStatus'&lt;/span&gt;);&lt;br /&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; elementStatusText = document.getElementById(&lt;span class="str"&gt;'nameprefix_ASB_PS_pvtb_2'&lt;/span&gt;);&lt;br /&gt;    elementStatusText.value = elementStatus.value;&lt;br /&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; elementSecurity = document.getElementById(&lt;span class="str"&gt;'projSecurity'&lt;/span&gt;);&lt;br /&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; elementSecurityText = document.getElementById(&lt;span class="str"&gt;'nameprefix_ASB_PS_pvtb_3'&lt;/span&gt;);&lt;br /&gt;    elementSecurityText.value = elementSecurity.value;&lt;br /&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; elementPhase = document.getElementById(&lt;span class="str"&gt;'projPhase'&lt;/span&gt;);&lt;br /&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; elementPhaseText = document.getElementById(&lt;span class="str"&gt;'nameprefix_ASB_PS_pvtb_4'&lt;/span&gt;);&lt;br /&gt;    elementPhaseText.value = elementPhase.value;&lt;br /&gt;    DoAdvancedSearch2(&lt;span class="str"&gt;'k'&lt;/span&gt;, &lt;span class="str"&gt;'\u002fPages\u002fAll-Projects.aspx'&lt;/span&gt;, &lt;span class="str"&gt;'xyzProject'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_TQS_AndQ_tb'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_TQS_PhraseQ_tb'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_TQS_OrQ_tb'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_TQS_NotQ_tb'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_SS_scb_'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_SS_lcb_'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_SS_rtlb'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_PS_plb_'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_PS_olb_'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_PS_pvtb_'&lt;/span&gt;, &lt;span class="str"&gt;'ASB_PS_lolb_'&lt;/span&gt;);&lt;br /&gt;}&lt;br /&gt;            &lt;br /&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; DoAdvancedSearch2(queryParameterName, resultsPage, &lt;br /&gt;                          idOuterTable, idAndQueryTextBox, idPhraseQueryTextBox,&lt;br /&gt;                          idOrQueryTextBox, idNotQueryTextBox, idPrefixScopeCheckBox,&lt;br /&gt;                          idPrefixLangsCheckBox, idResultTypeList,&lt;br /&gt;                          idPrefixPropNameSelect, idPrefixPropOperatorSelect,&lt;br /&gt;                          idPrefixPropValueTextBox, idPrefixPropAndOrSelect) {&lt;br /&gt; &lt;br /&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (ValidateForm()) {&lt;br /&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; elements = findElements2(idOuterTable, idAndQueryTextBox,&lt;br /&gt;                                    idPhraseQueryTextBox, idOrQueryTextBox,&lt;br /&gt;                                    idNotQueryTextBox, idPrefixScopeCheckBox,&lt;br /&gt;                                    idPrefixLangsCheckBox, idResultTypeList,&lt;br /&gt;                                    idPrefixPropNameSelect, idPrefixPropOperatorSelect,&lt;br /&gt;                                    idPrefixPropValueTextBox, idPrefixPropAndOrSelect);&lt;br /&gt; &lt;br /&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; query = ComposeQuery2(elements);&lt;br /&gt;&lt;span class="rem"&gt;//alert(query);&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (query != &lt;span class="str"&gt;''&lt;/span&gt;) &lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; url = resultsPage + &lt;span class="str"&gt;'?'&lt;/span&gt; + queryParameterName + &lt;span class="str"&gt;'='&lt;/span&gt; + query;&lt;br /&gt;            navigateTo(url);&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;        {&lt;br /&gt;            alert(emptyQueryMessage);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; ComposeQuery2(elements) {&lt;br /&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; encodeURIComponent(ConcatenateQueryParts(&lt;br /&gt;        ComposeTextSectionQuery(elements),&lt;br /&gt;        ComposeScopingSectionQuery(elements),&lt;br /&gt;        ComposePropertySectionQuery2(elements)&lt;br /&gt;    ));&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; ComposePropertySectionQuery2(elements) {&lt;br /&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; queryParts = [];&lt;br /&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; querySeparators = [];&lt;br /&gt;    &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;var&lt;/span&gt; i = 0; i &amp;lt; elements.PropNameSelectArray.length; i++) {&lt;br /&gt;        propNameSelect = elements.PropNameSelectArray[i];&lt;br /&gt;        propOperatorSelect = elements.PropOperatorSelectArray[i];&lt;br /&gt;        propAndOrSelect = elements.PropAndOrSelectArray[i];&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (propNameSelect.selectedIndex &amp;gt;= 0) {&lt;br /&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; propIndex = findInArray(arrPropNames, propNameSelect.value);&lt;br /&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; propName = arrPropNames[propIndex];&lt;br /&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; propDataType = arrPropDTs[propIndex];&lt;br /&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; opIndex = findInArray(arrDTOps[propDataType], propOperatorSelect.value);&lt;br /&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; propPrefix = arrDTOpsStrPrefix[propDataType][opIndex];&lt;br /&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; propOperator = arrDTOpsStr[propDataType][opIndex];&lt;br /&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; propValue = elements.PropValueTextboxArray[i].value;&lt;br /&gt;        &lt;span class="rem"&gt;//handle when no input entered or value selected&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (propValue == &lt;span class="str"&gt;''&lt;/span&gt;)&lt;br /&gt;        {&lt;br /&gt;        &lt;span class="kwrd"&gt;continue&lt;/span&gt;;&lt;br /&gt;            }    &lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; ((propValue.indexOf(&lt;span class="str"&gt;' '&lt;/span&gt;) != -1) ||    &lt;br /&gt;                (propName.toLowerCase() === &lt;span class="str"&gt;'path'&lt;/span&gt;)) &lt;br /&gt;            {&lt;br /&gt;        propValue = enquote(propValue);&lt;br /&gt;            }&lt;br /&gt;            queryParts.push(propPrefix + propName + propOperator + propValue);&lt;br /&gt;            querySeparators.push(arrAndOrKeywords[propAndOrSelect.selectedIndex]);&lt;br /&gt; &lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; query = ConcatenateQueryPartsWithSeparator(querySeparators, queryParts);&lt;br /&gt; &lt;br /&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (queryParts.length &amp;gt; 1)&lt;br /&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="str"&gt;'('&lt;/span&gt; + query + &lt;span class="str"&gt;')'&lt;/span&gt;; &lt;br /&gt;    &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; query;&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; findElements2(idOuterTable, idAndQueryTextBox, idPhraseQueryTextBox, idOrQueryTextBox, idNotQueryTextBox,&lt;br /&gt;                      idPrefixScopeCheckBox, idPrefixLangsCheckBox, idResultTypeList,&lt;br /&gt;                      idPrefixPropNameSelect, idPrefixPropOperatorSelect,&lt;br /&gt;                      idPrefixPropValueTextBox, idPrefixPropAndOrSelect) {&lt;br /&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; inputFields = document.getElementById(idOuterTable).getElementsByTagName(&lt;span class="str"&gt;'input'&lt;/span&gt;);&lt;br /&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; selectFields = document.getElementById(idOuterTable).getElementsByTagName(&lt;span class="str"&gt;'select'&lt;/span&gt;);&lt;br /&gt; &lt;br /&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; elements = createEmptyElements();&lt;br /&gt;   &lt;br /&gt;    &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;var&lt;/span&gt; i = 0; i &amp;lt; inputFields.length; i++) {&lt;br /&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (matchRegex(idAndQueryTextBox, inputFields[i].id)) {&lt;br /&gt;            elements.AndQueryTextBox = inputFields[i];&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (matchRegex(idPhraseQueryTextBox, inputFields[i].id)) {&lt;br /&gt;            elements.PhraseQueryTextBox = inputFields[i];&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (matchRegex(idOrQueryTextBox, inputFields[i].id)) {&lt;br /&gt;            elements.OrQueryTextBox = inputFields[i];&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (matchRegex(idNotQueryTextBox, inputFields[i].id)) {&lt;br /&gt;            elements.NotQueryTextBox = inputFields[i];&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (matchRegex(idPrefixScopeCheckBox, inputFields[i].id)) {&lt;br /&gt;            elements.ScopeCheckBoxArray[elements.ScopeCheckBoxArray.length] = inputFields[i];&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (matchRegex(idPrefixLangsCheckBox, inputFields[i].id)) {&lt;br /&gt;            elements.LangCheckBoxArray[elements.LangCheckBoxArray.length] = inputFields[i];&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (matchRegex(idPrefixPropValueTextBox, inputFields[i].id)) {&lt;br /&gt;            elements.PropValueTextboxArray[elements.PropValueTextboxArray.length] = inputFields[i];&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    &lt;span class="kwrd"&gt;for&lt;/span&gt; (i = 0; i &amp;lt; selectFields.length; i++) {&lt;br /&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (matchRegex(idResultTypeList, selectFields[i].id)) {&lt;br /&gt;            elements.ResultTypeList = selectFields[i];&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (matchRegex(idPrefixPropNameSelect, selectFields[i].id)) {&lt;br /&gt;            elements.PropNameSelectArray[elements.PropNameSelectArray.length] = selectFields[i];&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (matchRegex(idPrefixPropOperatorSelect, selectFields[i].id)) {&lt;br /&gt;            elements.PropOperatorSelectArray[elements.PropOperatorSelectArray.length] = selectFields[i];&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (matchRegex(idPrefixPropAndOrSelect, selectFields[i].id)) {&lt;br /&gt;            elements.PropAndOrSelectArray[elements.PropAndOrSelectArray.length] = selectFields[i];&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (matchRegex(idPrefixPropValueTextBox, selectFields[i].id)) {&lt;br /&gt;            elements.PropValueTextboxArray[elements.PropValueTextboxArray.length] = selectFields[i];&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; elements;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-5931989198258840126?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/5931989198258840126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/12/sharepoint-2010-custom-advanced-search.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/5931989198258840126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/5931989198258840126'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/12/sharepoint-2010-custom-advanced-search.html' title='SharePoint 2010 Custom Advanced Search for Power Users'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-Ig0FnFTN2fs/Tvy-33Hg8NI/AAAAAAAAACo/IzRvTFnxG64/s72-c/image_thumb%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-4538059597409272139</id><published>2011-12-20T11:19:00.001-08:00</published><updated>2011-12-20T11:38:03.093-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Search'/><category scheme='http://www.blogger.com/atom/ns#' term='Managed Property'/><category scheme='http://www.blogger.com/atom/ns#' term='Powershell'/><category scheme='http://www.blogger.com/atom/ns#' term='Crawl Property'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2010'/><title type='text'>Add SharePoint 2010 Search Crawl and Managed Properties using PowerShell</title><content type='html'>&lt;p&gt;The following PowerShell script can be used to add Search Crawl properties and Managed properties.&amp;#160; The properties are added based on vales read from an XML file.&amp;#160; This script comes in handy if you have multiple properties you need to add to multiple environments.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:85c17342-7b6f-41fa-b1f0-51cf93030551" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;PowerShell Script&lt;/div&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;#script reads from xml file to add crawled properties and managed properties&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;cls&lt;/li&gt; &lt;li&gt;#add sharepoint cmdlets&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;if ( (Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null )&lt;/li&gt; &lt;li&gt;{    &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;      Add-PsSnapin Microsoft.SharePoint.PowerShell&lt;/li&gt; &lt;li&gt;}&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;#get the XML file&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;[System.Xml.XmlDocument] $XmlDoc = new-object System.Xml.XmlDocument&lt;/li&gt; &lt;li&gt;$file = resolve-path(&amp;quot;.&amp;#92;searchprop.xml&amp;quot;)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;if (!$file)&lt;/li&gt; &lt;li&gt;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        Write-Host &amp;quot;Could not find the configuration file specified. Aborting.&amp;quot; -ForegroundColor red    &lt;/li&gt; &lt;li&gt;        Break&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;}&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;write-host &amp;quot;Parsing file: &amp;quot; $file&lt;/li&gt; &lt;li&gt;$XmlDoc = [xml](Get-Content $file)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;#get the node containing the name of the search service application where you want to add properties&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;$sa = $XmlDoc.SearchProperties.ServiceName&lt;/li&gt; &lt;li&gt;$searchapp = Get-SPEnterpriseSearchServiceApplication $sa&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;#loop through crawled properties to check or add -- don&amp;#39;t add if it already exists&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;$CrawledPropNodeList = $XmlDoc.SearchProperties.CrawledProperties&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;foreach ($CrawledPropNode in $CrawledPropNodeList.CrawledProperty) &lt;/li&gt; &lt;li&gt;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    $SPCrawlProp = $CrawledPropNode.Name&lt;/li&gt; &lt;li&gt;    $SPCrawlPropType = $CrawledPropNode.Type&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;/li&gt; &lt;li&gt;    #Create Crawled Property if it doesn&amp;#39;t exist&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    if (!(Get-SPEnterpriseSearchMetadataCrawledProperty -SearchApplication $searchapp -Name $SPCrawlProp -ea &amp;quot;silentlycontinue&amp;quot;)) &lt;/li&gt; &lt;li&gt;    {&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        switch ($SPCrawlPropType) &lt;/li&gt; &lt;li&gt;        { &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &amp;quot;Text&amp;quot; {$crawlprop = New-SPEnterpriseSearchMetadataCrawledProperty -SearchApplication $searchapp -Category SharePoint -VariantType 31 -Name $SPCrawlProp -IsNameEnum $false -PropSet &amp;quot;00130329-0000-0130-c000-000000131346&amp;quot;} &lt;/li&gt; &lt;li&gt;        &amp;quot;Integer&amp;quot; {$crawlprop = New-SPEnterpriseSearchMetadataCrawledProperty -SearchApplication $searchapp -Category SharePoint -VariantType 20 -Name $SPCrawlProp -IsNameEnum $false -PropSet &amp;quot;00130329-0000-0130-c000-000000131346&amp;quot;}  &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &amp;quot;Decimal&amp;quot; {$crawlprop = New-SPEnterpriseSearchMetadataCrawledProperty -SearchApplication $searchapp -Category SharePoint -VariantType 5 -Name $SPCrawlProp -IsNameEnum $false -PropSet &amp;quot;00130329-0000-0130-c000-000000131346&amp;quot;}  &lt;/li&gt; &lt;li&gt;        &amp;quot;DateTime&amp;quot; {$crawlprop = New-SPEnterpriseSearchMetadataCrawledProperty -SearchApplication $searchapp -Category SharePoint -VariantType 64 -Name $SPCrawlProp -IsNameEnum $false -PropSet &amp;quot;00130329-0000-0130-c000-000000131346&amp;quot;} &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &amp;quot;YesNo&amp;quot; {$crawlprop = New-SPEnterpriseSearchMetadataCrawledProperty -SearchApplication $searchapp -Category SharePoint -VariantType 11 -Name $SPCrawlProp -IsNameEnum $false -PropSet &amp;quot;00130329-0000-0130-c000-000000131346&amp;quot;} &lt;/li&gt; &lt;li&gt;        default {$crawlprop = New-SPEnterpriseSearchMetadataCrawledProperty -SearchApplication $searchapp -Category SharePoint -VariantType 31 -Name $SPCrawlProp -IsNameEnum $false -PropSet &amp;quot;00130329-0000-0130-c000-000000131346&amp;quot;} &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        }&lt;/li&gt; &lt;li&gt;    }&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;}&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;#now that the crawled properties exist, loop through managed properties and add&lt;/li&gt; &lt;li&gt;$PropertyNodeList = $XmlDoc.SearchProperties.ManagedProperties&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;foreach ($PropertyNode in $PropertyNodeList.ManagedProperty) &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;{&lt;/li&gt; &lt;li&gt;    $SharePointProp = $PropertyNode.Name&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    $SharePointPropType = $PropertyNode.Type&lt;/li&gt; &lt;li&gt;    $SharePointPropMapList = $PropertyNode.Map&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    #add managed property&lt;/li&gt; &lt;li&gt;    #remove it if it already exists&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    if ($mp = Get-SPEnterpriseSearchMetadataManagedProperty -SearchApplication $searchapp -Identity $SharePointProp -ea &amp;quot;silentlycontinue&amp;quot;)&lt;/li&gt; &lt;li&gt;    {&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;         #$mp | Remove-SPEnterpriseSearchMetadataManagedProperty -Confirm&lt;/li&gt; &lt;li&gt;        $mp.DeleteAllMappings()&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        $mp.Delete()&lt;/li&gt; &lt;li&gt;        $searchapp.Update()&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    }&lt;/li&gt; &lt;li&gt;    New-SPEnterpriseSearchMetadataManagedProperty -SearchApplication $searchapp -Name $SharePointProp -Type $SharePointPropType&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    $mp = Get-SPEnterpriseSearchMetadataManagedProperty -SearchApplication $searchapp -Identity $SharePointProp&lt;/li&gt; &lt;li&gt;    #add multiple crawled property mappings&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    foreach ($SharePointPropMap in $SharePointPropMapList) &lt;/li&gt; &lt;li&gt;    {&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        $SPMapCat = $SharePointPropMap.Category&lt;/li&gt; &lt;li&gt;        $SPMapName = $SharePointPropMap.InnerText&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        $cat = Get-SPEnterpriseSearchMetadataCategory –SearchApplication $searchapp –Identity $SPMapCat&lt;/li&gt; &lt;li&gt;        $prop = Get-SPEnterpriseSearchMetadataCrawledProperty -SearchApplication $searchapp -Category $cat -Name $SPMapName&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        New-SPEnterpriseSearchMetadataMapping -SearchApplication $searchapp -CrawledProperty $prop -ManagedProperty $mp&lt;/li&gt; &lt;li&gt;    }&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Here’s a sample of the XML file where the properties to be added can be read from:&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:1f7ed848-e5d9-4002-bfb2-c9284005f3b3" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;searchprop.xml Sample File&lt;/div&gt; &lt;div style="background: #fff; max-height: 400px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a31515"&gt;xml&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;version&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;1.0&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;encoding&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;utf-8&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;?&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;SearchProperties&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;ServiceName&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;Search Service Application&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;ServiceName&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;CrawledProperties&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;CrawledProperty&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Type&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;Text&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;ows_SiteDescription&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;CrawledProperty&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Type&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;Decimal&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;ows_MemberCount&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;CrawledProperty&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Type&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;Text&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;ows_SiteURL&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;CrawledProperty&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Type&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;Decimal&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;ows_SiteHits&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;CrawledProperty&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Type&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;YesNo&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;ows_ProjSensitive&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;CrawledProperty&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Type&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;DateTime&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;ows_ProjStartDate&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;CrawledProperty&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Type&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;Text&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;ows_ProjectName&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;CrawledProperties&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;ManagedProperties&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;ManagedProperty&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Type&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;1&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;XYZSiteDesc&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Map&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Category&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;SharePoint&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;ows_SiteDescription&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Map&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;ManagedProperty&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;ManagedProperty&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Type&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;3&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;XYZMembers&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Map&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Category&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;SharePoint&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;ows_MemberCount&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Map&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;ManagedProperty&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;ManagedProperty&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Type&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;1&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;XYZSiteUrl&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Map&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Category&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;SharePoint&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;ows_SiteURL&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Map&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;ManagedProperty&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;ManagedProperty&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Type&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;3&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;XYZSiteHits&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Map&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Category&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;SharePoint&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;ows_SiteHits&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Map&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;ManagedProperty&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;ManagedProperty&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Type&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;5&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;XYZProjectSecurity&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Map&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Category&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;SharePoint&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;ows_ProjSensitive&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Map&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;ManagedProperty&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;ManagedProperty&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Type&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;4&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;XYZProjectStartDate&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Map&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Category&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;SharePoint&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;ows_ProjStartDate&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Map&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;ManagedProperty&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;ManagedProperty&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Type&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;1&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;XYZProjectName&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Map&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Category&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;Basic&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;urn:schemas.microsoft.com:fulltextqueryinfo:displaytitle&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Map&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;      &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Map&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;Category&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;SharePoint&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;ows_Title&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;Map&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;ManagedProperty&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;  &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;ManagedProperties&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;SearchProperties&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt; &lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;h5&gt;Note:&amp;#160; The PowerShell script and XML file should be placed in same folder prior to running.&lt;/h5&gt;  &lt;h4&gt;References:&lt;/h4&gt;  &lt;p&gt;Technet link for cmdlet &lt;a href="http://technet.microsoft.com/en-us/library/ff608064.aspx" target="_blank"&gt;New-SPEnterpriseSearchMetadataCrawledProperty&lt;/a&gt; to add a new crawl property.&lt;/p&gt;  &lt;p&gt;Technet link for cmdlet &lt;a href="http://technet.microsoft.com/en-us/library/ff608089.aspx" target="_blank"&gt;New-SPEnterpriseSearchMetadataManagedProperty&lt;/a&gt; to add new managed property.&lt;/p&gt;  &lt;p&gt;Technet link for cmdlet &lt;a href="http://technet.microsoft.com/en-us/library/ff608017.aspx" target="_blank"&gt;New-SPEnterpriseSearchMetadataMapping&lt;/a&gt; to add new mapping to a managed property.&lt;/p&gt;  &lt;h5&gt;Managed Property type key values are as follows:&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;Text = 1 &lt;/li&gt;    &lt;li&gt;Integer = 2 &lt;/li&gt;    &lt;li&gt;Decimal = 3 &lt;/li&gt;    &lt;li&gt;DateTime = 4 &lt;/li&gt;    &lt;li&gt;YesNo = 5 &lt;/li&gt;    &lt;li&gt;Binary = 6 &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-4538059597409272139?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/4538059597409272139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/12/to-add-sharepoint-2010-search-crawl-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/4538059597409272139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/4538059597409272139'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/12/to-add-sharepoint-2010-search-crawl-and.html' title='Add SharePoint 2010 Search Crawl and Managed Properties using PowerShell'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-8431511336120564707</id><published>2011-09-30T14:44:00.001-07:00</published><updated>2011-09-30T14:44:27.823-07:00</updated><title type='text'>SharePoint Site Collection or Sub Site?</title><content type='html'>&lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="108"&gt;         &lt;p&gt;&lt;b&gt;Option&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="264"&gt;         &lt;p&gt;&lt;b&gt;Pros&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="259"&gt;         &lt;p&gt;&lt;b&gt;Cons&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;         &lt;p&gt;Provision a Site Collection&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="264"&gt;         &lt;ul&gt;           &lt;li&gt;More scalable than Sub Sites through management of quotas and content databases.              &lt;ul&gt;               &lt;li&gt;Quotas are managed at the site collection level &lt;/li&gt;                &lt;li&gt;Maximum size can be the size of the content database &lt;/li&gt;                &lt;li&gt;When sub sites grow too large, they need to be moved to or promoted to a site collection. This isn’t case if site is already a site collection. &lt;/li&gt;             &lt;/ul&gt;           &lt;/li&gt;            &lt;li&gt;Full fidelity backups are only possible at the Site Collection level &lt;/li&gt;            &lt;li&gt;Site Collections allow security groups and permissions to be isolated from each other &lt;/li&gt;            &lt;li&gt;You can prevent access to certain Feature functionality. &lt;/li&gt;            &lt;li&gt;It’s easier to track and report on the site's lifecycle at the site collection level &lt;/li&gt;            &lt;li&gt;Content type hub removes limitation from previous version of SharePoint of not being able to share content types and site columns across site collections. &lt;/li&gt;            &lt;li&gt;Any sub sites created will inherit the site collection permissions, navigation, and branding &lt;/li&gt;         &lt;/ul&gt;       &lt;/td&gt;        &lt;td valign="top" width="259"&gt;         &lt;ul&gt;           &lt;li&gt;No permission inheritance since it is top level site. &lt;/li&gt;            &lt;li&gt;Security Management is more complex with Site Collections              &lt;ul&gt;               &lt;li&gt;Difficult to see what access a user has across Site Collection &lt;/li&gt;                &lt;li&gt;No OOTB way to synchronize across Site Collections &lt;/li&gt;             &lt;/ul&gt;           &lt;/li&gt;            &lt;li&gt;Inconsistent Navigation which would require creation of a SharePoint Feature Staple (code) &lt;/li&gt;            &lt;li&gt;Inconsistent branding would require creation of a SharePoint Feature Staple (code) &lt;/li&gt;            &lt;li&gt;Search Settings must be manually (or programmatically) synchronized across site collections &lt;/li&gt;            &lt;li&gt;Site Collections can only be provisioned via the Central Administration (CA) Site where only farm administrators have access. If you don’t want team who provisions sites should to have access to CA, this would require one of the following:              &lt;ul&gt;               &lt;li&gt;Coded provisioning solution &lt;/li&gt;                &lt;li&gt;Third Party Provisioning solution &lt;/li&gt;                &lt;li&gt;Third party administration tool with security trimmed administrative interface &lt;/li&gt;                &lt;li&gt;Multi-tenancy enablement which would provide a minimal view of CA &lt;/li&gt;             &lt;/ul&gt;           &lt;/li&gt;         &lt;/ul&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;         &lt;p&gt;Provision a Sub Site&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="264"&gt;         &lt;ul&gt;           &lt;li&gt;Inherits security from parent site &lt;/li&gt;            &lt;li&gt;Inherits branding from parent site &lt;/li&gt;            &lt;li&gt;Inherits navigation from parent site &lt;/li&gt;            &lt;li&gt;Inherits search settings &lt;/li&gt;            &lt;li&gt;Can aggregate data throughout your site hierarchy using Web Parts like the Content Query Web Part, Data View Web Part and other data aggregation Web Parts &lt;/li&gt;         &lt;/ul&gt;       &lt;/td&gt;        &lt;td valign="top" width="259"&gt;         &lt;ul&gt;           &lt;li&gt;Do not scale well which may require a move              &lt;ul&gt;               &lt;li&gt;Sub sites all exist in the same site collection container so if two sub-sites grow beyond a manageable size for a single site collection, that container cannot scale out its storage without breaking the collection apart into several site collections and facing other challenge &lt;/li&gt;                &lt;li&gt;Moving sub sites is an administratively difficult task (may require a third party tool to manage &lt;/li&gt;                &lt;li&gt;Moving sub sites with workflows attached breaks workflow history &lt;/li&gt;                &lt;li&gt;Moving sub sites breaks URLs and links &lt;/li&gt;             &lt;/ul&gt;           &lt;/li&gt;         &lt;/ul&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-8431511336120564707?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/8431511336120564707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/09/sharepoint-site-collection-or-sub-site.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/8431511336120564707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/8431511336120564707'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/09/sharepoint-site-collection-or-sub-site.html' title='SharePoint Site Collection or Sub Site?'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-7273517457507941953</id><published>2011-09-30T14:28:00.001-07:00</published><updated>2011-09-30T14:28:54.402-07:00</updated><title type='text'>Disable Social Notification Emails in SharePoint 2010 Using PowerShell</title><content type='html'>&lt;p&gt;Had client who wanted to pilot SharePoint 2010 User profiles for a select group of users.&amp;#160; They wanted to import all users from AD, but didn’t didn’t want non-pilot users to get e-mail notification of new colleagues as result of the notification timer job so I wrote below PowerShell script to turn this particular notification off.&lt;/p&gt;  &lt;pre class="csharpcode"&gt;Add-PSSnapin Microsoft.SharePoint.Powershell&lt;br /&gt;#Set up &lt;span class="kwrd"&gt;default&lt;/span&gt; variables&lt;br /&gt;#My Site URL&lt;br /&gt;&lt;br /&gt;$mySiteUrl = &lt;span class="str"&gt;&amp;quot;https://employeenetwork-dev.massmutual.com&amp;quot;&lt;/span&gt;&lt;br /&gt;  &lt;br /&gt;#Get site objects and connect to User Profile Manager service  &lt;br /&gt;$site = Get-SPSite $mySiteUrl  &lt;br /&gt;$context = Get-SPServiceContext $site  &lt;br /&gt;$profileManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($context)&lt;br /&gt; &lt;br /&gt;$profiles = $profileManager.GetEnumerator()&lt;br /&gt; &lt;br /&gt;&lt;span class="kwrd"&gt;foreach&lt;/span&gt; ($userProfile &lt;span class="kwrd"&gt;in&lt;/span&gt; $profiles) {&lt;br /&gt;$userProfile[&lt;span class="str"&gt;&amp;quot;SPS-EmailOptin&amp;quot;&lt;/span&gt;].Value = 010&lt;br /&gt;$userProfile.Commit()&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-7273517457507941953?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/7273517457507941953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/09/disable-social-notification-emails-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/7273517457507941953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/7273517457507941953'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/09/disable-social-notification-emails-in.html' title='Disable Social Notification Emails in SharePoint 2010 Using PowerShell'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-6997146010314804179</id><published>2011-09-30T14:05:00.001-07:00</published><updated>2011-09-30T14:05:53.005-07:00</updated><title type='text'>Swish Affect in SharePoint 2010 Publishing PageLayout</title><content type='html'>&lt;p&gt;Playing with jQuery and SharePoint 2010 and created an IPad like swish/slider affect with following single pagelayout and CSS – Take a look at the pagelayout for CSS and jQuey file locations where you can add to the hive or change references and store files in a folder on the site (you can download latest jquery.easing files from the jQuery plugin site &lt;a title="http://gsgd.co.uk/sandbox/jquery/easing/" href="http://gsgd.co.uk/sandbox/jquery/easing/"&gt;http://gsgd.co.uk/sandbox/jquery/easing/&lt;/a&gt; and see the strict jquery demo site which gave me the idea here &lt;a title="http://tympanus.net/codrops/2010/06/02/smooth-vertical-or-horizontal-page-scrolling-with-jquery/" href="http://tympanus.net/codrops/2010/06/02/smooth-vertical-or-horizontal-page-scrolling-with-jquery/"&gt;http://tympanus.net/codrops/2010/06/02/smooth-vertical-or-horizontal-page-scrolling-with-jquery/&lt;/a&gt;).&amp;#160; What’s happening -- CSS stretches 1 page to give affect that you’re scrolling 3 pages.&amp;#160; I added 3 web part zones and wrapped with Classes to show only that portion.&amp;#160; In edit mode, all three web part zones are displayed in a single page view which required a separate CSS reference for edit mode.&amp;#160; This is fun but think about performance on home page before loading it up with web parts.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;PAGE LAYOUT:&lt;/strong&gt;&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&amp;lt;%@ Page language=&lt;span class="str"&gt;&amp;quot;C#&amp;quot;&lt;/span&gt;   Inherits=&lt;span class="str"&gt;&amp;quot;Microsoft.SharePoint.Publishing.PublishingLayoutPage,Microsoft.SharePoint.Publishing,Version=14.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c&amp;quot;&lt;/span&gt; %&amp;gt;&lt;br /&gt;&amp;lt;%@ Register Tagprefix=&lt;span class="str"&gt;&amp;quot;SharePointWebControls&amp;quot;&lt;/span&gt; Namespace=&lt;span class="str"&gt;&amp;quot;Microsoft.SharePoint.WebControls&amp;quot;&lt;/span&gt; Assembly=&lt;span class="str"&gt;&amp;quot;Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot;&lt;/span&gt; %&amp;gt; &lt;br /&gt;&amp;lt;%@ Register Tagprefix=&lt;span class="str"&gt;&amp;quot;WebPartPages&amp;quot;&lt;/span&gt; Namespace=&lt;span class="str"&gt;&amp;quot;Microsoft.SharePoint.WebPartPages&amp;quot;&lt;/span&gt; Assembly=&lt;span class="str"&gt;&amp;quot;Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot;&lt;/span&gt; %&amp;gt; &lt;br /&gt;&amp;lt;%@ Register Tagprefix=&lt;span class="str"&gt;&amp;quot;PublishingWebControls&amp;quot;&lt;/span&gt; Namespace=&lt;span class="str"&gt;&amp;quot;Microsoft.SharePoint.Publishing.WebControls&amp;quot;&lt;/span&gt; Assembly=&lt;span class="str"&gt;&amp;quot;Microsoft.SharePoint.Publishing, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot;&lt;/span&gt; %&amp;gt; &lt;br /&gt;&amp;lt;%@ Register Tagprefix=&lt;span class="str"&gt;&amp;quot;PublishingNavigation&amp;quot;&lt;/span&gt; Namespace=&lt;span class="str"&gt;&amp;quot;Microsoft.SharePoint.Publishing.Navigation&amp;quot;&lt;/span&gt; Assembly=&lt;span class="str"&gt;&amp;quot;Microsoft.SharePoint.Publishing, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot;&lt;/span&gt; %&amp;gt;&lt;br /&gt;&amp;lt;asp:Content ID=&lt;span class="str"&gt;&amp;quot;Content1&amp;quot;&lt;/span&gt; ContentPlaceholderID=&lt;span class="str"&gt;&amp;quot;PlaceHolderAdditionalPageHead&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;        &amp;lt;ContentTemplate&amp;gt;&lt;br /&gt;            &amp;lt;style type=&lt;span class="str"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                    .ms-pagetitleareaframe table, .ms-titleareaframe&lt;br /&gt;                    {&lt;br /&gt;                        background: none;&lt;br /&gt;                        height: 10px;&lt;br /&gt;                        overflow:hidden;&lt;br /&gt;                    }&lt;br /&gt;                    .ms-pagetitle, .ms-titlearea&lt;br /&gt;                    {&lt;br /&gt;                        display:none;&lt;br /&gt;                    }&lt;br /&gt;            &amp;lt;/style&amp;gt;&lt;br /&gt;            &amp;lt;SharePointWebControls:CssRegistration ID=&lt;span class="str"&gt;&amp;quot;CssRegistration1&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;&amp;lt;% $SPUrl:~sitecollection/Style Library/~language/Core Styles/pageLayouts.css %&amp;gt;&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;/&amp;gt;&lt;br /&gt;            &amp;lt;SharePointWebControls:CssRegistration ID=&lt;span class="str"&gt;&amp;quot;CssRegistrationScroll&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;&amp;lt;% $SPUrl:~sitecollection/_layouts/1033/styles/mmbranding/mmscroll.css %&amp;gt;&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; /&amp;gt;&lt;br /&gt;            &amp;lt;PublishingWebControls:editmodepanel ID=&lt;span class="str"&gt;&amp;quot;Editmodepanel1&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                &amp;lt;!-- Styles &lt;span class="kwrd"&gt;for&lt;/span&gt; edit mode only--&amp;gt;&lt;br /&gt;                &amp;lt;SharePointWebControls:CssRegistration ID=&lt;span class="str"&gt;&amp;quot;CssRegistration2&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;&amp;lt;% $SPUrl:~sitecollection/Style Library/~language/Core Styles/zz2_editMode.css %&amp;gt;&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;/&amp;gt;&lt;br /&gt;            &amp;lt;/PublishingWebControls:editmodepanel&amp;gt;&lt;br /&gt;        &amp;lt;/ContentTemplate&amp;gt;&lt;br /&gt;    &amp;lt;SharePointWebControls:UIVersionedContent ID=&lt;span class="str"&gt;&amp;quot;UIVersionedContent1&amp;quot;&lt;/span&gt; UIVersion=&lt;span class="str"&gt;&amp;quot;4&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;        &amp;lt;/SharePointWebControls:UIVersionedContent&amp;gt;&lt;br /&gt;        &amp;lt;ContentTemplate&amp;gt;&lt;br /&gt;            &amp;lt;style type=&lt;span class="str"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                .v4master #s4-leftpanel { display: none; }&lt;br /&gt;                .v4master .s4-ca { margin-left: 0px; }&lt;br /&gt;            &amp;lt;/style&amp;gt;&lt;br /&gt;            &amp;lt;SharePointWebControls:CssRegistration ID=&lt;span class="str"&gt;&amp;quot;CssRegistration3&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;&amp;lt;% $SPUrl:~sitecollection/Style Library/~language/Core Styles/page-layouts-21.css %&amp;gt;&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;/&amp;gt;&lt;br /&gt;            &amp;lt;PublishingWebControls:EditModePanel ID=&lt;span class="str"&gt;&amp;quot;EditModePanel3&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                &amp;lt;!-- Styles &lt;span class="kwrd"&gt;for&lt;/span&gt; edit mode only--&amp;gt;&lt;br /&gt;                &amp;lt;SharePointWebControls:CssRegistration ID=&lt;span class="str"&gt;&amp;quot;CssRegistration4&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;&amp;lt;% $SPUrl:~sitecollection/Style Library/~language/Core Styles/edit-mode-21.css %&amp;gt;&amp;quot;&lt;/span&gt;&lt;br /&gt;                    After=&lt;span class="str"&gt;&amp;quot;&amp;lt;% $SPUrl:~sitecollection/Style Library/~language/Core Styles/page-layouts-21.css %&amp;gt;&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;/&amp;gt;&lt;br /&gt;                &amp;lt;SharePointWebControls:CssRegistration ID=&lt;span class="str"&gt;&amp;quot;CssRegistrationScrollEdit&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;&amp;lt;% $SPUrl:~sitecollection/_layouts/1033/styles/xyzbranding/xyzscrolledit.css %&amp;gt;&amp;quot;&lt;/span&gt; &lt;br /&gt;                    After=&lt;span class="str"&gt;&amp;quot;&amp;lt;% $SPUrl:~sitecollection/_layouts/1033/styles/xyzbranding/xyzscroll.css %&amp;gt;&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;/&amp;gt;&lt;br /&gt;            &amp;lt;/PublishingWebControls:EditModePanel&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;/ContentTemplate&amp;gt;&lt;br /&gt;    &amp;lt;/asp:Content&amp;gt;&lt;br /&gt;&amp;lt;asp:Content ContentPlaceholderID=&lt;span class="str"&gt;&amp;quot;PlaceHolderPageTitle&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;    &amp;lt;SharePointWebControls:FieldValue id=&lt;span class="str"&gt;&amp;quot;PageTitle&amp;quot;&lt;/span&gt; FieldName=&lt;span class="str"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;/&amp;gt;&lt;br /&gt;&amp;lt;/asp:Content&amp;gt;&lt;br /&gt;&amp;lt;asp:Content ContentPlaceholderID=&lt;span class="str"&gt;&amp;quot;PlaceHolderPageTitleInTitleArea&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;    &amp;lt;SharePointWebControls:TextField ID=&lt;span class="str"&gt;&amp;quot;TextField2&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; FieldName=&lt;span class="str"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt;/&amp;gt;&lt;br /&gt;&amp;lt;/asp:Content&amp;gt;&lt;br /&gt;&amp;lt;asp:Content ContentPlaceHolderId=&lt;span class="str"&gt;&amp;quot;PlaceHolderTitleBreadcrumb&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt; &lt;br /&gt;    &amp;lt;SharePointWebControls:VersionedPlaceHolder ID=&lt;span class="str"&gt;&amp;quot;VersionedPlaceHolder1&amp;quot;&lt;/span&gt; UIVersion=&lt;span class="str"&gt;&amp;quot;3&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt; &lt;br /&gt;    &amp;lt;/SharePointWebControls:VersionedPlaceHolder&amp;gt;&lt;br /&gt;    &amp;lt;SharePointWebControls:UIVersionedContent ID=&lt;span class="str"&gt;&amp;quot;UIVersionedContent2&amp;quot;&lt;/span&gt; UIVersion=&lt;span class="str"&gt;&amp;quot;4&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt; &lt;br /&gt;    &amp;lt;/SharePointWebControls:UIVersionedContent&amp;gt;&lt;br /&gt;    &amp;lt;ContentTemplate&amp;gt; &lt;br /&gt;    &amp;lt;SharePointWebControls:ListSiteMapPath ID=&lt;span class="str"&gt;&amp;quot;ListSiteMapPath1&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; SiteMapProviders=&lt;span class="str"&gt;&amp;quot;CurrentNavigation&amp;quot;&lt;/span&gt; RenderCurrentNodeAsLink=&lt;span class="str"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; PathSeparator=&lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; CssClass=&lt;span class="str"&gt;&amp;quot;s4-breadcrumb&amp;quot;&lt;/span&gt; NodeStyle-CssClass=&lt;span class="str"&gt;&amp;quot;s4-breadcrumbNode&amp;quot;&lt;/span&gt; CurrentNodeStyle-CssClass=&lt;span class="str"&gt;&amp;quot;s4-breadcrumbCurrentNode&amp;quot;&lt;/span&gt; RootNodeStyle-CssClass=&lt;span class="str"&gt;&amp;quot;s4-breadcrumbRootNode&amp;quot;&lt;/span&gt; NodeImageOffsetX=0 NodeImageOffsetY=353 NodeImageWidth=16 NodeImageHeight=16 NodeImageUrl=&lt;span class="str"&gt;&amp;quot;/_layouts/images/fgimg.png&amp;quot;&lt;/span&gt; HideInteriorRootNodes=&lt;span class="str"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; SkipLinkText=&lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;/&amp;gt; &amp;lt;/ContentTemplate&amp;gt; &amp;lt;/asp:Content&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;asp:Content ContentPlaceHolderId=&lt;span class="str"&gt;&amp;quot;PlaceHolderMain&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;SharePointWebControls:UIVersionedContent ID=&lt;span class="str"&gt;&amp;quot;UIVersionedContent7&amp;quot;&lt;/span&gt; UIVersion=&lt;span class="str"&gt;&amp;quot;4&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;        &amp;lt;ContentTemplate&amp;gt;&lt;br /&gt;                &amp;lt;PublishingWebControls:EditModePanel ID=&lt;span class="str"&gt;&amp;quot;EditModePanel2&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; CssClass=&lt;span class="str"&gt;&amp;quot;edit-mode-panel&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                    &amp;lt;SharePointWebControls:TextField ID=&lt;span class="str"&gt;&amp;quot;TextField1&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; FieldName=&lt;span class="str"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt; /&amp;gt;&lt;br /&gt;                &amp;lt;/PublishingWebControls:EditModePanel&amp;gt;&lt;br /&gt;        &amp;lt;/ContentTemplate&amp;gt;&lt;br /&gt;    &amp;lt;/SharePointWebControls:UIVersionedContent&amp;gt;&lt;br /&gt;        &amp;lt;script type=&lt;span class="str"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; src=&lt;span class="str"&gt;&amp;quot;http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;        &lt;br /&gt;        &amp;lt;script type=&lt;span class="str"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; src=&lt;span class="str"&gt;&amp;quot;/_layouts/xyzbranding/jquery.easing.1.3.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;    &amp;lt;script type=&lt;span class="str"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;        $(function () {&lt;br /&gt;            $(&lt;span class="str"&gt;'ul.nav a'&lt;/span&gt;).bind(&lt;span class="str"&gt;'click'&lt;/span&gt;, function (&lt;span class="kwrd"&gt;event&lt;/span&gt;) {&lt;br /&gt;                var $anchor = $(&lt;span class="kwrd"&gt;this&lt;/span&gt;);&lt;br /&gt;                &lt;span class="rem"&gt;/*&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;                if you want to use one of the easing effects:&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;                $('html, body').stop().animate({&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;                scrollLeft: $($anchor.attr('href')).offset().left&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;                }, 1500,'easeInOutExpo');&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;                */&lt;/span&gt;&lt;br /&gt;                $(&lt;span class="str"&gt;'html, body'&lt;/span&gt;).stop().animate({&lt;br /&gt;                    scrollLeft: $($anchor.attr(&lt;span class="str"&gt;'href'&lt;/span&gt;)).offset().left&lt;br /&gt;                }, 1000);&lt;br /&gt;                &lt;span class="kwrd"&gt;event&lt;/span&gt;.preventDefault();&lt;br /&gt;            });&lt;br /&gt;        });&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;    &amp;lt;div &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;section home&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;section1&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;    &amp;lt;table&amp;gt;&lt;br /&gt;        &amp;lt;tr&amp;gt;&lt;br /&gt;            &amp;lt;td &amp;gt;&lt;br /&gt;                &amp;lt;table&amp;gt;                            &lt;br /&gt;                    &amp;lt;tr&amp;gt;&lt;br /&gt;                        &amp;lt;td id=&lt;span class="str"&gt;&amp;quot;_invisibleIfEmpty&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;_invisibleIfEmpty&amp;quot;&lt;/span&gt; valign=&lt;span class="str"&gt;&amp;quot;top&amp;quot;&lt;/span&gt; height=&lt;span class="str"&gt;&amp;quot;100%&amp;quot;&lt;/span&gt;&amp;gt; &lt;br /&gt;                        &amp;lt;WebPartPages:WebPartZone runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; Title=&lt;span class="str"&gt;&amp;quot;&amp;lt;%$Resources:cms,WebPartZoneTitle_CenterLeft%&amp;gt;&amp;quot;&lt;/span&gt; ID=&lt;span class="str"&gt;&amp;quot;CenterLeftColumn&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;ZoneTemplate&amp;gt;&amp;lt;/ZoneTemplate&amp;gt;&amp;lt;/WebPartPages:WebPartZone&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;                        &amp;lt;td id=&lt;span class="str"&gt;&amp;quot;_invisibleIfEmpty&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;_invisibleIfEmpty&amp;quot;&lt;/span&gt; valign=&lt;span class="str"&gt;&amp;quot;top&amp;quot;&lt;/span&gt; height=&lt;span class="str"&gt;&amp;quot;100%&amp;quot;&lt;/span&gt;&amp;gt; &lt;br /&gt;                        &amp;lt;WebPartPages:WebPartZone runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; Title=&lt;span class="str"&gt;&amp;quot;&amp;lt;%$Resources:cms,WebPartZoneTitle_Center%&amp;gt;&amp;quot;&lt;/span&gt; ID=&lt;span class="str"&gt;&amp;quot;CenterColumn&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;ZoneTemplate&amp;gt;&amp;lt;/ZoneTemplate&amp;gt;&amp;lt;/WebPartPages:WebPartZone&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;                        &amp;lt;td id=&lt;span class="str"&gt;&amp;quot;_invisibleIfEmpty&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;_invisibleIfEmpty&amp;quot;&lt;/span&gt; valign=&lt;span class="str"&gt;&amp;quot;top&amp;quot;&lt;/span&gt; height=&lt;span class="str"&gt;&amp;quot;100%&amp;quot;&lt;/span&gt;&amp;gt; &lt;br /&gt;                        &amp;lt;WebPartPages:WebPartZone runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; Title=&lt;span class="str"&gt;&amp;quot;&amp;lt;%$Resources:cms,WebPartZoneTitle_CenterRight%&amp;gt;&amp;quot;&lt;/span&gt; ID=&lt;span class="str"&gt;&amp;quot;CenterRightColumn&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;ZoneTemplate&amp;gt;&amp;lt;/ZoneTemplate&amp;gt;&amp;lt;/WebPartPages:WebPartZone&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;                    &amp;lt;/tr&amp;gt;&lt;br /&gt;                &amp;lt;/table&amp;gt;&lt;br /&gt;            &amp;lt;/td&amp;gt;&lt;br /&gt;            &amp;lt;/tr&amp;gt;&lt;br /&gt;        &amp;lt;script language=&lt;span class="str"&gt;&amp;quot;javascript&amp;quot;&lt;/span&gt;&amp;gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;typeof&lt;/span&gt; (MSOLayout_MakeInvisibleIfEmpty) == &lt;span class="str"&gt;&amp;quot;function&amp;quot;&lt;/span&gt;) { MSOLayout_MakeInvisibleIfEmpty(); }&amp;lt;/script&amp;gt;&lt;br /&gt;    &amp;lt;/table&amp;gt;&lt;br /&gt;                &amp;lt;ul &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;nav&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                &amp;lt;li&amp;gt;1&amp;lt;/li&amp;gt;&lt;br /&gt;                &amp;lt;li&amp;gt;&amp;lt;a href=&lt;span class="str"&gt;&amp;quot;#section2&amp;quot;&lt;/span&gt;&amp;gt;2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;                &amp;lt;li&amp;gt;&amp;lt;a href=&lt;span class="str"&gt;&amp;quot;#section3&amp;quot;&lt;/span&gt;&amp;gt;3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;            &amp;lt;/ul&amp;gt;&lt;br /&gt;    &amp;lt;/div&amp;gt;&lt;br /&gt;    &amp;lt;div &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;section my&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;section2&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;    &amp;lt;table&amp;gt;&lt;br /&gt;        &amp;lt;tr&amp;gt;&lt;br /&gt;            &amp;lt;td&amp;gt;&lt;br /&gt;                &amp;lt;table&amp;gt;                            &lt;br /&gt;                    &amp;lt;tr&amp;gt;&lt;br /&gt;                        &amp;lt;td id=&lt;span class="str"&gt;&amp;quot;_invisibleIfEmpty&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;_invisibleIfEmpty&amp;quot;&lt;/span&gt; valign=&lt;span class="str"&gt;&amp;quot;top&amp;quot;&lt;/span&gt; height=&lt;span class="str"&gt;&amp;quot;100%&amp;quot;&lt;/span&gt;&amp;gt; &lt;br /&gt;                        &amp;lt;WebPartPages:WebPartZone runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; Title=&lt;span class="str"&gt;&amp;quot;CenterLeftMy&amp;quot;&lt;/span&gt; ID=&lt;span class="str"&gt;&amp;quot;CenterLeftMyColumn&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;ZoneTemplate&amp;gt;&amp;lt;/ZoneTemplate&amp;gt;&amp;lt;/WebPartPages:WebPartZone&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;                        &amp;lt;td id=&lt;span class="str"&gt;&amp;quot;_invisibleIfEmpty&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;_invisibleIfEmpty&amp;quot;&lt;/span&gt; valign=&lt;span class="str"&gt;&amp;quot;top&amp;quot;&lt;/span&gt; height=&lt;span class="str"&gt;&amp;quot;100%&amp;quot;&lt;/span&gt;&amp;gt; &lt;br /&gt;                        &amp;lt;WebPartPages:WebPartZone runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; Title=&lt;span class="str"&gt;&amp;quot;CenterMy&amp;quot;&lt;/span&gt; ID=&lt;span class="str"&gt;&amp;quot;CenterMyColumn&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;ZoneTemplate&amp;gt;&amp;lt;/ZoneTemplate&amp;gt;&amp;lt;/WebPartPages:WebPartZone&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;                        &amp;lt;td id=&lt;span class="str"&gt;&amp;quot;_invisibleIfEmpty&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;_invisibleIfEmpty&amp;quot;&lt;/span&gt; valign=&lt;span class="str"&gt;&amp;quot;top&amp;quot;&lt;/span&gt; height=&lt;span class="str"&gt;&amp;quot;100%&amp;quot;&lt;/span&gt;&amp;gt; &lt;br /&gt;                        &amp;lt;WebPartPages:WebPartZone runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; Title=&lt;span class="str"&gt;&amp;quot;CenterRightMy&amp;quot;&lt;/span&gt; ID=&lt;span class="str"&gt;&amp;quot;CenterRightMyColumn&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;ZoneTemplate&amp;gt;&amp;lt;/ZoneTemplate&amp;gt;&amp;lt;/WebPartPages:WebPartZone&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;                    &amp;lt;/tr&amp;gt;&lt;br /&gt;                &amp;lt;/table&amp;gt;&lt;br /&gt;            &amp;lt;/td&amp;gt;&lt;br /&gt;            &amp;lt;/tr&amp;gt;&lt;br /&gt;        &amp;lt;script language=&lt;span class="str"&gt;&amp;quot;javascript&amp;quot;&lt;/span&gt;&amp;gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;typeof&lt;/span&gt; (MSOLayout_MakeInvisibleIfEmpty) == &lt;span class="str"&gt;&amp;quot;function&amp;quot;&lt;/span&gt;) { MSOLayout_MakeInvisibleIfEmpty(); }&amp;lt;/script&amp;gt;&lt;br /&gt;    &amp;lt;/table&amp;gt;&lt;br /&gt;                  &amp;lt;ul &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;nav&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                &amp;lt;li&amp;gt;&amp;lt;a href=&lt;span class="str"&gt;&amp;quot;#section1&amp;quot;&lt;/span&gt;&amp;gt;1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;                &amp;lt;li&amp;gt;2&amp;lt;/li&amp;gt;&lt;br /&gt;                &amp;lt;li&amp;gt;&amp;lt;a href=&lt;span class="str"&gt;&amp;quot;#section3&amp;quot;&lt;/span&gt;&amp;gt;3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;            &amp;lt;/ul&amp;gt;&lt;br /&gt;    &amp;lt;/div&amp;gt;&lt;br /&gt;    &amp;lt;div &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;section home&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;section3&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;    &amp;lt;table&amp;gt;&lt;br /&gt;        &amp;lt;tr&amp;gt;&lt;br /&gt;            &amp;lt;td&amp;gt;&lt;br /&gt;                &amp;lt;table&amp;gt;                            &lt;br /&gt;                    &amp;lt;tr&amp;gt;&lt;br /&gt;                        &amp;lt;td id=&lt;span class="str"&gt;&amp;quot;_invisibleIfEmpty&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;_invisibleIfEmpty&amp;quot;&lt;/span&gt; valign=&lt;span class="str"&gt;&amp;quot;top&amp;quot;&lt;/span&gt; height=&lt;span class="str"&gt;&amp;quot;100%&amp;quot;&lt;/span&gt;&amp;gt; &lt;br /&gt;                        &amp;lt;WebPartPages:WebPartZone runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; Title=&lt;span class="str"&gt;&amp;quot;CenterLeftNews&amp;quot;&lt;/span&gt; ID=&lt;span class="str"&gt;&amp;quot;CenterLeftNewsColumn&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;ZoneTemplate&amp;gt;&amp;lt;/ZoneTemplate&amp;gt;&amp;lt;/WebPartPages:WebPartZone&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;                        &amp;lt;td id=&lt;span class="str"&gt;&amp;quot;_invisibleIfEmpty&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;_invisibleIfEmpty&amp;quot;&lt;/span&gt; valign=&lt;span class="str"&gt;&amp;quot;top&amp;quot;&lt;/span&gt; height=&lt;span class="str"&gt;&amp;quot;100%&amp;quot;&lt;/span&gt;&amp;gt; &lt;br /&gt;                        &amp;lt;WebPartPages:WebPartZone runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; Title=&lt;span class="str"&gt;&amp;quot;CenterNews&amp;quot;&lt;/span&gt; ID=&lt;span class="str"&gt;&amp;quot;CenterNewsColumn&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;ZoneTemplate&amp;gt;&amp;lt;/ZoneTemplate&amp;gt;&amp;lt;/WebPartPages:WebPartZone&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;                        &amp;lt;td id=&lt;span class="str"&gt;&amp;quot;_invisibleIfEmpty&amp;quot;&lt;/span&gt; name=&lt;span class="str"&gt;&amp;quot;_invisibleIfEmpty&amp;quot;&lt;/span&gt; valign=&lt;span class="str"&gt;&amp;quot;top&amp;quot;&lt;/span&gt; height=&lt;span class="str"&gt;&amp;quot;100%&amp;quot;&lt;/span&gt;&amp;gt; &lt;br /&gt;                        &amp;lt;WebPartPages:WebPartZone runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; Title=&lt;span class="str"&gt;&amp;quot;CenterRightNews&amp;quot;&lt;/span&gt; ID=&lt;span class="str"&gt;&amp;quot;CenterRightNewsColumn&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;ZoneTemplate&amp;gt;&amp;lt;/ZoneTemplate&amp;gt;&amp;lt;/WebPartPages:WebPartZone&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;                    &amp;lt;/tr&amp;gt;&lt;br /&gt;                &amp;lt;/table&amp;gt;&lt;br /&gt;            &amp;lt;/td&amp;gt;&lt;br /&gt;            &amp;lt;/tr&amp;gt;&lt;br /&gt;        &amp;lt;script language=&lt;span class="str"&gt;&amp;quot;javascript&amp;quot;&lt;/span&gt;&amp;gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;typeof&lt;/span&gt; (MSOLayout_MakeInvisibleIfEmpty) == &lt;span class="str"&gt;&amp;quot;function&amp;quot;&lt;/span&gt;) { MSOLayout_MakeInvisibleIfEmpty(); }&amp;lt;/script&amp;gt;&lt;br /&gt;    &amp;lt;/table&amp;gt;&lt;br /&gt;                 &amp;lt;ul &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;nav&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;                &amp;lt;li&amp;gt;&amp;lt;a href=&lt;span class="str"&gt;&amp;quot;#section1&amp;quot;&lt;/span&gt;&amp;gt;1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;                &amp;lt;li&amp;gt;&amp;lt;a href=&lt;span class="str"&gt;&amp;quot;#section2&amp;quot;&lt;/span&gt;&amp;gt;2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;                &amp;lt;li&amp;gt;3&amp;lt;/li&amp;gt;&lt;br /&gt;            &amp;lt;/ul&amp;gt;&lt;br /&gt;    &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/asp:Content&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;CSS:&lt;/strong&gt;&amp;#160; You’ll need to come up with your own images for the background or can get the black/white images from &lt;a title="http://tympanus.net/codrops/2010/06/02/smooth-vertical-or-horizontal-page-scrolling-with-jquery/" href="http://tympanus.net/codrops/2010/06/02/smooth-vertical-or-horizontal-page-scrolling-with-jquery/"&gt;http://tympanus.net/codrops/2010/06/02/smooth-vertical-or-horizontal-page-scrolling-with-jquery/&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;XYZScroll.CSS:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;*{&lt;br /&gt;    margin:0;&lt;br /&gt;    padding:0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;body{&lt;br /&gt;    background-color:transparent;&lt;br /&gt;    width:12000px !important;&lt;br /&gt;    position:absolute;&lt;br /&gt;    top:0px;&lt;br /&gt;    left:0px;&lt;br /&gt;    bottom:0px;&lt;br /&gt;    height:100%&lt;br /&gt;}&lt;br /&gt;BODY #s4-ribbonrow&lt;br /&gt;{&lt;br /&gt;    position:&lt;span class="kwrd"&gt;fixed&lt;/span&gt;;&lt;br /&gt;    z-index:99;&lt;br /&gt;    overflow:visible !important;&lt;br /&gt;}&lt;br /&gt;BODY #s4-titlerow&lt;br /&gt;{&lt;br /&gt;    position:&lt;span class="kwrd"&gt;fixed&lt;/span&gt;;&lt;br /&gt;    z-index:98;&lt;br /&gt;    margin-top:43px;&lt;br /&gt;}&lt;br /&gt;.section&lt;br /&gt;{&lt;br /&gt;    padding-top:134px;&lt;br /&gt;    bottom:0px;&lt;br /&gt;    width:4000px;&lt;br /&gt;    &lt;span class="kwrd"&gt;float&lt;/span&gt;:left;&lt;br /&gt;    height:900px;&lt;br /&gt;}&lt;br /&gt;.section h2{&lt;br /&gt;    margin:50px 0px 30px 50px;&lt;br /&gt;}&lt;br /&gt;.section table{&lt;br /&gt;    margin:0px 0px 0px 0px;&lt;br /&gt;}&lt;br /&gt;.home{&lt;br /&gt;    background:url(/_layouts/images/xyzbranding/black.jpg) no-repeat top left;&lt;br /&gt;}&lt;br /&gt;.my{&lt;br /&gt;    background:url(/_layouts/images/xyzbranding/white.jpg) no-repeat top left;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.news{&lt;br /&gt;    background:url(/_layouts/images/xyzbranding/black.jpg) no-repeat top left;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.section ul{&lt;br /&gt;    list-style:none;&lt;br /&gt;    margin:20px 0px 0px 550px;&lt;br /&gt;    font-weight:bold;&lt;br /&gt;    font-size:14pt;&lt;br /&gt;}&lt;br /&gt;.home ul li{&lt;br /&gt;    &lt;span class="kwrd"&gt;float&lt;/span&gt;:left;&lt;br /&gt;    padding:5px;&lt;br /&gt;    margin:5px;&lt;br /&gt;    color:#aaa;&lt;br /&gt;}&lt;br /&gt;.home ul li a{&lt;br /&gt;    display:block;&lt;br /&gt;    color:#f0f0f0;&lt;br /&gt;}&lt;br /&gt;.home ul li a:hover{&lt;br /&gt;    text-decoration:none;&lt;br /&gt;    color:#fff;&lt;br /&gt;}&lt;br /&gt;.my ul li{&lt;br /&gt;    &lt;span class="kwrd"&gt;float&lt;/span&gt;:left;&lt;br /&gt;    padding:5px;&lt;br /&gt;    margin:5px;&lt;br /&gt;    color:#aaa;&lt;br /&gt;}&lt;br /&gt;.my ul li a{&lt;br /&gt;    display:block;&lt;br /&gt;    color:#222;&lt;br /&gt;}&lt;br /&gt;.my ul li a:hover{&lt;br /&gt;    text-decoration:none;&lt;br /&gt;    color:#000;&lt;br /&gt;}&lt;br /&gt;.news ul li{&lt;br /&gt;    &lt;span class="kwrd"&gt;float&lt;/span&gt;:left;&lt;br /&gt;    padding:5px;&lt;br /&gt;    margin:5px;&lt;br /&gt;    color:#aaa;&lt;br /&gt;}&lt;br /&gt;.news ul li a{&lt;br /&gt;    display:block;&lt;br /&gt;    color:#222;&lt;br /&gt;}&lt;br /&gt;.news ul li a:hover{&lt;br /&gt;    text-decoration:none;&lt;br /&gt;    color:#000;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;XYZScrollEdit.CSS (for edit mode):&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;*{&lt;br /&gt;    margin:0;&lt;br /&gt;    padding:0;&lt;br /&gt;}&lt;br /&gt;body{&lt;br /&gt;    background:#000;&lt;br /&gt;    width:1400px !important;&lt;br /&gt;    top:0px;&lt;br /&gt;    left:0px;&lt;br /&gt;    bottom:0px;&lt;br /&gt;    overflow:visible !important;&lt;br /&gt;}&lt;br /&gt;.section{&lt;br /&gt;    margin:0px;&lt;br /&gt;    bottom:0px;&lt;br /&gt;    width:1400px;&lt;br /&gt;    height:100%;&lt;br /&gt;}&lt;br /&gt;.section table{&lt;br /&gt;    margin:0px 0px 0px 0px;&lt;br /&gt;    height:100%;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-6997146010314804179?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/6997146010314804179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/09/swish-affect-in-sharepoint-2010.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/6997146010314804179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/6997146010314804179'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/09/swish-affect-in-sharepoint-2010.html' title='Swish Affect in SharePoint 2010 Publishing PageLayout'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-7682700349158272991</id><published>2011-09-30T13:12:00.001-07:00</published><updated>2011-09-30T13:12:12.939-07:00</updated><title type='text'>Breaking Up SharePoint 2010 Social Tags</title><content type='html'>&lt;p&gt;If you ever need to break up the “Tags and&amp;#160; Notes” and “Like It” links on a SharePoint 2010 Master Page rendered by the GlobalSiteLink3 usercontrol, you could replace the reference on your master page with the following JavaScript and HTML.&amp;#160; I reflected the dll which renders these global links to find that it was simply rendering the JavaScript&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&amp;lt;asp:Content ContentPlaceholderID=&lt;span class="str"&gt;&amp;quot;PlaceHolderMain&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script type=&lt;span class="str"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;function SendTag() {&lt;br /&gt;&lt;br /&gt;SafeRunFunction(function () { TagDialogOpener.Open(encodeURI(window.location), document.title, &lt;span class="str"&gt;'0'&lt;/span&gt;); }, &lt;span class="str"&gt;'SocialData.js'&lt;/span&gt;, &lt;span class="str"&gt;'TagDialogOpener'&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function GetQuickTag() {&lt;br /&gt;&lt;br /&gt;SafeRunFunction(function () { var o = &lt;span class="kwrd"&gt;new&lt;/span&gt; SocialQuickTag(&lt;span class="str"&gt;'&amp;lt;%# this.ClientID %&amp;gt;'&lt;/span&gt;); o.url = encodeURI(window.location); o.title = document.title; o.tagged_text = &lt;span class="str"&gt;'Tagged this page with \u0027I Like It.\u0027'&lt;/span&gt;; o.failure_text = &lt;span class="str"&gt;'Failed tagging this page.'&lt;/span&gt;; o.replaceImg_style = &lt;span class="str"&gt;'border:0; left:-0px !important;top:-332px !important;position:absolute;'&lt;/span&gt;; o.AddQuickTag(0); }, &lt;span class="str"&gt;'SocialData.js'&lt;/span&gt;, &lt;span class="str"&gt;'SocialQuickTag'&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&amp;lt;script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;td &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;s4-socialdata-notif&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;ms-socialNotif-Container&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;ms-socialNotif-groupSeparator&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;a &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;ms-socialNotif&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;GetQuickTag&amp;quot;&lt;/span&gt; href=&lt;span class="str"&gt;&amp;quot;javascript:;&amp;quot;&lt;/span&gt; onclick=&lt;span class="str"&gt;&amp;quot;GetQuickTag();&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;Tags this page with &amp;amp;#39;I Like It.&amp;amp;#39; Tags make it easy to remember links and post items to your news feed.&amp;quot;&lt;/span&gt; &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;span&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;span style=&lt;span class="str"&gt;&amp;quot;height:32px;width:32px;position:relative;display:inline-block;overflow:hidden;&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;img style=&lt;span class="str"&gt;&amp;quot;border:0; left:-0px !important;top:-132px !important;position:absolute;&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;GetQuickTagImg&amp;quot;&lt;/span&gt; alt=&lt;span class="str"&gt;&amp;quot;Tags this page with &amp;amp;#39;I Like It.&amp;amp;#39; Tags make it easy to remember links and post items to your news feed.&amp;quot;&lt;/span&gt; src=&lt;span class="str"&gt;&amp;quot;/_layouts/images/mossfgimg.png&amp;quot;&lt;/span&gt;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/span&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;ms-socialNotif-text&amp;quot;&lt;/span&gt;&amp;gt;I Like It&amp;lt;/span&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/span&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;a &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;ms-socialNotif&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;TagsAndNotes&amp;quot;&lt;/span&gt; href=&lt;span class="str"&gt;&amp;quot;javascript:;&amp;quot;&lt;/span&gt; onclick=&lt;span class="str"&gt;&amp;quot;SendTag();&amp;quot;&lt;/span&gt; onmouseover=&lt;span class="str"&gt;&amp;quot;GetSocialNotification();&amp;quot;&lt;/span&gt; title=&lt;span class="str"&gt;&amp;quot;Tags help you remember links and classify the page. Notes are public comments. Tags and notes post to your news feed and work across different sites.&amp;quot;&lt;/span&gt; &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;span&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;span style=&lt;span class="str"&gt;&amp;quot;height:32px;width:32px;position:relative;display:inline-block;overflow:hidden;&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;img style=&lt;span class="str"&gt;&amp;quot;border:0; left:-0px !important;top:-300px !important;position:absolute;&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;TagsAndNotesImg&amp;quot;&lt;/span&gt; alt=&lt;span class="str"&gt;&amp;quot;Tags help you remember links and classify the page. Notes are public comments. Tags and notes post to your news feed and work across different sites.&amp;quot;&lt;/span&gt; src=&lt;span class="str"&gt;&amp;quot;/_layouts/images/mossfgimg.png&amp;quot;&lt;/span&gt;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/span&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;span &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;ms-socialNotif-text&amp;quot;&lt;/span&gt;&amp;gt;Tags&amp;lt;/span&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/span&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/td&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-7682700349158272991?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/7682700349158272991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/09/breaking-up-sharepoint-2010-social-tags.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/7682700349158272991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/7682700349158272991'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/09/breaking-up-sharepoint-2010-social-tags.html' title='Breaking Up SharePoint 2010 Social Tags'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-7895132979429143910</id><published>2011-09-30T12:46:00.001-07:00</published><updated>2011-09-30T12:50:37.624-07:00</updated><title type='text'>Master Page Feature Receiver</title><content type='html'>&lt;p&gt;If you have a visual studio 2010 project to deploy a master page and you want it applied during feature activation and unapplied when the feature is deactivated, use a feature receiver.&amp;#160; Visual Studio templates for SharePoint 2010 give you the ability to add a “Feature Receiver” which allows you to add some custom code to act on a feature at various phases of activation (for the master page, we only care about the “FeatureActivated” event and the “FeatureDeactivating” event).&lt;/p&gt;  &lt;p&gt;To add the feature receiver, from your Visual Studio Project’s Solution Explorer, right click on your feature name and click &lt;b&gt;Add Event Receiver&lt;/b&gt;. This automatically opens the receiver in the code window to edit. Replace the “FeatureActivated” and the “FeatureDeactivating” events with code in the following format (this code is for deploying to the web scope – you need to use the &lt;b&gt;SPSite&lt;/b&gt; object if deploying to the Site scope instead of the SPWeb object).&lt;/p&gt;  &lt;pre class="csharpcode"&gt;        &lt;span class="rem"&gt;// Uncomment the method below to handle the event raised after a feature has been activated.&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; FeatureActivated(SPFeatureReceiverProperties properties)&lt;br /&gt;        {&lt;br /&gt;            SPWeb currentWeb = properties.Feature.Parent &lt;span class="kwrd"&gt;as&lt;/span&gt; SPWeb;&lt;br /&gt;            Uri masterURI = &lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(currentWeb.Url + &lt;span class="str"&gt;&amp;quot;/_catalogs/masterpage/custom_v4.master&amp;quot;&lt;/span&gt;);&lt;br /&gt;            currentWeb.MasterUrl = masterURI.AbsolutePath;&lt;br /&gt;            currentWeb.CustomMasterUrl = masterURI.AbsolutePath;&lt;br /&gt;            currentWeb.Update();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    &lt;span class="rem"&gt;// Uncomment the method below to handle the event raised before a feature is deactivated.&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; FeatureDeactivating(SPFeatureReceiverProperties properties)&lt;br /&gt;        {&lt;br /&gt;            SPWeb currentWeb = properties.Feature.Parent &lt;span class="kwrd"&gt;as&lt;/span&gt; SPWeb;&lt;br /&gt;            Uri masterURI = &lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(currentWeb.Url + &lt;span class="str"&gt;&amp;quot;/_catalogs/masterpage/v4.master&amp;quot;&lt;/span&gt;);&lt;br /&gt;            currentWeb.MasterUrl = masterURI.AbsolutePath;&lt;br /&gt;            currentWeb.CustomMasterUrl = masterURI.AbsolutePath;&lt;br /&gt;            currentWeb.Update();&lt;br /&gt;        }&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The above code sets the Master Page to your custom master page when the feature is activated and sets it back to the default master page when it is deactivated.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;You should now have all that you need for deploying your custom brand files to your portal sites. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-7895132979429143910?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/7895132979429143910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/09/master-page-feature-receiver.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/7895132979429143910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/7895132979429143910'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/09/master-page-feature-receiver.html' title='Master Page Feature Receiver'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-3771706503716865070</id><published>2011-06-30T10:15:00.001-07:00</published><updated>2011-06-30T10:20:50.794-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CustomAction'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2010'/><title type='text'>Custom Site Actions Fun</title><content type='html'>&lt;p&gt;I recently had to update the Site Actions menu on a SharePoint 2010 Publishing site to override the standard &lt;strong&gt;New Page&lt;/strong&gt; item with my own custom create page action and hide the other publishing options like &lt;strong&gt;Manage Site Content and Structure&lt;/strong&gt;.&amp;#160; &lt;/p&gt;  &lt;p&gt;The lure was to first go to the Master Page and update site actions there but this is a publishing site so there’s little that will do.&lt;/p&gt;  &lt;p&gt;A quick google search brought back results about updating the &lt;strong&gt;CustomSiteActions.xml&lt;/strong&gt; in the &lt;strong&gt;Styles Library/Editing Menus&lt;/strong&gt; folder on the site.&amp;#160; Well that doesn’t help you either unless your on a MOSS 2007 site – the file is actually there in SP 2010 but only works for legacy purposes for upgraded SP 2007 sites.&lt;/p&gt;  &lt;p&gt;A second google search for the same terms with the addition of “MSDN” in the search string brought me to all the MSDN articles to change site actions via a Visual Studio 2010 built feature.&lt;/p&gt;  &lt;p&gt;So I built a feature.&amp;#160; I suggest using the &lt;a href="http://cksdev.codeplex.com/" target="_blank"&gt;Community Kit for SharePoint: Development Tools Edition&lt;/a&gt; from codeplex.&amp;#160; The toolkit gives you some more SharePoint 2010 project templates including a Custom Action which gives you a decent wizard for building your custom action.&lt;/p&gt;  &lt;p&gt;I wanted to hide all the publishing features in the publishing site actions which turned out to be pretty easy by adding the &lt;strong&gt;HideCustomAction&lt;/strong&gt; element as shown below to my custom actions element.&amp;#160; This &lt;a href="http://www.sharepointblues.com/2010/07/15/how-to-hide-publishing-site-actions-menu-links/" target="_blank"&gt;blog&lt;/a&gt; was helpful in determining what to do about hiding items.&lt;/p&gt;  &lt;pre&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;Elements xmlns=&amp;quot;http://schemas.microsoft.com/sharepoint/&amp;quot;&amp;gt;  &amp;lt;CustomAction Description=&amp;quot;Create Pages selecting from available page templates&amp;quot;&lt;br /&gt;  GroupId=&amp;quot;SiteActions&amp;quot;&lt;br /&gt;  Location=&amp;quot;Microsoft.SharePoint.StandardMenu&amp;quot;&lt;br /&gt;  Id=&amp;quot;mmITCreatePage&amp;quot;&lt;br /&gt;  ImageUrl=&amp;quot;/_layouts/images/crtpage.gif&amp;quot;&lt;br /&gt;  Rights=&amp;quot;EditListItems&amp;quot;&lt;br /&gt;  Sequence=&amp;quot;1&amp;quot;&lt;br /&gt;  Title=&amp;quot;Create Custom Pages&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;UrlAction Url=&amp;quot;~sitecollection/_layouts/xyzco/xyzcreatepage.aspx&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;/CustomAction&amp;gt;&lt;br /&gt;&amp;lt;HideCustomAction &lt;br /&gt;  Id=&amp;quot;HideCreatePublishingPage&amp;quot;&lt;br /&gt;  GroupId=&amp;quot;SiteActions&amp;quot;&lt;br /&gt;  HideActionId=&amp;quot;PublishingSiteActionsMenuCustomizer&amp;quot;&lt;br /&gt;  Location=&amp;quot;Microsoft.SharePoint.StandardMenu&amp;quot;&amp;gt; &lt;br /&gt;&amp;lt;/HideCustomAction&amp;gt;&lt;br /&gt;&amp;lt;/Elements&amp;gt;&lt;/pre&gt;&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-3771706503716865070?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/3771706503716865070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/06/custom-site-actions-fun.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/3771706503716865070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/3771706503716865070'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/06/custom-site-actions-fun.html' title='Custom Site Actions Fun'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-1913702215951389490</id><published>2011-01-19T19:51:00.001-08:00</published><updated>2011-01-19T19:54:07.376-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Disclaimer'/><category scheme='http://www.blogger.com/atom/ns#' term='httpmodule'/><category scheme='http://www.blogger.com/atom/ns#' term='Acknowledgement'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2010'/><title type='text'>SharePoint 2010 Acknowledgment Solution</title><content type='html'>&lt;p&gt;Visual studio 2010 code here (&lt;a href="https://docs.google.com/leaf?id=0B9Dmru3P513ZZmI5ODZhY2YtMDk1My00OGZhLTlhNzUtNDk5M2IzZDUxOTAz&amp;amp;hl=en&amp;amp;authkey=CLqG3voC" target="_blank"&gt;code download&lt;/a&gt;) for a SharePoint 2010 Acknowledgement Solution.&lt;/p&gt;  &lt;p&gt;Solution deploys an acknowledgement page using HTTP module to check SharePoint 2010 user profile every time user goes to site and presents users with acknowledgement page they must accept prior to accessing site.&lt;/p&gt;  &lt;p&gt;It requires you add a new User Profile field named XYZACKNOW which the solution updates to capture that the user accepted.&lt;/p&gt;  &lt;p&gt;Check out the featureactivated events to see how solution updates your web.config.&lt;/p&gt;  &lt;p&gt;Includes web application scoped feature to deploy httpmodule and site collection scoped feature to deploy the aspx page which contains CEWP where you can put your own disclaimer – note: page has css inline to hide the SP 2010 ribbon bar and other components same way new modal dialog windows hide page components.&lt;/p&gt;  &lt;p&gt;Hopefully code is self-explanatory.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-1913702215951389490?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/1913702215951389490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/01/sharepoint-2010-acknowledgment-solution.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/1913702215951389490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/1913702215951389490'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2011/01/sharepoint-2010-acknowledgment-solution.html' title='SharePoint 2010 Acknowledgment Solution'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-8365107983946462429</id><published>2010-10-22T12:34:00.001-07:00</published><updated>2010-10-22T12:51:41.882-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='t-sql'/><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2010'/><title type='text'>Remove SharePoint 2010 Databases</title><content type='html'>&lt;p&gt;I’ve installed and uninstalled SharePoint many times on my VMs and in the lab.&amp;#160; Problem with uninstalling SharePoint 2010 is that it leaves behind it’s many databases in SQL Server.&amp;#160; So not to create a mess when I reinstall, I have a SQL Query I run to do a cleanup by first running the below query which loops tough all the non-system databases in SQL server to generate a second query which I’ll run to remove SharePoint databases from previous install.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Query 1:&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;set nocount on&lt;br /&gt;declare @dbname as varchar(80)&lt;br /&gt;declare @server_name as varchar(20)&lt;br /&gt;select @server_name = @@servername&lt;br/&gt;declare rs_cursor CURSOR for select name from master.dbo.sysdatabases where name not in ('model','master','msdb','tempdb','alert_db','mssecurity','Adventure*')&lt;br/&gt;open rs_cursor&lt;br/&gt;Fetch next from rs_cursor into @dbname&lt;br/&gt;IF @@FETCH_STATUS &amp;lt;&amp;gt; 0&lt;br /&gt;&amp;#160;&amp;#160; PRINT 'No database to backup...Please check your script!!!'&lt;br /&gt;WHILE @@FETCH_STATUS = 0 &lt;br /&gt;BEGIN&lt;br/&gt;&amp;#160; print 'DROP DATABASE [' +&amp;#160; @dbname + ']'&lt;br/&gt;&amp;#160; print 'go'&lt;br/&gt;&amp;#160; print 'print ''Drop of ' + upper(@dbname) + ' database successfully completed'''&lt;br/&gt;&amp;#160; print 'go'&lt;br/&gt;&amp;#160; PRINT ' '&lt;br/&gt;&amp;#160; FETCH NEXT FROM rs_cursor INTO @dbname&lt;br/&gt;END&lt;br/&gt;CLOSE rs_cursor&lt;br/&gt;deallocate rs_cursor&lt;br/&gt;print ' '&lt;br/&gt;print 'print ''SERVER NAME : ' + upper(@server_name) + '--&amp;gt;&amp;#160; All databases successfully dropped'''&lt;/pre&gt;&lt;br/&gt;The output of this query gives me a second cleanup query in the SQL Server Management studio output screen (shown below).&lt;br /&gt;&lt;br/&gt;&lt;a href="http://lh6.ggpht.com/_vPW88mshXhU/TMHnVd9LKkI/AAAAAAAAACQ/sYQFhI2O87k/s1600-h/image%5B4%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_vPW88mshXhU/TMHnVuX5iQI/AAAAAAAAACU/SHWS6-cENWs/image_thumb%5B2%5D.png?imgmax=800" width="728" height="421" /&gt;&lt;/a&gt;&amp;#160;&lt;br /&gt;&lt;br/&gt;Simply copying the output from the first query into a new query window and executing now drops all the dbs.&amp;#160; Go into the folders where the .mdf and .ldf files resided and verify everything is gone.&amp;#160; You now have a clean slate in SQL for fresh install of SharePoint.&lt;br /&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-8365107983946462429?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/8365107983946462429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2010/10/remove-sharepoint-2010-databases.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/8365107983946462429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/8365107983946462429'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2010/10/remove-sharepoint-2010-databases.html' title='Remove SharePoint 2010 Databases'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_vPW88mshXhU/TMHnVuX5iQI/AAAAAAAAACU/SHWS6-cENWs/s72-c/image_thumb%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-8069974949793917082</id><published>2010-09-30T16:06:00.001-07:00</published><updated>2010-09-30T16:06:25.854-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Search'/><category scheme='http://www.blogger.com/atom/ns#' term='Permissions'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2010'/><title type='text'>SharePoint Server 2010 Search Folder Permissions</title><content type='html'>&lt;p&gt;After initial configuration of SharePoint Server 2010 search, queries to indexed content failed with error &lt;strong&gt;Internal server error exception…Correlation ID&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;It was discovered through ULS trace logs that the Search Service account &lt;i&gt;could not access the windows TEMP directory&lt;/i&gt;. To resolve, environment variable for the &lt;b&gt;Windows TEMP directory&lt;/b&gt; &lt;i&gt;was switched to&lt;/i&gt; &lt;b&gt;D:\TEMP&lt;/b&gt; and the search service account was given modify permissions to this folder.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-8069974949793917082?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/8069974949793917082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2010/09/sharepoint-server-2010-search-folder.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/8069974949793917082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/8069974949793917082'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2010/09/sharepoint-server-2010-search-folder.html' title='SharePoint Server 2010 Search Folder Permissions'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-7917947939472239660</id><published>2010-09-30T15:59:00.001-07:00</published><updated>2010-10-22T12:53:11.191-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBIOS'/><category scheme='http://www.blogger.com/atom/ns#' term='userprofile'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2010'/><title type='text'>SharePoint 2010 Userprofile Import and NetBIOS</title><content type='html'>&lt;p&gt;If your &lt;i&gt;NetBIOS and domain names are different&lt;/i&gt;, &lt;b&gt;Replicate Directory Changes&lt;/b&gt; permission for your user profile synchronization service account is also needed on the &lt;strong&gt;cn=configuration&lt;/strong&gt; container (google it if your not sure where to change). In environments where both items are same, this permission is only required at the Domain level.&lt;/p&gt;  &lt;p&gt;Also, before importing user profiles, NetBIOS domain names have to be enabled on the &lt;b&gt;User Profile service application. &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;To &amp;quot;enable&amp;quot; NetBIOS domain names once a connection is created requires the connection to be deleted and a new connection created with the flag turned on (set to 1 or true).&lt;/p&gt;  &lt;p&gt;How To: Enable import of NetBIOS Domain Names:&lt;/p&gt;  &lt;p&gt;Using the 2010 SharePoint Management Shell, enter following commands:&lt;/p&gt;  &lt;pre&gt;&lt;br /&gt;Get-SPServiceApplication &lt;/i&gt;(lists the Service Applications and their GUIDs)&lt;br /&gt;&lt;i&gt;$UPA = Get-SPServiceApplication –Id &amp;lt;GUID of User Profile Service Application&amp;gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;$UPA.NetBIOSDomainNamesEnabled=1&lt;/i&gt;&lt;br /&gt;&lt;i&gt;$UPA.Update()&lt;/i&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;See more information regarding this issue at &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/sharepoint2010general/thread/398f3553-5de7-456b-b935-4e22cee26b2f"&gt;http://social.msdn.microsoft.com/Forums/en-US/sharepoint2010general/thread/398f3553-5de7-456b-b935-4e22cee26b2f&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-7917947939472239660?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/7917947939472239660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2010/09/sharepoint-2010-userprofile-import-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/7917947939472239660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/7917947939472239660'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2010/09/sharepoint-2010-userprofile-import-and.html' title='SharePoint 2010 Userprofile Import and NetBIOS'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-2783615712709133715</id><published>2010-09-30T15:43:00.001-07:00</published><updated>2010-09-30T15:46:17.100-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Part'/><title type='text'>Quick Switch to Edit Mode in SPS 2010</title><content type='html'>&lt;p&gt;&lt;strong&gt;Problem: &lt;/strong&gt;No easy way to switch to Edit Mode to add a web part.&amp;#160; Current Steps of going to &lt;strong&gt;Site Actions&lt;/strong&gt; and Selecting&lt;strong&gt; Edit Page&lt;/strong&gt; to get to edit mode where you can then click 'Add a Web Part' is not intuitive.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Solution: &lt;/strong&gt;We can at least make it easier to switch to edit mode by throwing a button on the page only visible to Site Owners.&amp;#160; There is a standard JavaScript function (ChangeLayoutMode()) which can be associated to button.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_vPW88mshXhU/TKUSdZyTa8I/AAAAAAAAACI/zJT1Jdhbcx4/s1600-h/image%5B9%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_vPW88mshXhU/TKUSd4_-gnI/AAAAAAAAACM/QkgTASixeaM/image_thumb%5B5%5D.png?imgmax=800" width="716" height="271" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Achieved this result via a minimal code method as follows:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Using SharePoint JavaScript functions to make this work (you can discover other JavaScript functions available by viewing source on the SharePoint page). &lt;/li&gt;    &lt;li&gt;Added below source HTML with minimal styling to file called &lt;strong&gt;editModeWP.txt&lt;/strong&gt; and uploaded file to a document library on my SharePoint site.&amp;#160; &lt;/li&gt;    &lt;li&gt;HTML source: &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;lt;style type=text/css&amp;gt;    &lt;br /&gt;input.xyzBlue {background-color: #51b5e0; font-weight: bold; font-size: 12px; color: white;}     &lt;br /&gt;&amp;lt;/style&amp;gt;     &lt;br /&gt;&amp;lt;input class=&amp;quot;xyzBlue&amp;quot; type=BUTTON value=&amp;quot;Switch to Edit Mode&amp;quot; name=&amp;quot;wpMode&amp;quot; onClick=&amp;quot;window.location = 'javascript:ChangeLayoutMode(false);';&amp;quot;&amp;gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Added &amp;quot;Content Editor&amp;quot; web part to home page and set it's &amp;quot;Content Link&amp;quot; to the location of the txt file saved above.&amp;#160; Set &amp;quot;Chrome Type&amp;quot; to none.&amp;#160; Set &amp;quot;Target Audience&amp;quot; to &amp;quot;&lt;strong&gt;Owners&amp;quot;&lt;/strong&gt; (owners should be the only ones that see this on page, if all users see it, it will be useless to them when they click because they don't have correct permissions to edit). &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Enhancements:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;I approached this using minimal development path, however, if this is something you want consistent throughout you environments, it will require adding the updated code to many of your page layouts.&amp;#160; You could also add logic to this current method switch the button name and onclick event to the JavaScript which stops editing the page. &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-2783615712709133715?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/2783615712709133715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2010/09/quick-switch-to-edit-mode-in-sps-2010.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/2783615712709133715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/2783615712709133715'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2010/09/quick-switch-to-edit-mode-in-sps-2010.html' title='Quick Switch to Edit Mode in SPS 2010'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_vPW88mshXhU/TKUSd4_-gnI/AAAAAAAAACM/QkgTASixeaM/s72-c/image_thumb%5B5%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-6381623275897155022</id><published>2010-09-30T15:05:00.001-07:00</published><updated>2010-09-30T15:55:49.892-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Branding'/><category scheme='http://www.blogger.com/atom/ns#' term='My Site'/><category scheme='http://www.blogger.com/atom/ns#' term='Feature Staple'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2010'/><title type='text'>My Site Branding in SharePoint 2010</title><content type='html'>&lt;p&gt;I found a nice post on branding My Sites in SharePoint Server 2010 &lt;a href="http://blogs.msdn.com/b/spsocial/archive/2010/04/08/customizing-my-sites-in-microsoft-sharepoint-2010.aspx" target="_blank"&gt;here.&lt;/a&gt;&amp;#160; I took it next step and have provided the source code for a feature staple to update the global navigation for branding your SPS 2010 My Sites.&lt;/p&gt;  &lt;p&gt;This solution contains sample branding to be implemented to the My Sites host template and personal site template.&amp;#160;&amp;#160; This branding is simply implemented for sample purposes and is not a full-fledge, tested, production-ready branded interface.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;It was developed as a Feature Staple packaged in Visual Studio 2010.&amp;#160;&amp;#160; The Global navigation utilized in the My Sites templates loads from a User Control which cannot be modified via master page updates in SharePoint Designer – thus the feature staple.&lt;/p&gt;  &lt;p&gt;The feature staple solution for this customization was built with following components:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;New user control (&lt;strong&gt;XYZMysiteNav.ascx&lt;/strong&gt;).&amp;#160; This user control is copied from existing &lt;strong&gt;GlobalNavigation &lt;/strong&gt;user control.&amp;#160; This new control adds reference to a new CSS file and three new &amp;lt;div&amp;gt; tags.&amp;#160; The new &amp;lt;div&amp;gt; tags are used to accept placement of the header consisting of three images.&amp;#160; New control deployed to web server folder C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\CONTROLTEMPLATES\xyzmysites. &lt;/li&gt;    &lt;li&gt;A new feature (&lt;strong&gt;XYZ.MySiteFeatureStaple_XYZ_MySiteBrand&lt;/strong&gt;).&amp;#160; This feature binds the new user control to the existing user control and is deployed to C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\FEATURES\XYZ.MySiteFeatureStaple_XYZ_MySiteBrand. &lt;/li&gt;    &lt;li&gt;Custom CSS (&lt;strong&gt;xyz_mysites.css):&lt;/strong&gt;&amp;#160; This CSS file contains updated styling for the new &amp;lt;div&amp;gt; tags and updates to positioning, colors, and fonts for existing SharePoint IDs and Classes.&amp;#160; This CSS is mapped to folder C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\1033\STYLES for deployment. &lt;/li&gt;    &lt;li&gt;Custom images:&amp;#160; A variety of images used for header, logo, background, and webpart titles referred to in above CSS file.&amp;#160; The images are mapped to folder C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\IMAGES\xyzpilot for deployment. &lt;/li&gt;    &lt;li&gt;Feature Staple (&lt;strong&gt;XYZ.MySiteFeatureStaple_XYZ_MySiteStaple&lt;/strong&gt;).&amp;#160; Feature staple is used to staple the feature mentioned above (XYZ.MySiteFeatureStaple_XYZ_MySiteBrand ) to the Personal Site (SPSPERS) and the My Sites Host (SPSMSITEHOST) site templates and is deployed to C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\FEATURES\XYZ.MySiteFeatureStaple_XYZ_MySiteStaple &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The above solution is packaged into a SharePoint solution file (&lt;strong&gt;XYZ.MySiteFeatureStaple.wsp –&lt;/strong&gt; grab from debug folder if you want to deploy to see what it does) and deployed to the web application hosting my sites where it is activated on the My Site Host site collection.&lt;/p&gt;  &lt;p&gt;Through feature stapling, the feature is automatically enabled on new personal sites which are created but for all existing sites, the feature has to be activated by running the script below from the SharePoint PowerShell Command prompt on the WFE server (brandpersonal.ps1 powershell script can also be found at C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\CONTROLTEMPLATES\xyzmysites):    &lt;br /&gt;&lt;/p&gt; &lt;pre&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Courier New"&gt;$personalSites = get-spsite | where {$_.RootWeb.WebTemplate -eq &amp;quot;SPSPERS&amp;quot;} &lt;br /&gt;    &lt;br /&gt;foreach ($site in $personalSites) {Enable-SPFeature -Identity &amp;quot;MyNewNavFeature&amp;quot; -Url $site.Url}&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Download source code from this &lt;a href="https://docs.google.com/uc?id=0B9Dmru3P513ZODBkNzcxMWEtZjU0OS00ZGEzLWIzM2QtMDE4ZThjNGY2ZmI0&amp;amp;export=download&amp;amp;authkey=CO3S4e4I&amp;amp;hl=en"&gt;link&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-6381623275897155022?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/6381623275897155022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2010/09/my-site-branding-in-sharepoint-2010.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/6381623275897155022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/6381623275897155022'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2010/09/my-site-branding-in-sharepoint-2010.html' title='My Site Branding in SharePoint 2010'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-6745857184802182015</id><published>2009-10-16T12:47:00.001-07:00</published><updated>2009-10-16T14:03:13.283-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='Powershell'/><category scheme='http://www.blogger.com/atom/ns#' term='updates'/><title type='text'>Remove and Add Back Multiple SharePoint Content Databases with PowerShell</title><content type='html'>&lt;p&gt;The TechNet documentation for &lt;a href="http://technet.microsoft.com/en-us/library/cc263467.aspx" target="_blank"&gt;deployment of software updates for SharePoint Server 2007&lt;/a&gt; suggests, among other things, to detach your content databases in order to reduce downtime. This is easy enough to do through Central Admin when you have a few databases and a small number of web applications, but how about in a large farm with many web applications and dozens of content databases with multiple SQL Server Instances? PowerShell to the rescue!&lt;/p&gt;&lt;strong&gt;First: Remove/Detach the Databases&lt;/strong&gt; – Create a CSV file with value headings &lt;strong&gt;webapp&lt;/strong&gt; and &lt;strong&gt;url&lt;/strong&gt; where webapp is friendly name and url is the associated url for the web application. CSV example below: &lt;br /&gt;&lt;pre&gt;webapp,url&lt;br /&gt;&lt;br /&gt;webApp1,http://webapp1.xyz.com&lt;br /&gt;&lt;br /&gt;webApp2,http://webapp2.xyz.com&lt;/pre&gt;&lt;br /&gt;Use below PowerShell script to loop through all of your web applications using above CSV file, enumerate the content databases via STSADM, and throw the content database name and SQL Server Server/Instance name to a new CSV file named by webapp value. An internal loop reads from the new CSV file and detaches the databases (I commented line out below – uncomment when ready to run).&lt;pre&gt;[System.Reflection.Assembly]::LoadWithPartialName(&amp;quot;Microsoft.SharePoint&amp;quot;)&lt;br /&gt;&lt;br /&gt;#loop through a csv file that contains webapp and url, run enumcontentdbs, export results to csv  &lt;br /&gt;Import-Csv .\webapps.csv | ForEach {   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $strWA = $_.webapp  &lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $strURL = $_.url &lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $rawdata=stsadm -o enumcontentdbs -url $strURL &lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $sitesxml=[XML]$rawdata &lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $sitesxml.databases.contentdatabase | Select-Object server,name | export-csv .\$strWA.csv -noType &lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; #loop through contentDBs from csv created in above line and delete &lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Import-Csv .\$strWA.csv | ForEach { &lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $strServer = $_.Server &lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $strName = $_.Name &lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; write-output WebApp: $strURL ContentDB: $strName &lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #WARNING BELOW COMMAND DANGEROUS -- UNCOMMENT WHEN READY -- WILL REMOVE EVERY CONTENT DB ON FARM &lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #$delDB = stsadm.exe -o deletecontentdb -url $strURL -databasename $strName &lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;br /&gt;&lt;br /&gt;}&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;Second: Add the Databases back&lt;/strong&gt; – After you’ve run all of your updates, you need to add your content databases back. Use below PowerShell script to loop through all of your web applications and read in the values from the CSV files created by running previous script to add the content databases back.&lt;pre&gt;[System.Reflection.Assembly]::LoadWithPartialName(&amp;quot;Microsoft.SharePoint&amp;quot;) &lt;br /&gt;&lt;br /&gt;#loop through webapps from original csv -- same as remove script&lt;br /&gt;Import-Csv .\webapps.csv | ForEach {&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $strWA = $_.webapp &lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $strURL = $_.url &lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $rawdata=stsadm -o enumcontentdbs -url $strURL &lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; #loop through contentDBs and add based on csv created in the webAppDbs_Remove.ps1&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Import-Csv .\$strWA.csv | ForEach {&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $strServer = $_.Server &lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $strName = $_.Name &lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #write-output WebApp: $strURL ContentDB: $strName&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $AddDB = stsadm.exe -o addcontentdb -url $strURL -databasename $strName -databaseserver $strServer -sitewarning 450 -sitemax 500&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Add the scipts in appropriately named powershell ps1 files (e.g., webAppDBs_Remove.ps1 and webAppDBs_Add.ps1) on an Application or Web Front End Server where Powershell is installed and call from a .bat file with commands similar to below:&lt;pre&gt;powershell.exe Set-ExecutionPolicy RemoteSigned&lt;br /&gt;&lt;br /&gt;REM command to run script from the ps1 file to remove&lt;br /&gt;&lt;br /&gt;powershell.exe -noexit .\webAppDBs_Remove.ps1&lt;br /&gt;&lt;br /&gt;REM command to run script from the ps1 file to add back&lt;br /&gt;&lt;br /&gt;REM powershell.exe -noexit .\webAppDBs_Add.ps1&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-6745857184802182015?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/6745857184802182015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2009/10/remove-and-add-back-sharepoint-content.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/6745857184802182015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/6745857184802182015'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2009/10/remove-and-add-back-sharepoint-content.html' title='Remove and Add Back Multiple SharePoint Content Databases with PowerShell'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-5325223218730043691</id><published>2009-08-07T14:23:00.001-07:00</published><updated>2009-08-07T14:51:59.860-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='vbscript'/><category scheme='http://www.blogger.com/atom/ns#' term='stsadm'/><title type='text'>Handy VBScript for STSADM looping</title><content type='html'>&lt;p&gt;Before getting into PowerShell, I used to do a lot of administrative scripting for SharePoint using VBScript.&amp;#160; In fact we still use a vbscript based automated farm installation that a consultant assembled for us (Thanks V-man!) – I intend on switching over to powershell in future.&lt;/p&gt;  &lt;p&gt;The vbscripts are tried-and-true though.&amp;#160; Here’s a little one I like to use when I need to loop through an stsadm command multiple times.&amp;#160; I use it for things like adding multiple managed paths, renaming sites to clear orphans, and running database repair to clear up list and document library orphans on multiple databases, etc.&lt;/p&gt;  &lt;pre&gt;&lt;p&gt;'script to add managed paths based on values in paths.csv file stored on same drive as script&lt;/p&gt;&lt;p&gt;'paths.csv file entry example:  &lt;/p&gt;&lt;p&gt;'webappname.domain.com,/test1&lt;/p&gt;&lt;p&gt;'webappname.domain.com,/test2&lt;/p&gt;&lt;p&gt;'webappname2.domain.com,/test1&lt;/p&gt;&lt;p&gt;'webappname2.domain.com,/test2&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Const ForReading = 1&lt;br /&gt;&lt;br /&gt;Const cStsadmPath = &amp;quot;&amp;quot;&amp;quot;C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe&amp;quot;&amp;quot;&amp;quot; &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Dim retval  &lt;br /&gt;Dim objshell &lt;br /&gt;Dim cmd  &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Set objFSO = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;) &lt;br /&gt;Set objTextFile = objFSO.OpenTextFile(&amp;quot;.\paths.csv&amp;quot;, ForReading) &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Do Until objTextFile.AtEndOfStream &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; strNextLine = objTextFile.Readline &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; arrPath = Split(strNextLine, &amp;quot;,&amp;quot;) &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; Set objShell = CreateObject(&amp;quot;WScript.Shell&amp;quot;)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 'grab webapp from CSV which is the 1st value and the managed path from 2nd value in the base 0 array to run addpath command&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; cmd = cStsadmPath &amp;amp; &amp;quot; -o addpath -url &lt;a href="http://&amp;quot;"&gt;http://&amp;quot;&lt;/a&gt; &amp;amp; arrPath(0) &amp;amp; arrPath(1) &amp;amp; &amp;quot; -type wildcardinclusion&amp;quot;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; retval = objShell.run(cmd, 1, True)  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Wscript.Echo cmd&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; set retval = objShell.exec(cmd) &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 'Wait until command is done running before running next command&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Do Until retval.Status&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Wscript.Sleep 250&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Loop &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; set retval = nothing&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set objShell = Nothing&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Loop&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;I have a script that enumerates the sites and throws the output to an xml file – and then the vbsscipt uses the xmldom to read in values but the output gets corrupted (proabably because I’m enumerating close to 10,000 site collections) and can’t reliably be read.&amp;#160; I intend on using Powershell and getting the sites through the SharePoint Object model – look for that in a future post.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-5325223218730043691?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/5325223218730043691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2009/08/handy-vbscript-for-stsadm-looping.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/5325223218730043691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/5325223218730043691'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2009/08/handy-vbscript-for-stsadm-looping.html' title='Handy VBScript for STSADM looping'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-4123483450038808765</id><published>2009-07-15T10:57:00.001-07:00</published><updated>2009-07-19T09:47:19.316-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Search'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><title type='text'>Points about SharePoint Search</title><content type='html'>&lt;p&gt;Have a growing index – at about 3 million items – not humongous but enough to cause crawl headaches.&lt;/p&gt;  &lt;p&gt;So here are some lessons learnt:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Use a dedicated web front end server for crawl – preferably one that doesn’t get user traffic.&amp;#160; The caveat here is that in a farm where you load balance your web front ends, with multiple web apps that each have their own IP assigned in IIS, on your Index server in Central Administration website (CA), you have to set the value to &lt;em&gt;“Use all web front ends for crawling.” &lt;/em&gt;– Say what? – Yes, if you pick a dedicated crawl server in CA, SharePoint does this thing where it automatically adds the Host entries to the hosts file on your index server – and it grabs the default IP from that server and associates to all of your web apps (timer job overwrites value so don’t bother trying to correct the IPs to point to your load balanced member IPs).&amp;#160; So what you do is set to crawl all web front ends in CA – which will stop this host entry re-write madness – and than go to the Index server and enter the correct IPs (even though in CA, you set to crawl all front ends, the index server will use whatever is in hosts file instead).&amp;#160; So enjoy the added maintenance task of updating the hosts file every time you add a new host header site collection&amp;#160; To their credit, Microsoft documents this here (&lt;a title="http://technet.microsoft.com/en-us/library/cc261810.aspx" href="http://technet.microsoft.com/en-us/library/cc261810.aspx" target="_blank"&gt;http://technet.microsoft.com/en-us/library/cc261810.aspx&lt;/a&gt;).&amp;#160; Also, MS enterprise search team mentions too many crawl hosts can starve your crawl &lt;a href="http://blogs.msdn.com/enterprisesearch/archive/2008/05/09/creating-crawl-schedules-and-starvation-how-to-detect-it-and-minimize-it.aspx" target="_blank"&gt;here&lt;/a&gt; – enforces the dedicated crawl server scenario. &lt;/li&gt;    &lt;li&gt;Know the &lt;em&gt;stasdm &lt;/em&gt;commands &lt;em&gt;osearch &lt;/em&gt;and &lt;em&gt;spsearch&lt;/em&gt;.&amp;#160; We had an admin reset all the search services, in attempt to resolve crawl issues, and he really screwed things up – he’s no longer an admin – he turned on WSS Help search through CA, but CA doesn’t let you pick an Index location for WSS search (Only Office Server Search – MOSS search – has this option in CA interface) so we started getting alerts about the C:\drive running out of space.&amp;#160; I learned that you can only set this value through the &lt;em&gt;stsadm -o spsearch -indexlocation&lt;/em&gt; switch.&amp;#160; We have an automated farm install that shells out to stsadm which set all of these search settings over a year ago when we built this farm – so the guy that created the script, who knew about this, accommodated for it – the admin did not. &lt;/li&gt;    &lt;li&gt;Make sure your search crawl account has FULL READ only in Policy for Web Application setting in CA.&amp;#160; An admin set to FULL CONTROL which causes search to crawl unpublished items – again, he’s not an admin any longer. &lt;/li&gt;    &lt;li&gt;If you’re fortunate enough to have a dedicated Index server, set Indexer Performance to &lt;em&gt;Maximum&lt;/em&gt;.&amp;#160; Keep an eye on this with some performance monitors and tune with crawler impact rules (part of MS search team’s post from link in item 1 above).&amp;#160; Right now I have a crawler impact rule against all sites to &lt;em&gt;Request 64 documents at a time&lt;/em&gt;.&amp;#160; Performance monitors okay with this for now but I’m keeping an eye on this. &lt;/li&gt;    &lt;li&gt;Make sure you’re using RAID 1+0 on all disks related to search (Index, Query, and DB).&amp;#160; We designed the search DB to reside on it’s own dedicated disk but someone came along and put a bunch of content DBs on the same disk so we had to go through extra maintenance task of moving search DB file. &lt;/li&gt;    &lt;li&gt;Read the search team’s post about crawl performance (see link in item 1 above).&amp;#160; With the guidance in that post, it prompted me to stop all of our content source crawls, which were starving, and rerun a full crawl of each individually (we have over 5000 site collections in this farm and use only host header URL site collections for portals so we have content sources broken out to crawl managed path based team sites in one web app, portals in 4 separate web apps, my sites, and some individual site content crawls that have higher SLA for crawl)…thought is that this should speed up future incremental crawls and will also help in configuring better crawl schedule. &lt;/li&gt;    &lt;li&gt;On your dedicated crawl front end server, disable &lt;em&gt;Internet Explorer Enhanced Security&lt;/em&gt;.&amp;#160; Was getting thousands of errors with message &lt;em&gt;“An unrecognized http status was received…”&lt;/em&gt;&amp;#160; MS KB says to turn off proxy server settings in IE – we don’t have proxy server settings in IE.&amp;#160; We disable IE Enhanced security on all of our WFE servers anyway but this one snuck by.&amp;#160; I disabled through Add/Remove Programs &amp;gt; Windows Components, did a new, full crawl on an 850,000 item content source and watched errors go from over 20,000 to 1000 with 1.3 million items now attributed to this content source. &lt;/li&gt;    &lt;li&gt;Be careful with metadata property mappings.&amp;#160; Someone added a mapping that made the &lt;em&gt;This list&lt;/em&gt;.. contextual search stop functioning properly.&amp;#160; &lt;a href="http://support.microsoft.com/kb/968476" target="_blank"&gt;MS KB968476&lt;/a&gt; addresses this.&amp;#160; However, I think this KB is missing steps.&amp;#160;&amp;#160; If the KB doesn’t correct the search issue, perform extra step of going to Metadata Properties &amp;gt; browse to find the &lt;em&gt;“Path”&lt;/em&gt; Managed Property and remove all mapping &lt;em&gt;except&lt;/em&gt; for &lt;strong&gt;Basic:9 (text)&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;Don’t stop search services or add new query server while crawl is running.&amp;#160; Pause or stop crawl before making changes to search configurations. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;If you get a chance, check out the Microsoft Enterprise Search Team Blog (&lt;a title="http://blogs.msdn.com/enterprisesearch/" href="http://blogs.msdn.com/enterprisesearch/" target="_blank"&gt;http://blogs.msdn.com/enterprisesearch/&lt;/a&gt;)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-4123483450038808765?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/4123483450038808765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2009/07/points-about-sharepoint-search.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/4123483450038808765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/4123483450038808765'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2009/07/points-about-sharepoint-search.html' title='Points about SharePoint Search'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-2844442691516615462</id><published>2009-07-09T22:13:00.001-07:00</published><updated>2011-03-04T10:07:17.904-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='F5'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='load weights'/><category scheme='http://www.blogger.com/atom/ns#' term='load balancing'/><title type='text'>SharePoint Load Balancing with F5 BIG-IP LTM</title><content type='html'>&lt;p&gt;&lt;b&gt;NOTE:  Since originally posting, I realized you may want to do this by binding to individual ports in IIS instead of individual IPs (saves the need for all of those extra IPs and steps to add and configure as presented below, i.e. the members can be any port but the VIP would still be port 80)&lt;/b&gt;&lt;/p&gt;&lt;p&gt;In the MOSS 2007 deployments a co-worker and I designed for my company, the F5 BIG-IP Local Traffic Manager is the network device used to load balance Web Applications.&amp;#160; In the F5 configuration (sample below), each client facing MOSS Web Application requires a &lt;em&gt;VIP&lt;/em&gt; (Virtual IP Address).&amp;#160; The &lt;em&gt;VIP&lt;/em&gt; has several &lt;em&gt;host (&lt;/em&gt;AKA &lt;em&gt;member)&lt;/em&gt; server IP addresses associated to it to make up a &lt;em&gt;Virtual Server Pool&lt;/em&gt;&lt;strong&gt;.&lt;/strong&gt;&amp;#160; The &lt;em&gt;VIP&lt;/em&gt; is what we associate to the end-user URL in DNS.&lt;/p&gt;  &lt;p&gt;In sample, you see the MOSS Web Front Ends (WFE) listed as &lt;em&gt;Hosts&lt;/em&gt;&lt;strong&gt;.&lt;/strong&gt;&amp;#160; One WFE host &lt;strong&gt;can&lt;/strong&gt; be included as a member in many &lt;em&gt;Virtual Server Pools&lt;/em&gt;; however, one WFE host IP address &lt;b&gt;cannot &lt;/b&gt;be a member of more than one &lt;em&gt;Virtual Server Pool &lt;/em&gt;(Huh?..You may need to re-read that last sentence a few times – graphic at bottom of post should help).&lt;/p&gt;  &lt;p&gt;So for the WFE hosts,&lt;strong&gt; &lt;/strong&gt;get as many IP addresses as there are MOSS Web Applications (consider getting even more in case the need to add or extend web apps in the future arises…it will).&amp;#160; The IPs are added to the Network Adapter on each WFE (steps with screenshots &lt;a href="http://www.windowsreference.com/windows-2000/how-to-addassign-multiple-ip-address-in-vistaxp20002003/" target="_blank"&gt;here&lt;/a&gt;).&amp;#160; Once the IPs are added to the Network Adapter, they become available in IIS so a unique IP can be assigned to each IIS Website (Note:&amp;#160; While you’re in the IIS website properties, remove the host header from IIS website that was created when you first added the web app, otherwise, you’ll never be able to reach host header site collections created in this web app by adding a DNS alias to the VIP – don’t worry about this if you’re going with managed path based sites…I’ve said too much already…moving on).&amp;#160; As an example, in the figure below, there are 4 client facing web applications (Portal 1, Portal 2, Team Sites, and My Sites) and each of the 5 WFE Hosts has 4 unique IP addresses.&lt;/p&gt;  &lt;p&gt;Further, the design takes load weights into consideration.&amp;#160; For high availability, the deployments consist of multiple WFEs.&amp;#160; With the multiple WFEs, you can distribute the load to maximize performance and availability.&amp;#160; MOSS installs all web applications and their corresponding application pool on every WFE host within the farm. However, to maximize CPU, not every application pool runs on every host (requires configuration of application pools performance settings – Joel Oleson has guidance &lt;a href="http://blogs.msdn.com/joelo/archive/2007/10/29/sharepoint-app-pool-settings.aspx" target="_blank"&gt;here&lt;/a&gt; – If you’re dealing with load weights using multiple front ends and web apps, this can get complex -- I’ll post my PowerShell script for configuring IIS on multiple servers with multiple websites by reading in settings from a CSV file in a future post). &lt;/p&gt;  &lt;p&gt;Using load weights, traffic load is distributed only on a select number of hosts allowing hosts to concentrate processes on a few application pools instead of all application pools.&amp;#160; The design leaves us with spare IPs.&amp;#160; This provides flexibility to add or remove WFEs to the Virtual Server Pools as needed.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_vPW88mshXhU/SljtWqQiItI/AAAAAAAAAB0/0OW71vJ0vTs/s1600-h/lb%5B3%5D.jpg"&gt;&lt;img title="lb" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="474" alt="lb" src="http://lh4.ggpht.com/_vPW88mshXhU/SljtXubhh_I/AAAAAAAAAB4/4BhS6VF4i6Y/lb_thumb%5B1%5D.jpg?imgmax=800" width="772" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;For more information about load balancing and F5, the F5 folks have a SharePoint deployment guide &lt;a href="http://www.f5.com/pdf/deployment-guides/f5-sharepoint07-dg.pdf" target="_blank"&gt;here&lt;/a&gt;.&amp;#160; The also have a nice Load Balancing 101 paper &lt;a href="http://www.f5.com/pdf/white-papers/load-balancing101-wp.pdf" target="_blank"&gt;here.&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-2844442691516615462?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/2844442691516615462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2009/07/sharepoint-load-balancing-with-f5-big.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/2844442691516615462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/2844442691516615462'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2009/07/sharepoint-load-balancing-with-f5-big.html' title='SharePoint Load Balancing with F5 BIG-IP LTM'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_vPW88mshXhU/SljtXubhh_I/AAAAAAAAAB4/4BhS6VF4i6Y/s72-c/lb_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-8019658465844882381</id><published>2009-07-03T11:00:00.000-07:00</published><updated>2009-07-03T21:36:32.374-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Novell'/><category scheme='http://www.blogger.com/atom/ns#' term='LDAP'/><category scheme='http://www.blogger.com/atom/ns#' term='eDirectory'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><title type='text'>SharePoint and Novell eDirectory LDAP</title><content type='html'>&lt;p&gt;&lt;/p&gt;Setting up an LDAP authentication source in SharePoint is well documented so I'm not going to recreate the wheel here but I will give some of the nuances of how I deployed and glue together the documentation.&lt;br /&gt;&lt;p&gt;&lt;/p&gt;My company has invested in Novell eDirectory for it's identity management deployment. With eDirectory, we're able to consolidate and sync multiple LDAPs so current users can experience a single-sign-on experience. It also provides account self-provisioning and management for users via an externally facing website.&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;strong&gt;First the links:&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Microsoft documents multiple authentication providers for SharePoint and setting up an LDAP membership provider with examples &lt;a href="http://technet.microsoft.com/en-us/library/cc262069.aspx#section3" target="_blank"&gt;here.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Nick Kellett did a great job documenting every step required to connect the eDirectory LDAP &lt;a href="http://www.setfocus.com/technicalarticles/nickkellett/MOSS2007-and-Novell-LDAP-Authentication_pg1.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Wen He provided a piece Nick missed to expose the LDAP through the SharePoint people picker &lt;a href="http://sharepointhawaii.com/wenhe/Lists/Posts/Post.aspx?ID=4" target="_blank"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;My own blog details some steps to push out the web.config changes to all of your farm web apps &lt;a href="http://mpdsharepoint.blogspot.com/2009/06/update-your-webconfig-with-powershell_20.html" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Now here's what I did:&lt;/strong&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Planned out the membership provider attributes to use in the web.config. &lt;/li&gt;&lt;li&gt;Downloaded and installed the &lt;a href="http://www.ldapbrowser.com/download.htm" target="_blank"&gt;free Softerra LDAP browser &lt;/a&gt;recommended in Nick Kellett's post on a Web Front End Server in my test Farm. &lt;/li&gt;&lt;li&gt;Obtained the Novell LDAP server name and port information from the team at my company that manages Novell eDirectory.&lt;/li&gt;&lt;li&gt;Entered server information and port into the LDAP Browser and started browsing objects.&lt;/li&gt;&lt;li&gt;Drilled down the browser to the user container object and simply right clicked on the container and took the LDAP path from properties screen to use in the the provider.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5354412574755764546" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 159px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_vPW88mshXhU/Sk6x3iszuUI/AAAAAAAAAAc/2inTdIHx99M/s320/ldap.JPG" border="0" /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Started browsing the available attributes of users.&lt;/li&gt;&lt;li&gt;Decided on using the &lt;em&gt;mail &lt;/em&gt;attribute for the login in the provider. Setting &lt;em&gt;userNameAttribute='mail'&lt;/em&gt; so when people use this form of authentication, they will use e-mail address as their username. We have both employees and non-employee content managers using this authentication to SharePoint sites in our DMZ. With this, our employees can login using the same password they use to login to our network in conjunction with their e-mail address. For external users, they can also login with their e-mail address and password set and maintained by visiting an externally facing site.&lt;/li&gt;&lt;li&gt;Tested and discovered the &lt;em&gt;useDNAttribute="false"&lt;/em&gt; has to be set -- which kind of renders some of the other attributes useless -- but value of &lt;em&gt;"true"&lt;/em&gt; makes your entire provider useless&lt;/li&gt;&lt;li&gt;My provider looks like this:&lt;/li&gt;&lt;pre&gt;&amp;lt;add name='IDM' &lt;br /&gt;type='Microsoft.Office.Server.Security.LDAPMembershipProvider, Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C'&lt;br /&gt;server='[ldap server name]'&lt;br /&gt;port='389'&lt;br /&gt;useSSL='false'&lt;br /&gt;useDNAttribute='false'&lt;br /&gt;userDNAttribute='cn'&lt;br /&gt;userNameAttribute='mail'&lt;br /&gt;userContainer='[Ldap path discovered using ldap browser]' &lt;br /&gt;userObjectClass='person'&lt;br /&gt;userFilter='(ObjectClass=*)'&lt;br /&gt;scope='Subtree'&lt;br /&gt;otherRequiredUserAttributes='sn,givenname,cn'&amp;gt;&lt;/pre&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The usage will be in a DMZ so I had firewall opened up on ports 389 and 686 (used for SSL) bi-directionally between the internal NIC IP addresses of all of the Web front end servers and the eDirectory LDAP server IP.&lt;/li&gt;&lt;li&gt;Through SharePoint Central Administration site, extended web apps to &lt;em&gt;Custom&lt;/em&gt; zone (our default zone uses Windows Based Authentication).&lt;/li&gt;&lt;li&gt;Manually added the &lt;em&gt;peoplepicker &lt;/em&gt;and &lt;em&gt;provider&lt;/em&gt; values to the Central Admin site web.config.&lt;/li&gt;&lt;li&gt;Ran Powershell script detailed in my previous blog to update the web.config files for all of my portal web applications (see link above).&lt;/li&gt;&lt;li&gt;Updated the Zone provider for all the portals via a batch file -- for this, I threw in stsadm command like following for all the newly extended sites (used batch file to save my Operations team from having to perform same steps through Central Admin -- also, this prevents chance of them putting in wrong value): &lt;/li&gt;&lt;strong&gt;&lt;em&gt;stsadm -o authentication -url http://[extended site host header value] -type forms -membershipprovider [membership provider name] -allowanonymous&lt;/strong&gt;&lt;/em&gt; &lt;li&gt;In Central Administration, added site collection administrator for one of the root portal sites (browsed through people picker and was able to select my e-mail address).&lt;/li&gt;&lt;li&gt;Opened IIS and browsed new website where I was prompted with the standard Sharepoint forms login page. Entered my e-mail address and network password and successfully signed in.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-8019658465844882381?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/8019658465844882381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2009/07/sharepoint-and-novell-e-directory-ldap.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/8019658465844882381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/8019658465844882381'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2009/07/sharepoint-and-novell-e-directory-ldap.html' title='SharePoint and Novell eDirectory LDAP'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vPW88mshXhU/Sk6x3iszuUI/AAAAAAAAAAc/2inTdIHx99M/s72-c/ldap.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-1554678385441953088</id><published>2009-06-27T07:31:00.000-07:00</published><updated>2009-07-02T19:02:56.662-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='microsoft access'/><category scheme='http://www.blogger.com/atom/ns#' term='mdb'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Governance'/><title type='text'>Don't upload Microsoft Access Databases into SharePoint</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;My favorite word is &lt;em&gt;No&lt;/em&gt;.  But I like to follow &lt;em&gt;No&lt;/em&gt; with &lt;em&gt;But&lt;/em&gt;. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Often, site owners ask me to allow upload of Microsoft Access files by disabling the block of the .mdb file extension. Here's my template "No...but" response.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;em&gt;We will continue to block MDB files due to the fact that unsafe code can be included within an Access database. However, Office Access 2007 allows code to be either verified as safe or disabled so the ACCDB extension can be uploaded into SharePoint.&lt;br /&gt;&lt;br /&gt;Here are steps to convert the database from MDB to the safe ACCDB format: &lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;a href="http://office.microsoft.com/en-us/access/HA100908451033.aspx" target="_blank"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;em&gt;http://office.microsoft.com/en-us/access/HA100908451033.aspx&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;em&gt;&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;Alternatively, If you can’t convert to Access 2007, consider publishing any data in Access 2003 dbs (like flat tables) into SharePoint lists.&lt;/strong&gt;&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;span style="font-size:0;"&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:0;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-family:arial;"&gt;We've deployed the Office 2007 clients globally so it's easier for me to say no in this case. My goal is to get people to adopt SharePoint...and with deeper integration and more Access-like features coming in SharePoint 2010, they're going to be better off moving away from a strictly Microsoft Access app. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-1554678385441953088?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/1554678385441953088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2009/06/dont-upload-microsoft-access-databases.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/1554678385441953088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/1554678385441953088'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2009/06/dont-upload-microsoft-access-databases.html' title='Don&apos;t upload Microsoft Access Databases into SharePoint'/><author><name>Sergeant Mossman</name><uri>http://www.blogger.com/profile/14626932751477164408</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-6227292852871325082</id><published>2009-06-22T17:13:00.000-07:00</published><updated>2009-07-28T12:04:15.763-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='t-sql'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>Move SharePoint Databases without a DBA</title><content type='html'>&lt;span xmlns="xmlns"&gt;   &lt;p&gt;&lt;span style="font-family: arial"&gt;Did you ever get a request to move 198 SharePoint databases? Every time I think about working with SQL Server, I remember a session at The March 2008 SharePoint Conference titled, &amp;quot;SharePoint Admin -- the Reluctant DBA.&amp;quot; I live the life of the reluctant DBA every day, so I didn't attend that session, but I remember the title. &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family: arial"&gt;I inherited a SharePoint development farm. I didn't build it and up until 7 weeks ago, I didn't even know the server names. Now I'm the contact for making decisions about these servers. &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family: arial"&gt;Apparently, our SAN guys gave the database server running SQL a new 650GB LUN to present as a disk where content databases will reside and now they want the old 250GB LUN back. So I get an e-mail from one of the SAN guys in India asking to move the content from the old disk to the new disk. Fair enough. I go to see what is on the disk a see 198 SQL MDF data files and 198 SQL Log files (design side note: don’t put data and log files on the same disk – this is a DEV farm where it’s not as critical to follow this rule – definitely follow the rule in your Stage and Prod environments). &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family: arial"&gt;Did I mention I work for a large, global corporation? Well we got DBAs. However, to get the DBAs to work for you, you need to submit a Request For Service (It's a Microsoft Word Form) providing an overview of what needs to be done to a Group Mailbox. The people who maintain the mailbox then assign it to the responsible group (I cross my fingers at that point because I once submitted one of these requests to create a new Service Account and they assigned it to my boss who called me and asked what I needed done -- it eventually got assigned to the AD Design guy who sits 2 aisles away from me). After the request is assigned, you wait in queue. This is where I become the reluctant DBA -- I hate to wait in lines. &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family: arial"&gt;Okay, so how do you move 198 databases? Find an account that has Sysadmin rights in SQL -- I got lucky and the guy that built the farm used one of my accounts to install. Kick your developers out -- be nice. Verify the database backup ran. &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family: arial"&gt;This will take approximately one hour -- Somebody time me: &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family: arial"&gt;1. Log on to the server running SQL Server 2005 (1 minute). &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family: arial"&gt;2. Open up SQL Server Management Studio and connect to your SQL Instance where the Databases reside (1 minute). &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family: verdana"&gt;&lt;span style="font-family: arial"&gt;3. Run the following query to generate T-SQL to set all your DBs OFFLINE (Again got lucky -- I ran a google search for &amp;quot;sql server detach multiple databases&amp;quot; and got &lt;/span&gt;&lt;a href="http://www.sqlservercentral.com/Forums/Topic492558-324-1.aspx" target="_blank"&gt;&lt;span style="font-family: arial"&gt;this post &lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: arial"&gt;first hit. Thanks vidhya sagar at SQL Servercentral.com -- This is great approach. With SQL Server 2005's &amp;quot;ALTER DATABASE...MODIFY FILE&amp;quot; capability, I modified to just set databases Offline and then bring back Online after files are copied to new location. (1 minute):&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;    &lt;pre&gt;&lt;p&gt;&lt;span style="color: black; font-family: courier new"&gt;set nocount on&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: black; font-family: courier new"&gt;&lt;/span&gt;&lt;span style="color: black; font-family: courier new"&gt;declare @dbname as varchar(80)&lt;br /&gt;declare @server_name as varchar(20)&lt;br /&gt;select @server_name = @@servername&lt;br /&gt;declare rs_cursor CURSOR for select name from master.dbo.sysdatabases where name not in ('model','master','msdb','tempdb','alert_db','mssecurity') and filename like 'E:\MSSQL2K\Data%'&lt;br /&gt;open rs_cursor&lt;br /&gt;Fetch next from rs_cursor into @dbname&lt;br /&gt;IF @@FETCH_STATUS &amp;lt;&amp;gt; 0&lt;br /&gt;PRINT 'No database to backup...Please check your script!!!'&lt;br /&gt;WHILE @@FETCH_STATUS = 0&lt;br /&gt;BEGIN&lt;br /&gt;print 'ALTER DATABASE ' + @dbname + ' SET OFFLINE WITH ROLLBACK IMMEDIATE'&lt;br /&gt;print 'go'&lt;br /&gt;print 'print ''Setting of ' + upper(@dbname) + ' database to OFFLINE successfully completed'''&lt;br /&gt;print 'go'&lt;br /&gt;PRINT ' '&lt;br /&gt;FETCH NEXT FROM rs_cursor INTO @dbname&lt;br /&gt;END&lt;br /&gt;CLOSE rs_cursor&lt;br /&gt;deallocate rs_cursor&lt;br /&gt;print ' '&lt;br /&gt;print 'print ''SERVER NAME : ' + upper(@server_name) + '--&amp;gt; All databases successfully set OFFLINE'''&lt;/span&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;span style="font-family: arial"&gt;4. Run the following query to generate T-SQL to set the new file location and bring your DBs back Online(modify for your environment) (1 minute): &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;font color="#000000"&gt;set nocount on&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#000000"&gt;declare @dbname as varchar(80)&lt;br /&gt;&lt;br /&gt;declare @server_name as varchar(20)&lt;br /&gt;&lt;br /&gt;select @server_name = @@servername&lt;br /&gt;&lt;br /&gt;declare rs_cursor CURSOR for select name from master.dbo.sysdatabases where name not in ('model','master','msdb','tempdb','alert_db','mssecurity') and filename like 'E:\MSSQL2K5\Data%'&lt;br /&gt;&lt;br /&gt;open rs_cursor&lt;br /&gt;&lt;br /&gt;Fetch next from rs_cursor into @dbname&lt;br /&gt;&lt;br /&gt;IF @@FETCH_STATUS &amp;lt;&amp;gt; 0&lt;br /&gt;&lt;br /&gt;PRINT 'No database to backup...Please check your script!!!'&lt;br /&gt;&lt;br /&gt;WHILE @@FETCH_STATUS = 0&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;print 'USE [master]'&lt;br /&gt;&lt;br /&gt;print 'GO'&lt;br /&gt;&lt;br /&gt;print 'ALTER DATABASE ' + @dbname&lt;br /&gt;&lt;br /&gt;print 'MODIFY FILE'&lt;br /&gt;&lt;br /&gt;print '(NAME = '''+ @dbname + ''', FILENAME = ' + '''G:\MSSQL2K5\Data\' + @dbname + '.mdf''' + ')'&lt;br /&gt;&lt;br /&gt;print 'GO'&lt;br /&gt;&lt;br /&gt;print 'ALTER DATABASE ' + @dbname&lt;br /&gt;&lt;br /&gt;print 'MODIFY FILE'&lt;br /&gt;&lt;br /&gt;print '(NAME = '''+ @dbname + '_log'''+ ', FILENAME = ' + '''H:\MSSQL2K5\Log\' + @dbname + '_log.ldf''' + ')'&lt;br /&gt;&lt;br /&gt;print 'GO'&lt;br /&gt;&lt;br /&gt;print 'ALTER DATABASE ' + @dbname + ' SET ONLINE'&lt;br /&gt;&lt;br /&gt;print 'GO'&lt;br /&gt;&lt;br /&gt;print 'print ''Setting of ' + upper(@dbname) + ' database to ONLINE successfully completed'''&lt;br /&gt;&lt;br /&gt;print 'go'&lt;br /&gt;&lt;br /&gt;PRINT ' '&lt;br /&gt;&lt;br /&gt;FETCH NEXT FROM rs_cursor INTO @dbname&lt;br /&gt;&lt;br /&gt;END&lt;br /&gt;&lt;br /&gt;CLOSE rs_cursor&lt;br /&gt;&lt;br /&gt;deallocate rs_cursor&lt;br /&gt;&lt;br /&gt;print ' '&lt;br /&gt;&lt;br /&gt;print 'print ''SERVER NAME : ' + upper(@server_name) + '--&amp;gt; All databases successfully set ONLINE'''&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;&lt;span style="font-family: arial"&gt;5. Copy the output from Step 3 and execute it. All the content db's will be set Offline!!!! (5 minutes) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&lt;span style="font-family: arial"&gt;&lt;/span&gt;&lt;span style="font-family: arial"&gt;6. Copy your files to the new location -- WARNING: don't do a cut and paste. COPY FILES -- I've witnessed attaches through SQL GUI fail with the result of data files magically disappearing (Don't get me started about what it takes to get our off-shore Backup guys to restore files from tape) (10 minutes). &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&lt;span style="font-family: arial"&gt;&lt;/span&gt;&lt;span style="font-family: arial"&gt;7. Copy the output from Step 4 and execute it. All the content db's will be brought back on-line pointing to new file locations!!!! (5 minutes) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&lt;span style="font-family: arial"&gt;&lt;/span&gt;&lt;span style="font-family: arial"&gt;8. Verify databases are accessible. (31 minutes) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&lt;span style="font-family: arial"&gt;&lt;/span&gt;&lt;span style="font-family: arial"&gt;9. Delete the Old Files. (5 minutes)&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;&lt;span style="font-family: arial"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-6227292852871325082?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/6227292852871325082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2009/06/why-ask-dba-move-sharepoint-content.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/6227292852871325082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/6227292852871325082'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2009/06/why-ask-dba-move-sharepoint-content.html' title='Move SharePoint Databases without a DBA'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8931224549897564274.post-718980034823433315</id><published>2009-06-20T22:33:00.001-07:00</published><updated>2009-07-02T19:14:38.424-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web.config'/><category scheme='http://www.blogger.com/atom/ns#' term='SPWebConfigModification'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Powershell'/><title type='text'>Update SharePoint web.config with Powershell</title><content type='html'>&lt;span xmlns=""&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:black;"&gt;Had a need to update 48 web.config files in a SharePoint farm. Purpose was to add Novell E-Directory as an authentication provider for SharePoint Farm in our DMZ consisting of 4 web applications (8 IIS websites by virtue of extending) load balanced across 6 Web Front Ends (more on that in a future post).&lt;br /&gt;&lt;br /&gt;To add the provider, there are several web.config additions...and I'm sick of writing complex checklists for our operations folks to carry out the changes. I was also a little worried about them missing some of the additions. I prefer to have them perform one step -- double-click "webconfigupdate.bat" -- and be done rather than manually having them open, edit, and save 48 web.config files.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Powershell and the SPWebConfigModification Class to the rescue. &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul style="MARGIN-LEFT: 54pt"&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx" target="_blank"&gt;&lt;span style="font-family:arial;"&gt;Download and install Powershell 1.0 here&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:black;"&gt; (you only have to install on one server in your farm where SharePoint is installed -- wherever you have Central Administration site running is fine).&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebconfigmodification.aspx" target="_blank"&gt;&lt;span style="font-family:arial;"&gt;MSDN info about SPWebConfigModification&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:black;"&gt; is here.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="color:black;"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Credit needs to go to following -- I was able to merge the ideas from the code in the first two posts to get my final powershell script: &lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul style="MARGIN-LEFT: 54pt"&gt;&lt;li&gt;&lt;a href="http://www.iwkid.com/blog/Lists/Posts/Post.aspx?ID=10" target="_blank"&gt;&lt;span style="font-family:arial;"&gt;This is post by Raymond Mitchell&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:black;"&gt; that got me started. It's great sample Powershell script for single web app. Although, I needed to loop through every web app in my farm.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://stsadm.blogspot.com/2009/04/getting-spwebapplication-object-using.html" target="_blank"&gt;&lt;span style="font-family:arial;"&gt;This is the post by Gary Lapointe&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:black;"&gt; where I found how to use Powershell to loop through web apps on a farm – it's not the first time Gary's blog helped me understand some administration scripting.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.crsw.com/mark/Lists/Posts/Post.aspx?ID=32" target="_blank"&gt;&lt;span style="font-family:arial;"&gt;Mark Wagner&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:black;"&gt; has some nice guidance on this topic. Helped me understand errors I received. &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.devhorizon.com/reza/?p=459" target="_blank"&gt;&lt;span style="font-family:arial;"&gt;Reza Alirezaei has a great post&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:black;"&gt; on SPWebConfigModification's Top 6 Issues which helped me confirm much of the oddness that resulted when testing.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:black;"&gt;Gotta thank "The Groom," a team member who got the &lt;strong&gt;SPWebConfigModification&lt;/strong&gt; class working in a Solution he deployed. I tried the &lt;strong&gt;SPWebConfigModification &lt;/strong&gt;class once before but abandoned it because of issues I was seeing based on Reza's post. The Groom's success inspired to give it another try.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:black;"&gt;Before starting, SPWebConfigModification Class requires XPath values for its "Path" and "Name" Properties. The Path and Name values are how the Class finds the location in the web.config to add, update, and remove values.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.bit-101.com/xpath/" target="_blank"&gt;&lt;span style="font-family:arial;"&gt;The BIT-101 XPath Query Tool&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:black;"&gt; is a nice, free, on-line tool for finding correct XPath to enter. I used the tool by simply copying my web.config – with new elements and attributes I wanted in my final web.config -- and pasting it into this java based tool. I than queried for the new elements and attributes to determine the XPath I would use in my script. &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.w3schools.com/XPath/xpath_syntax.asp" target="_blank"&gt;&lt;span style="font-family:arial;"&gt;There are some nice examples&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:black;"&gt; here to help you understand XPath if you're not familiar.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:black;"&gt;&lt;strong&gt;Here's the code I threw into a Powershell .ps1 file I named webconfigchange.ps1:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;pre style="COLOR: black"&gt;[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")&lt;br /&gt;$farm = [Microsoft.SharePoint.Administration.SPFarm]::Local&lt;br /&gt;$websvcs = $farm.Services  where -FilterScript {$_.GetType() -eq [Microsoft.SharePoint.Administration.SPWebService]}&lt;br /&gt;#use powershell method for suppressing errors for reason on next line -- updates will run successfully even though errors are thrown -- comment out erroractionpreference variable when debugging&lt;br /&gt;#If more than one call to the ApplyWebConfigModifications() method is made in close succession you will get the following error due to timer job:&lt;br /&gt;#A web configuration modification operation is already running.&lt;br /&gt;$erroractionpreference = "SilentlyContinue"&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt;#loop through each portal web app&lt;br /&gt;foreach ($websvc in $websvcs)&lt;br /&gt;{&lt;br /&gt;foreach ($webapp in $websvc.WebApplications)&lt;br /&gt;    {&lt;br /&gt;    #update web.config for all web apps in farm excluding mysites and ssp&lt;br /&gt;    if ($webapp.name -like "*my*") {write-output "skipping mysites..."}&lt;br /&gt;    elseif ($webapp.name -like "*ssp*") {write-output "skipping SSP..."}&lt;br /&gt;    else&lt;br /&gt;        {&lt;br /&gt;        #add peoplepicker node for IDM – IDM is name we will use for Authentication Provider for Novell Identity Management&lt;br /&gt;        #here's where you'll need to understand XPath – this variable captures the xpath query – later in script, I'll optionally use Name and Path instead of Argumentlist&lt;br /&gt;        $ppMod = New-Object -TypeName "Microsoft.SharePoint.Administration.SPWebConfigModification" -ArgumentList "add[@key='IDM']", "configuration/SharePoint/PeoplePickerWildcards"&lt;br /&gt;        $ppMod.Sequence = 0&lt;br /&gt;        $ppMod.Owner = "SimpleSampleUniqueOwnerValue"&lt;br /&gt;        $ppMod.Type = "EnsureChildNode"&lt;br /&gt;        #this is actual value which will be added or modified&lt;br /&gt;        $ppMod.Value = "&amp;lt;add key='IDM' value='*' /&amp;gt;"&lt;br /&gt;        $webapp.WebConfigModifications.Add($ppMod)&lt;br /&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt;        #add membership node&lt;br /&gt;        $memberMod = New-Object -TypeName "Microsoft.SharePoint.Administration.SPWebConfigModification" -ArgumentList "membership", "configuration/system.web"&lt;br /&gt;        $memberMod.Sequence = 0&lt;br /&gt;        $memberMod.Owner = "SimpleSampleUniqueOwnerValue"&lt;br /&gt;        $memberMod.Type = "EnsureChildNode"&lt;br /&gt;        $memberMod.Value = "&amp;lt;membership defaultProvider='IDM'&amp;gt;&amp;lt;/membership&amp;gt;"&lt;br /&gt;        $webapp.WebConfigModifications.Add($memberMod)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  &lt;br /&gt;        #add providers node&lt;br /&gt;        $providerMod = New-Object -TypeName "Microsoft.SharePoint.Administration.SPWebConfigModification" -ArgumentList "providers", "configuration/system.web/membership"&lt;br /&gt;        $providerMod.Sequence = 0&lt;br /&gt;        $providerMod.Owner = "SimpleSampleUniqueOwnerValue"&lt;br /&gt;        $providerMod.Type = "EnsureChildNode"&lt;br /&gt;        $providerMod.Value = "&amp;lt;providers&amp;gt;&amp;lt;/providers&amp;gt;"&lt;br /&gt;        $webapp.WebConfigModifications.Add($providerMod)&lt;br /&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt;        #add IDM LDAP attributes – here, we're using Path and Name properties instead of Argumentlist&lt;br /&gt;        $ldapMod = New-Object Microsoft.SharePoint.Administration.SPWebConfigModification&lt;br /&gt;        $ldapMod.Path = "configuration/system.web/membership/providers"&lt;br /&gt;        $ldapMod.Name = "add[@name='IDM'][@type='Microsoft.Office.Server.Security.LDAPMembershipProvider, Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C'][@server='&amp;lt;your Ldap server&amp;gt;'][@port='389'][@useSSL='false'][@useDNAttribute='false'][@userDNAttribute='cn'][@userNameAttribute='mail'][@userContainer='&amp;lt;your Ldap path&amp;gt;'][@userObjectClass='person'][@userFilter='(ObjectClass=*)'][@scope='Subtree'][@otherRequiredUserAttributes='sn,givenname,cn']"&lt;br /&gt;        $ldapMod.Sequence = 0&lt;br /&gt;        $ldapMod.Owner = "SimpleSampleUniqueOwnerValue"&lt;br /&gt;        $ldapMod.Type = "EnsureChildNode"&lt;br /&gt;        $ldapMod.Value = "&amp;lt;add name='IDM' type='Microsoft.Office.Server.Security.LDAPMembershipProvider, Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C' server='&amp;lt;your Ldap server&amp;gt;' port='389' useSSL='false' useDNAttribute='false' userDNAttribute='cn' userNameAttribute='mail' userContainer='&amp;lt;your Ldap path&amp;gt;' userObjectClass='person' userFilter='(ObjectClass=*)' scope='Subtree' otherRequiredUserAttributes='sn,givenname,cn' /&amp;gt;"&lt;br /&gt;        $webapp.WebConfigModifications.Add($ldapMod)&lt;br /&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt;        #save changes and apply to farm&lt;br /&gt;        $method = [Microsoft.Sharepoint.Administration.SPServiceCollection].GetMethod("GetValue", [Type]::EmptyTypes)&lt;br /&gt;        $closedMethod = $method.MakeGenericMethod([Microsoft.Sharepoint.Administration.SPWebService])&lt;br /&gt;        $services = $webapp.Farm.Services&lt;br /&gt;        $service = $closedMethod.Invoke($services, [Type]::EmptyTypes)&lt;br /&gt;        $service.ApplyWebConfigModifications()&lt;br /&gt;        $webapp.Update()&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:black;"&gt;&lt;strong&gt;I call the above script to run from a .bat file with below commands:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="COLOR: black"&gt;&lt;br /&gt;powershell.exe Set-ExecutionPolicy RemoteSigned&lt;br /&gt;REM command to run script from the ps1 file&lt;br /&gt;powershell.exe -noexit .\webconfigchange.ps1&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:black;"&gt;So there it is. With double-click of batch file, 48 web.config files are modified. If I ever want to remove the values, I can run same ps1 but replace every "WebConfigModifications.Add" entry with "WebConfigModifications.Remove." Another thing I like about SPWebConfigModification Class is that all the changes are stored in the SharePoint configuration database so if I ever add new front ends, the web.config values are automatically populated.&lt;/span&gt; &lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8931224549897564274-718980034823433315?l=mpdsharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mpdsharepoint.blogspot.com/feeds/718980034823433315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mpdsharepoint.blogspot.com/2009/06/update-your-webconfig-with-powershell_20.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/718980034823433315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8931224549897564274/posts/default/718980034823433315'/><link rel='alternate' type='text/html' href='http://mpdsharepoint.blogspot.com/2009/06/update-your-webconfig-with-powershell_20.html' title='Update SharePoint web.config with Powershell'/><author><name>Matt Lally</name><uri>http://www.blogger.com/profile/15342798185660428684</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
