<?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-429025622434259152</id><updated>2012-02-10T16:26:28.906+02:00</updated><category term='Client Object Model'/><category term='Packaging and Deployment'/><category term='Leadership'/><category term='SharePoint 2010 Development'/><category term='Other Tech Guides'/><category term='Standards'/><category term='SharePoint Development'/><category term='SharePoint 2010 Transition'/><category term='SilverLight for SharePoint 2007'/><category term='Tools'/><category term='Vision Casting'/><category term='Business Impact'/><category term='Nintex Workflow 2010'/><category term='SharePoint JavaScript'/><category term='SharePoint 2010 General'/><category term='InfoPath 2010 Development'/><title type='text'>SharePoint Roots</title><subtitle type='html'>Center for responsible SharePoint Development</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://johanolivier.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://johanolivier.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Johan Olivier</name><uri>http://www.blogger.com/profile/12362783186069410694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='19' src='http://2.bp.blogspot.com/_SX0lCwhJEzc/SxYSinEvesI/AAAAAAAAAAM/YDzvQbZhOzk/S220/JohanMuggshot.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>47</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-429025622434259152.post-3804229796284700123</id><published>2011-12-06T15:03:00.001+02:00</published><updated>2011-12-06T15:27:59.546+02:00</updated><title type='text'>Show or Hide SharePoint Ribbon Tab based on User Permissions</title><content type='html'>&lt;p class="MsoNormal"&gt;This week I wanted to figure out how to show or hide a custom developed SharePoint Ribbon Tab based on the permissions of a logged in SharePoint user. &lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;I have a custom SharePoint 2010 Ribbon Tab with the title ‘Show or Hide Tab’ and I want to hide the tab if a current logged in user is a member of the ‘Root Visitors’ security group. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;I do not want to hide the entire ribbon and I also do not want to hide only the inactive buttons. The ribbon with the ‘Documents’ and ‘Library’ tabs must be visible for all users and audience targeting must be applied to the new custom ribbon tab.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;I can imagine that the requirement is quite a common one. You might want to develop a set of custom tabs which are only visible to users who are members of a specific SharePoint group.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;I assume that you know how to develop a custom ribbon – if not please follow the great blog series by Chris O’Brien on &lt;a href="http://www.sharepointnutsandbolts.com/2010/01/customizing-ribbon-part-1-creating-tabs.html"&gt;Ribbon Customizations&lt;/a&gt; and ensure that your custom ribbon tab works before you continue with this tutorial.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes"&gt;&lt;a href="http://lh6.ggpht.com/-CvtPQ__R2hk/Tt4SOGx7J_I/AAAAAAAAAmg/pQqQYFo03yc/s1600-h/clip_image001%25255B14%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://lh5.ggpht.com/--VnIEg3bZHc/Tt4SPXcx6ZI/AAAAAAAAAmo/KtDR7K3gXqM/clip_image001_thumb%25255B6%25255D.png?imgmax=800" width="368" height="132" v:shapes="Picture_x0020_1"&gt;&lt;/a&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;I could not find a blog with an appropriate example on the web so I used a combination of a few blog posts and added my own logic.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;I want to thank Chris O’Brien for his series on &lt;a href="http://www.sharepointnutsandbolts.com/2010/01/customizing-ribbon-part-1-creating-tabs.html"&gt;Ribbon Customizations&lt;/a&gt; and Tobias Lekman for his &lt;a href="http://blog.lekman.com/2011/05/hiding-inactive-ribbon-commands-in.html"&gt;helpful blog post&lt;/a&gt; . Their contributions were extremely helpful during my research.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;font size="3"&gt;How it works:&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt; &lt;p align="left"&gt;I have a custom ribbon with the title ‘Show or Hide Tab’.I also have a SharePoint Group Called ‘Root Visitors’. I log in to SharePoint as a user who is not a member of this group.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes"&gt;&lt;a href="http://lh6.ggpht.com/-i1S0SYdHy4A/Tt4SRIFTYUI/AAAAAAAAAmw/rRmClg4Lg9E/s1600-h/clip_image002%25255B12%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh4.ggpht.com/-2Ry2om43Wno/Tt4SSsd7hSI/AAAAAAAAAm4/QW9ZEPovL1c/clip_image002_thumb%25255B4%25255D.png?imgmax=800" width="368" height="140" v:shapes="Picture_x0020_2"&gt;&lt;/a&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;I navigate to the Shared Documents library and do not see the custom ribbon tab.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes"&gt;&lt;a href="http://lh5.ggpht.com/-386d0DB9U9E/Tt4STcfFzGI/AAAAAAAAAnA/b1MfA9jB_og/s1600-h/clip_image003%25255B22%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://lh4.ggpht.com/-qwSl_7zwQK0/Tt4SU8S6M9I/AAAAAAAAAnI/pkQD8nVJ-U0/clip_image003_thumb%25255B6%25255D.png?imgmax=800" width="368" height="86" v:shapes="Picture_x0020_6"&gt;&lt;/a&gt;&lt;/span&gt;&lt;br style="page-break-before: always; mso-special-character: line-break" clear="all"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;Now I add the user to the security group&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes"&gt;&lt;a href="http://lh4.ggpht.com/-pXcQE-mOEAE/Tt4SV4_efFI/AAAAAAAAAnQ/ZYLzD7LeT8k/s1600-h/clip_image004%25255B11%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://lh3.ggpht.com/-yjnVT6Xs5o0/Tt4SXfTvfSI/AAAAAAAAAnY/dlaUHkcen8E/clip_image004_thumb%25255B3%25255D.png?imgmax=800" width="368" height="127" v:shapes="Picture_x0020_4"&gt;&lt;/a&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;…and I navigate back to the Shared Documents library. Now the custom ribbon tab is visible.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes"&gt;&lt;a href="http://lh4.ggpht.com/-xPG8RDF-O3U/Tt4SYWHQCxI/AAAAAAAAAng/swhqAd3LvwI/s1600-h/clip_image005%25255B22%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image005" border="0" alt="clip_image005" src="http://lh5.ggpht.com/-_QBuLA-fUCg/Tt4SZ5mbEPI/AAAAAAAAAno/Eh9pT2oJAB4/clip_image005_thumb%25255B6%25255D.png?imgmax=800" width="368" height="134" v:shapes="Picture_x0020_7"&gt;&lt;/a&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Ok, so Let’s Get Started&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;font color="#004080"&gt;&lt;strong&gt;Prerequisites (…you need the following in place before you start coding):&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;ol&gt; &lt;ol&gt; &lt;li&gt; &lt;div style="text-indent: -18pt; mso-list: l0 level1 lfo1" class="MsoListParagraphCxSpFirst" align="left"&gt;&lt;span&gt;the ID of the Ribbon Tab which you want to hide ( I created a custom ribbon tab –see elements file contents below)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt; &lt;li&gt; &lt;div style="text-indent: -18pt; mso-list: l0 level1 lfo1" class="MsoListParagraphCxSpFirst" align="left"&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;the name of the SharePoint Security Group which can see the ribbon item&lt;/span&gt;&lt;/div&gt;&lt;/li&gt; &lt;li&gt; &lt;div style="text-indent: -18pt; mso-list: l0 level1 lfo1" class="MsoListParagraphCxSpFirst" align="left"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;/span&gt;&lt;span&gt;jquery-1.6.2.min.js&lt;/span&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt; (download from &lt;/span&gt;&lt;a href="http://docs.jquery.com/Downloading_jQuery"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;a href="http://docs.jquery.com/Downloading_jQuery)"&gt;http://docs.jquery.com/Downloading_jQuery&lt;/span&gt;&lt;/a&gt;)&lt;/a&gt;&lt;/div&gt;&lt;/li&gt; &lt;li&gt; &lt;div style="text-indent: -18pt; mso-list: l0 level1 lfo1" class="MsoListParagraphCxSpFirst" align="left"&gt;&lt;span&gt;&lt;span style="mso-list: ignore"&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&lt;/span&gt;&lt;/span&gt;jquery.SPServices-0.6.2.js - t&lt;/span&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;his is a jQuery library which abstracts SharePoint’s Web Services and makes them easier to use. It also includes functions which use the various Web Service operations to provide more useful (and cool) capabilities. It works entirely client side and requires no server install. &lt;/span&gt;&lt;a href="http://spservices.codeplex.com/"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;http://spservices.codeplex.com&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 18pt; mso-add-space: auto; mso-layout-grid-align: none" class="MsoListParagraphCxSpMiddle"&gt;&lt;span class="MsoHyperlink"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="color: windowtext; text-decoration: none; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; text-underline: none"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p style="line-height: normal; text-indent: -18pt; margin-bottom: 0pt; mso-list: l0 level1 lfo1; mso-add-space: auto; mso-layout-grid-align: none" class="MsoListParagraphCxSpMiddle"&gt;&lt;font color="#004080"&gt;&lt;strong&gt;Development Tasks (…you will code the following):&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;ol&gt; &lt;ol&gt; &lt;li&gt; &lt;div style="line-height: normal; text-indent: -18pt; margin-bottom: 0pt; mso-list: l0 level1 lfo1; mso-add-space: auto; mso-layout-grid-align: none" class="MsoListParagraphCxSpMiddle"&gt;Construct the JQuery to hide the ribbon tab&lt;/div&gt;&lt;/li&gt; &lt;li&gt; &lt;div style="line-height: normal; text-indent: -18pt; margin-bottom: 0pt; mso-list: l0 level1 lfo1; mso-add-space: auto; mso-layout-grid-align: none" class="MsoListParagraphCxSpMiddle"&gt;Register the JQuery to hide the ribbon tab&lt;/div&gt;&lt;/li&gt; &lt;li&gt; &lt;div style="line-height: normal; text-indent: -18pt; margin-bottom: 0pt; mso-list: l0 level1 lfo1; mso-add-space: auto; mso-layout-grid-align: none" class="MsoListParagraphCxSpMiddle"&gt;Verify that it all works fine&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt; &lt;blockquote&gt; &lt;p style="line-height: normal; text-indent: -18pt; margin-bottom: 0pt; mso-list: l0 level1 lfo1; mso-add-space: auto; mso-layout-grid-align: none" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="3"&gt;&lt;font color="#004080"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="line-height: normal; text-indent: -18pt; margin-bottom: 0pt; mso-list: l0 level1 lfo1; mso-add-space: auto; mso-layout-grid-align: none" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="3"&gt;&lt;font color="#004080"&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p style="text-indent: -18pt; mso-list: l1 level1 lfo2" class="MsoListParagraphCxSpFirst"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;1.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Get the ID of the Ribbon Tab which you want to hide:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p class="MsoListParagraphCxSpLast"&gt;If you have a custom ribbon tab then you can get the ID value from the Elements.xml file. In the example below the ID of my custom ribbon is ‘&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;DemoHideRibbonTab’&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;?&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;xml&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;version&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;1.0&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;encoding&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;utf-8&lt;/span&gt;"&lt;span style="color: blue"&gt;?&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;Elements&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;xmlns&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;http://schemas.microsoft.com/sharepoint/&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;CustomAction&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Id&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;DemoHideRibbonTab&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpFirst"&gt;As an alternative you can use the following handy piece of JQuery to view the IDs of all the Ribbon Tabs on a page. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle"&gt;Copy the JQuery code below and paste it inside a Content Editor Web Part on the SharePoint library AllItems.aspx page and save the page.&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;/span&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;$("a.ms-cui-tt-a").each(function () &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;var objTabTitle = $(this).parent().attr("id");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;alert( objTabTitle );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;});&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p class="MsoListParagraphCxSpMiddle"&gt;When you refresh the page the JQuery will iterate through all the ribbon tabs and display their IDs.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle"&gt;You should see the IDs of the different ribbon tabs:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes"&gt;&lt;a href="http://lh4.ggpht.com/-h7wdEHEu5Mg/Tt4Sa8K-Q0I/AAAAAAAAAnw/hIdZbNrxkyY/s1600-h/clip_image006%25255B11%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://lh3.ggpht.com/-EiczWoGfZYo/Tt4ScdGbquI/AAAAAAAAAn4/HWJmwr9yNsI/clip_image006_thumb%25255B3%25255D.png?imgmax=800" width="368" height="142" v:shapes="Picture_x0020_9"&gt;&lt;/a&gt;&lt;/span&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p style="text-indent: -18pt; mso-list: l1 level1 lfo2" class="MsoListParagraphCxSpMiddle"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;2.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Get the &lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;name of the SharePoint Security Group&lt;/span&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p class="MsoListParagraphCxSpMiddle"&gt;The security group for which you must hide the ribbon tab must be a SharePoint group –it’s simple, you must have the name of the group.&lt;o:p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p style="line-height: normal; text-indent: -18pt; margin-bottom: 0pt; mso-list: l1 level1 lfo2; mso-add-space: auto; mso-layout-grid-align: none" class="MsoListParagraphCxSpMiddle"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="mso-list: ignore"&gt;3.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Download and distribute jquery-1.6.2.min.js&lt;/span&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p style="line-height: normal; margin-bottom: 0pt; mso-add-space: auto; mso-layout-grid-align: none" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;The jQuery library is a single JavaScript file, containing all of its common DOM, event, effects, and Ajax functions. It can be included within a SharePoint page by linking to a local copy.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p style="line-height: normal; margin-bottom: 0pt; mso-add-space: auto; mso-layout-grid-align: none" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;Download jquery-1.6.2.min.js from &lt;/span&gt;&lt;a href="http://docs.jquery.com/Downloading_jQuery"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;http://docs.jquery.com/Downloading_jQuery&lt;/span&gt;&lt;/a&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt; and distribute into the 14-hive of your SharePoint web-front-end server.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p style="line-height: normal; margin-bottom: 0pt; mso-add-space: auto; mso-layout-grid-align: none" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;Example: C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\HideRibbonSample\Scripts\&lt;/span&gt; &lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;jquery-1.6.2.min.js&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p style="text-indent: -18pt; mso-list: l1 level1 lfo2" class="MsoListParagraphCxSpMiddle"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;4.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;Download and distribute jquery.SPServices-0.6.2.js &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p style="line-height: normal; margin-bottom: 0pt; mso-add-space: auto; mso-layout-grid-align: none" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;This is a jQuery library which abstracts SharePoint’s Web Services and makes them easier to use. It also includes functions which use the various Web Service operations to provide more useful (and cool) capabilities. It works entirely client side and requires no server install.&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p style="line-height: normal; margin-bottom: 0pt; mso-add-space: auto; mso-layout-grid-align: none" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;Download jquery.SPServices-0.6.2.js from &lt;/span&gt;&lt;a href="http://spservices.codeplex.com/"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;http://spservices.codeplex.com&lt;/span&gt;&lt;/a&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;and distribute into the 14-hive of your SharePoint web-front-end server.&lt;u&gt;&lt;span style="color: blue; mso-themecolor: hyperlink"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p style="line-height: normal; margin-bottom: 0pt; mso-add-space: auto; mso-layout-grid-align: none" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;Exanple: C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\HideRibbonSample\Scripts\&lt;/span&gt; &lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;jquery.SPServices-0.6.2.js&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin-bottom: 0pt; mso-add-space: auto; mso-layout-grid-align: none" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p style="line-height: normal; text-indent: -18pt; margin-bottom: 0pt; mso-list: l0 level1 lfo1; mso-add-space: auto; mso-layout-grid-align: none" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="3"&gt;&lt;font color="#004080"&gt;&lt;strong&gt;Development Tasks:&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p style="text-indent: -18pt; mso-list: l1 level1 lfo2" class="MsoListParagraphCxSpFirst"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p style="line-height: normal; text-indent: -18pt; margin-bottom: 0pt; mso-list: l1 level1 lfo2; mso-add-space: auto; mso-layout-grid-align: none" class="MsoListParagraphCxSpMiddle"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;1.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Construct the JQuery to hide the ribbon tab&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;u&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p style="line-height: normal; margin-bottom: 0pt; mso-add-space: auto; mso-layout-grid-align: none" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;We now have all the prerequisites in place and we can start coding the JQuery which will hide the ribbon tab.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin-bottom: 0pt; mso-add-space: auto; mso-layout-grid-align: none" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;Create a new empty file and save the file to the 14-hive of your SharePoint web-front-end server.&lt;u&gt;&lt;span style="color: blue; mso-themecolor: hyperlink"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin-bottom: 0pt; mso-add-space: auto; mso-layout-grid-align: none" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;Exanple: C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\HideRibbonSample\Scripts\HideRibbonSample.js&lt;/span&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;Add the following JQuery to the file.&lt;/span&gt;&lt;span style="line-height: 115%; font-size: 12pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;function checkIfUserIsInGroup() &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;$(document).ready(function() { $().SPServices({&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;operation: "GetGroupCollectionFromUser",&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;userLoginName: $().SPServices.SPGetCurrentUser(),&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;async: false,&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;completefunc: function(xData, Status) {&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if($(xData.responseXML).find("Group[Name='Root Visitors']").length == 1)&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;return "true";&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;HideTab();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;return "false";&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;});&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;});&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;}&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;/span&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;function HideTab() &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;$("a.ms-cui-tt-a").each(function () &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;var objTabTitle = $(this).parent().attr("id");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;if(objTabTitle == "DemoHideRibbonTab-title")&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;$(this).parent().hide();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;});&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;var ribbonSelected;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;function checkRibbonState() { &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;var id = $("li.ms-cui-tt-s").attr("id");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if (ribbonSelected != id) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ribbonSelected = id;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;checkIfUserIsInGroup(); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;function beginCheckRibbon() &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;var checkRibbonStateInterval = setInterval("checkRibbonState()", 10);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;$(document).ready(function () &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;setTimeout("beginCheckRibbon()", 1000);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;});&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 36pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="text-indent: -18pt; mso-list: l1 level1 lfo2" class="MsoListParagraphCxSpFirst"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p style="line-height: normal; text-indent: -18pt; margin-bottom: 0pt; mso-list: l1 level1 lfo2; mso-add-space: auto; mso-layout-grid-align: none" class="MsoListParagraphCxSpMiddle"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;2.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Register the JQuery as a custom action on the relevant ribbon tab&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p class="MsoListParagraphCxSpMiddle"&gt;Open the elements.xml file in which your custom ribbon tab is defined.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p class="MsoListParagraphCxSpMiddle"&gt;You have to register the JQuery scripts in the correct sequence.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p class="MsoListParagraphCxSpMiddle"&gt;Use the ScriptLink class to register the following scripts:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p style="text-indent: -18pt; margin-left: 72pt; mso-list: l1 level2 lfo2; mso-add-space: auto" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;1.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;The jquery-1.6.2.min.js script.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p style="text-indent: -18pt; margin-left: 72pt; mso-list: l1 level2 lfo2; mso-add-space: auto" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;2.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;The jquery.SPServices-0.6.2.js script.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p style="text-indent: -18pt; margin-left: 72pt; mso-list: l1 level2 lfo2; mso-add-space: auto" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;3.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Your custom JQuery Hide Ribbon script.&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;CustomAction&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Id&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;JohanJQuery.Script&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Location&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;ScriptLink&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;ScriptSrc&lt;/span&gt;&lt;span style="color: blue"&gt; =&lt;/span&gt;"&lt;span style="color: blue"&gt;/_layouts/HideRibbonSample/Scripts/jquery-1.6.2.min.js&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Sequence&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;100&lt;/span&gt;"&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;CustomAction&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Id&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;SPS_SERVICE_JohanJQuery.Script&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Location&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;ScriptLink&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;ScriptSrc&lt;/span&gt;&lt;span style="color: blue"&gt; =&lt;/span&gt;"&lt;span style="color: blue"&gt;/_layouts/HideRibbonSample/Scripts/jquery.SPServices-0.6.2.js&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Sequence&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;101&lt;/span&gt;"&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;CustomAction&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Id&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;JohanHideTab_JohanJQuery.Script&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Location&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;ScriptLink&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;ScriptSrc&lt;/span&gt;&lt;span style="color: blue"&gt; =&lt;/span&gt;"&lt;span style="color: blue"&gt;/_layouts/HideRibbonSample/Scripts/HideRibbonSample.js" &lt;/span&gt;&lt;span style="color: red"&gt;Sequence&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;102&lt;/span&gt;"&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p class="MsoListParagraphCxSpLast"&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpLast"&gt;My complete Ribbon Tab definition with the script registration is as follows:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;xml&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;version&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;1.0&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;encoding&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;utf-8&lt;/span&gt;"&lt;span style="color: blue"&gt;?&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;Elements&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;xmlns&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;http://schemas.microsoft.com/sharepoint/&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;CustomAction&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Id&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;DemoHideRibbonTab&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Location&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;CommandUI.Ribbon&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;RegistrationId&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;101&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;RegistrationType&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;List&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;CommandUIExtension&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;CommandUIDefinitions&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;CommandUIDefinition&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Location&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;Ribbon.Tabs._children&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;Tab&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Id&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;DemoHideRibbonTab&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Title&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Show or Hide Tab&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Description&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Show or Hide Tab&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Sequence&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;501&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;Scaling&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Id&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;DemoHideRibbonTab.Scaling&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;MaxSize&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Id&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;DemoHideRibbonTab.OneLargeGroupMaxSize&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;GroupId&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;DemoHideRibbonTab.OneLargeGroupExample&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Size&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;OneLarge&lt;/span&gt;"&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;Scaling&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;Groups&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Id&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;DemoHideRibbonTab.GeneralControls.Groups&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;Group&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Id&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;DemoHideRibbonTab.OneLargeGroupExample&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Description&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;Contains custom controls&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Title&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;Show Message&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Sequence&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;55&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Template&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;Ribbon.Templates.OneLarge&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;Controls&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Id&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;DemoHideRibbonTab.OneLargeGroupExample.Controls&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;Button&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Id&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;DemoHideRibbonTab.OneLargeGroupExample.Controls.Button&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;LabelText&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;Show Message&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Image16by16&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;/_layouts/images/newtargetapp16.png&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Image32by32&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;/_layouts/images/newtargetapp32.png&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Command&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;COB.Command.SayHello&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Sequence&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;10&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;TemplateAlias&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;custLarge1&lt;/span&gt;"&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;Controls&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;Group&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;Groups&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;Tab&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;CommandUIDefinition&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;CommandUIDefinition&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Location&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;Ribbon.Templates._children&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;GroupTemplate&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Id&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;Ribbon.Templates.OneLarge&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;Layout&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Title&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;OneLarge&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;LayoutTitle&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;OneLarge&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;Section&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Alignment&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;Top&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;OneRow&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;Row&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;ControlRef&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;DisplayMode&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;Large&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;TemplateAlias&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;custLarge1&lt;/span&gt;"&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;Row&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;Section&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;Layout&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;GroupTemplate&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;CommandUIDefinition&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;CommandUIDefinitions&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;CommandUIHandlers&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;CommandUIHandler&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Command&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;COB.Command.SayHello&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;CommandAction&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;javascript:alert('Hello World');&lt;/span&gt;"&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;CommandUIHandlers&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;CommandUIExtension&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;CustomAction&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;CustomAction&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Id&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;JohanJQuery.Script&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Location&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;ScriptLink&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;ScriptSrc&lt;/span&gt;&lt;span style="color: blue"&gt; =&lt;/span&gt;"&lt;span style="color: blue"&gt;/_layouts/HideRibbonSample/Scripts/jquery-1.6.2.min.js&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Sequence&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;100&lt;/span&gt;"&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;CustomAction&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Id&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;SPS_SERVICE_JohanJQuery.Script&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Location&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;ScriptLink&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;ScriptSrc&lt;/span&gt;&lt;span style="color: blue"&gt; =&lt;/span&gt;"&lt;span style="color: blue"&gt;/_layouts/HideRibbonSample/Scripts/jquery.SPServices-0.6.2.js&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Sequence&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;101&lt;/span&gt;"&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;CustomAction&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 9.5pt"&gt;Id&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;"&lt;span style="color: blue"&gt;JohanHideTab_JohanJQuery.Script&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Location&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;ScriptLink&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;ScriptSrc&lt;/span&gt;&lt;span style="color: blue"&gt; =&lt;/span&gt;"&lt;span style="color: blue"&gt;/_layouts/HideRibbonSample/Scripts/HideRibbonSample.js" &lt;/span&gt;&lt;span style="color: red"&gt;Sequence&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;102&lt;/span&gt;"&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 9.5pt"&gt;Elements&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="line-height: normal; text-indent: -18pt; margin-bottom: 0pt; mso-list: l0 level1 lfo1; mso-add-space: auto; mso-layout-grid-align: none" class="MsoListParagraphCxSpMiddle"&gt;&lt;/p&gt; &lt;p style="text-indent: -18pt; mso-list: l1 level1 lfo2" class="MsoListParagraphCxSpFirst"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p style="line-height: normal; text-indent: -18pt; margin-bottom: 0pt; mso-list: l1 level1 lfo2; mso-add-space: auto; mso-layout-grid-align: none" class="MsoListParagraphCxSpMiddle"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;3.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Verify that it works fine&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p style="margin-bottom: 0pt" class="MsoNormal"&gt;Build, Package and Deploy your custom ribbon feature.&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p style="margin-bottom: 0pt" class="MsoNormal"&gt;Deactivate and Activate the feature in your site and refresh the SharePoint page on which the ribbon should appear (because the registration ID of my ribbon is ‘101’ the page which I should see the ribbon tab is http://demoweb/Shared%20Documents/Forms/AllItems.aspx.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;If I am a member of the ‘Root Visitors’ group then the tab is visible.&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image005" border="0" alt="clip_image005" src="http://lh4.ggpht.com/-h0AK49cu-cw/Tt4SdmrrWnI/AAAAAAAAAoA/u_soWkg79RM/clip_image005_thumb%25255B7%25255D.png?imgmax=800" width="368" height="134" v:shapes="Picture_x0020_3"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;If I am not a member of the ‘Root Visitors’ group then the tab is not visible.&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes"&gt;&lt;a href="http://lh4.ggpht.com/-WPGrN-6azeY/Tt4SehSbZLI/AAAAAAAAAoI/PDAN_v4vRC0/s1600-h/clip_image003%25255B23%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://lh5.ggpht.com/-3Ee0uI0t-Po/Tt4SgKragqI/AAAAAAAAAoQ/DPU7h0hyf8I/clip_image003_thumb%25255B7%25255D.png?imgmax=800" width="368" height="86" v:shapes="Picture_x0020_5"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p style="margin-bottom: 0pt" class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;/b&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin-bottom: 0pt" class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Enjoy!!&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p style="margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-size: 12pt"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-size: 12pt"&gt;&lt;font size="2"&gt;&lt;strong&gt;References:&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p style="margin-bottom: 0pt" class="MsoNormal"&gt;Once again, thanks for the contributions made by members of the community.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p style="margin-bottom: 0pt" class="MsoNormal"&gt;Chris O’Brien: &lt;a href="http://www.sharepointnutsandbolts.com/2010/01/customizing-ribbon-part-1-creating-tabs.html"&gt;Ribbon Customizations&lt;/a&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p class="MsoNormal"&gt;Tobias Lekman: &lt;a href="http://blog.lekman.com/2011/05/hiding-inactive-ribbon-commands-in.html"&gt;Hiding Inactive Ribbon Commands in SharePoint 2010 &lt;/a&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p style="margin-bottom: 0pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-size: 9.5pt; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&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/429025622434259152-3804229796284700123?l=johanolivier.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johanolivier.blogspot.com/feeds/3804229796284700123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johanolivier.blogspot.com/2011/12/show-or-hide-sharepoint-ribbon-tab.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/3804229796284700123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/3804229796284700123'/><link rel='alternate' type='text/html' href='http://johanolivier.blogspot.com/2011/12/show-or-hide-sharepoint-ribbon-tab.html' title='Show or Hide SharePoint Ribbon Tab based on User Permissions'/><author><name>Johan Olivier</name><uri>http://www.blogger.com/profile/12362783186069410694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='19' src='http://2.bp.blogspot.com/_SX0lCwhJEzc/SxYSinEvesI/AAAAAAAAAAM/YDzvQbZhOzk/S220/JohanMuggshot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/--VnIEg3bZHc/Tt4SPXcx6ZI/AAAAAAAAAmo/KtDR7K3gXqM/s72-c/clip_image001_thumb%25255B6%25255D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429025622434259152.post-3434283867181492471</id><published>2011-11-11T10:15:00.001+02:00</published><updated>2011-11-11T11:26:11.459+02:00</updated><title type='text'>European SP Conference Exceeded Expectations</title><content type='html'>&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-uMOmU6PadRs/TrzYwsFs0fI/AAAAAAAAAiw/zsoanwKDfHo/s1600-h/clip_image001%25255B4%25255D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://lh3.ggpht.com/-cHRpzIfCllU/TrzY1Z9F-BI/AAAAAAAAAi4/v0qKP8ptQdE/clip_image001_thumb%25255B1%25255D.png?imgmax=800" width="579" height="208"&gt;&lt;/a&gt;  &lt;p&gt;Wow, time flies when you're having fun!  &lt;p&gt;During the past few weeks I have been on a very exciting SharePoint journey during which I travelled almost 39 000 kilometres and took part in SharePoint activities in Istanbul, Berlin and New York.  &lt;p&gt;Each stop was a very different experience and each SharePoint activity offered a unique view into the SharePoint world.  &lt;p&gt;The European SharePoint Conference was the highlight of this tour and exceeded all my expectations.  &lt;p&gt;I have been to many conferences before and I can without a doubt say that the European SP conference was out of the ordinary.  &lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;A few highlights of the conference include the following:&lt;/font&gt;&lt;/b&gt;  &lt;p&gt;&lt;strong&gt;· It was clear that we have moved on from the ‘&lt;i&gt;Understand SharePoint&lt;/i&gt;’ topics to ‘&lt;i&gt;Let’s provide solutions&lt;/i&gt;’ topics.&lt;/strong&gt;  &lt;p&gt;Conference content and vendor exhibitions were aimed at how to extend SharePoint with custom development and 3rd Party value-add features in order to provide better solutions. Strategic thinking was the order of the day and I am sure that over the course of the 3 days a significant number of industry leaders had to at some point shift their thinking from product to solution. For me as a solutions architect it is very exciting to experience how well established SharePoint is in the industry and that we are now comfortable enough to move on to a next phase in the SharePoint lifecycle.  &lt;p&gt;As an example of how far we’ve come, a few years ago we had topics like ‘&lt;i&gt;What’s new in SharePoint workflow development&lt;/i&gt;’. This year at the EUSPC 2011 we had a SharePoint Shootout session for workflow during which various workflow products were compared in order to help architects and decision makers to understand the differences between the available workflow engines.  &lt;p&gt;· &lt;b&gt;I experienced an instant comradeship between delegates and solid friendships were established&lt;/b&gt;  &lt;p&gt;This is without a doubt the most important take-away from the conference. It is normally quite a challenge to ensure we make most of a conference by not allowing for the experience to end at the closing keynote. The SharePint event and other similar social get-togethers provided a great way for us to connect, have a beer (or few) and socialize. I have made friends with SharePoint comrades from around the world and appreciate that we can stay connected and exchange ideas and support one another.  &lt;p&gt;· &lt;b&gt;Great Presentations &lt;/b&gt; &lt;p&gt;The 45 minutes allocated per session was not enough time to provide a proper introduction, do a knowledge transfer and take some questions. Many delegates expressed this concern and I also battled during my presentation to stay within time.  &lt;p&gt;However, the benefit of short sessions is that the audience receive high-impact and to-the-point presentations.  &lt;p&gt;The speakers came from across the world to share their experiences and having 4 simultaneous tracks ensured that a wide spectrum of SharePoint topics were covered.  &lt;p&gt;The presentations are available for download on the &lt;a href="http://www.sharepointeurope.com/conferences/2011/conference-programme-at-a-glance.aspx"&gt;conference website&lt;/a&gt;.  &lt;p&gt;(The presentations are immediately available to delegates and will be available to the general public after 25 November 2011)  &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-KGxRFDjSLuU/TrzY8Ok93wI/AAAAAAAAAjA/2I9GkHCeyoQ/s1600-h/clip_image002%25255B4%25255D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh4.ggpht.com/-WhaDX7Rrmcg/TrzZChGlQWI/AAAAAAAAAjI/kS7ep4nAxaI/clip_image002_thumb%25255B1%25255D.png?imgmax=800" width="579" height="423"&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;a href="http://lh6.ggpht.com/--nRojQcV6uA/TrzZF1X2ZgI/AAAAAAAAAjQ/wwcydoquCHk/s1600-h/clip_image003%25255B4%25255D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://lh5.ggpht.com/-6T0oD_bS3-g/TrzZJoE-PjI/AAAAAAAAAjY/rDQLAKoIZ8U/clip_image003_thumb%25255B1%25255D.png?imgmax=800" width="579" height="399"&gt;&lt;/a&gt;&lt;/b&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;· &lt;b&gt;Exhibitors showcased valuable solutions applicable to solving real-world challenges&lt;/b&gt;  &lt;p&gt;I am very impressed with the products which the vendors showcased. As a solution architect I always try to keep a wide range of SharePoint solution enablers in my toolbox and I am very excited to see that there is a very high industry standard and that the vendors do help us to take SharePoint further through rapid implementation of great add-ons.  &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;· &lt;b&gt;The conference was very well organized&lt;/b&gt;  &lt;p&gt;Hats off to Helen, Mary, Declan, Tracy, and the rest of the European SharePoint team for doing a brilliant job in planning and coordinating the event. Everything went very well and I had a great time overall.  &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;Content:&lt;/b&gt;  &lt;p&gt;90 presentations were delivered across 4 tracks (IT DM, IT Pro, Dev and Gen). The 4 tracks provided a very rich selection of outstanding topics and at times made it difficult to choose which one of simultaneous presentations to attend. The 60 speakers came from across the globe. There was an obvious variance in the quality of the presentations but some were really good.  &lt;p&gt;What I did pick up from most sessions is the fact that the speakers tend to jump in and start showing code and technical know-how without taking the time to explain to the audience how they can benefit from the feature. I believe it is extremely important for the audience to appreciate the importance and value-ad of a technical discussion before the code syntax is explained. The occasional lack of proper introductions and closing statements could be because the sessions were limited to 45 minutes each.  &lt;p&gt;The presentations are available for download by the public after 25 November on the &lt;a href="http://www.sharepointeurope.com/conferences/2011/conference-programme-at-a-glance.aspx"&gt;conference website&lt;/a&gt;.  &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;SharePint:&lt;/b&gt;  &lt;p&gt;AvePoint hosted a “Red-Party” on the second night of the conference but could only accommodate a limited number of people and many of us who registered for the party were disappointed to find out that we did not collect the entrance tags in time and therefore could no longer attend.  &lt;p&gt;Fortunately on the Tuesday afternoon, in an effort to offer an alternative social gathering for attendees unable to attend the AvePoint party, a SharePint event was organized and co-sponsored by Qorus, Axceler, Newsgator, Metalogix, and HiSoftware. Arrangements were made, flyers were handed out, tweets were sent out, and a few hours later we enjoyed free German beer, great company and awesome music at the &lt;a href="http://www.amtopm.de/"&gt;AM to PM Bar&lt;/a&gt; located in Hackescher Markt, one of Berlin’s coolest locales.  &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;Many thanks to Qorus, Axceler, Newsgator, Metalogix, and HiSoftware for organizing and sponsoring the great evening!  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-bdX1PNnQPvg/TrzZKxMK8HI/AAAAAAAAAjg/TIT6s7RpW0c/s1600-h/clip_image005%25255B5%25255D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image005" border="0" alt="clip_image005" src="http://lh4.ggpht.com/-TiJ15f5Ud_I/TrzZMRDG0JI/AAAAAAAAAjo/riAjITOQxhY/clip_image005_thumb%25255B2%25255D.jpg?imgmax=800" width="579" height="439"&gt;&lt;/a&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;Solution Enablers:&lt;/b&gt;  &lt;p&gt;I was very impressed by the products and services showcased by the exhibitors. It is always important to understand when to develop custom solution parts vs. when to make use of 3-rd party solution enablers. And having the right mix between technical presentations and a wide range of exhibitors at the conference gives me the confidence that SharePoint solution architects will take a step back and carefully consider how a mixture of SharePoint OOB features, 3&lt;sup&gt;rd&lt;/sup&gt;-party products and custom development can solve business requirements.  &lt;p&gt;Once again, think “solution” and not single product.  &lt;p&gt;See the section ‘Interesting solution enablers’ at the bottom of this blog for a brief overview of a few of the products available.  &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;a href="http://lh5.ggpht.com/-6np1h6wz-Jo/TrzZOHMItjI/AAAAAAAAAjw/7K7egPM-qyc/s1600-h/clip_image006%25255B4%25255D.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image006" border="0" alt="clip_image006" src="http://lh3.ggpht.com/-1FuANuExrQY/TrzZPnFYDaI/AAAAAAAAAj4/SLxjY36qJPs/clip_image006_thumb%25255B1%25255D.png?imgmax=800" width="331" height="520"&gt;&lt;/a&gt;&lt;/b&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;Immediate Actions:&lt;/b&gt;  &lt;p&gt;There are thousands who did not have the opportunity to attend the conference. It is our responsibility to take the conference into the workplace and I cannot wait to share the relevant knowledge with my team and local community.  &lt;p&gt;I am already in touch with a number of speakers, vendors and delegates and I will trial / explore some of the products, download and research some of the presentations and use my findings to conduct at least 5 geek-talk-round-table discussions with my team in order to see how we can benefit from the conference content.  &lt;p&gt;&lt;b&gt;Conclusion:&lt;/b&gt;  &lt;p&gt;Overall a very well organized conference with great structured content relevant to solving problems which we currently experience in the SharePoint industry.  &lt;p&gt;A fantastic vibe between conference delegates, great relationships established and an absolute great experience.  &lt;p&gt;Well done to everyone who participated and please continue with your efforts to share the knowledge and passion for SharePoint with those around you!  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-yYrtTreOdZ4/TrzZRhDEMnI/AAAAAAAAAkA/-Z9uEMjHAKY/s1600-h/clip_image007%25255B5%25255D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image007" border="0" alt="clip_image007" src="http://lh4.ggpht.com/-pPhtd79BGlY/TrzZUTJyJLI/AAAAAAAAAkI/0eHRo824zt0/clip_image007_thumb%25255B2%25255D.png?imgmax=800" width="579" height="467"&gt;&lt;/a&gt;  &lt;p&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;Interesting Solution Enablers:&lt;/font&gt;&lt;/b&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;Qorus Software &lt;/b&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-VhOawV_Bv5o/TrzZVWRS-CI/AAAAAAAAAkQ/MoEtUNUyST0/s1600-h/clip_image009%25255B3%25255D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image009" border="0" alt="clip_image009" src="http://lh5.ggpht.com/-C61k_Y7a-qA/TrzZWrIWTiI/AAAAAAAAAkY/45iOqahWS6c/clip_image009_thumb.jpg?imgmax=800" width="108" height="110"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Qorus DocGeneration works with Microsoft SharePoint 2007 / 2010 and Microsoft Word to dramatically reduce the time and effort required to generate complex, customized documents while improving quality, consistency and effectiveness. &lt;a href="http://www.qorusdocs.com/"&gt;http://www.qorusdocs.com/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt;&amp;nbsp; &lt;p&gt;&lt;b&gt;SurfRay – Ontolica Search&lt;/b&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-PEdTjMeFOpg/TrzZXQhFo3I/AAAAAAAAAkg/3eUnBW3iWOc/s1600-h/clip_image010%25255B3%25255D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image010" border="0" alt="clip_image010" src="http://lh4.ggpht.com/-OXBVrv20nHc/TrzZYvt1OYI/AAAAAAAAAko/Uru4e7veb5k/clip_image010_thumb.png?imgmax=800" width="219" height="64"&gt;&lt;/a&gt;  &lt;p&gt;Ontolica Search Preview allows you to preview and read documents in any format directly in SharePoint search results, with hit highlighting, and navigation to the most relevant pages in your documents . This reduces search costs and increases user adoption dramatically. &lt;a href="http://www.surfray.com/"&gt;http://www.surfray.com/&lt;/a&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt;&amp;nbsp; &lt;p&gt;&lt;b&gt;NewsGator&lt;/b&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-1wY02pjh9VM/TrzZZTjFClI/AAAAAAAAAkw/pPUgquEZbOM/s1600-h/clip_image011%25255B3%25255D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image011" border="0" alt="clip_image011" src="http://lh4.ggpht.com/-4VDMY1tkiGo/TrzZafESyhI/AAAAAAAAAk4/1E4F9zQ6B8c/clip_image011_thumb.png?imgmax=800" width="244" height="62"&gt;&lt;/a&gt;  &lt;p&gt;NewsGator solutions help you overcome business challenges by providing an integrated, behind-the-firewall, social computing platform that supports collaboration, facilitates communication, and improves worker knowledge. &lt;a href="http://www.newsgator.com/"&gt;http://www.newsgator.com/&lt;/a&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt;&amp;nbsp; &lt;p&gt;&lt;b&gt;Kaldeera&lt;/b&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://lh5.ggpht.com/-ZXFRF_j74KU/TrzZbHS873I/AAAAAAAAAlA/8fgBr2UXkCY/s1600-h/clip_image013%25255B3%25255D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image013" border="0" alt="clip_image013" src="http://lh5.ggpht.com/-jK5649rLdjg/TrzZcQtrodI/AAAAAAAAAlI/KZllVmEPFFI/clip_image013_thumb.jpg?imgmax=800" width="205" height="76"&gt;&lt;/a&gt;&lt;/b&gt;  &lt;p&gt;KAF is a tool that allows you to &lt;b&gt;modify the standard SharePoint® forms&lt;/b&gt; and create powerful web form-based applications. Hide fields, display "uneditable" fields, grouping and display the information in a more intuitive way adding static text, images, Web Parts, etc. &lt;a href="http://www.kaldeera.com"&gt;http://www.kaldeera.com&lt;/a&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&amp;nbsp; &lt;p&gt;&lt;b&gt;GetOrganized&lt;/b&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-6vSwiHcewvQ/TrzZdNb6IpI/AAAAAAAAAlQ/4aj3DP6jsOo/s1600-h/clip_image014%25255B3%25255D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image014" border="0" alt="clip_image014" src="http://lh6.ggpht.com/-j6ksUv1Yp7Y/TrzZfe_oknI/AAAAAAAAAlY/ZDPI5HGWm5w/clip_image014_thumb.png?imgmax=800" width="244" height="65"&gt;&lt;/a&gt;  &lt;p&gt;In brief GetOrganized is a user friendly standard product which organizes e-mails, documents, tasks etc. in a relevant context in order to optimize collaboration and business processes in your company in a simple and efficient way. &lt;a href="http://en.getorganized.net"&gt;http://en.getorganized.net&lt;/a&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&amp;nbsp; &lt;p&gt;&lt;b&gt;Bamboo Solutions&lt;/b&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-hZsAZ1SP-Wo/TrzZgL1Z4GI/AAAAAAAAAlg/nID-GHkjqPA/s1600-h/clip_image015%25255B3%25255D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image015" border="0" alt="clip_image015" src="http://lh4.ggpht.com/-hRB5RqSv6Jo/TrzZhMA7YiI/AAAAAAAAAlo/VZqc0VrbzOo/clip_image015_thumb.png?imgmax=800" width="223" height="56"&gt;&lt;/a&gt;  &lt;p&gt;Bamboo® Solutions provides technologies that augment the SharePoint platform, and more than 60 products that provide a broad range of enhanced capabilities and solutions that maximize the value of SharePoint deployments. &lt;a href="http://bamboosolutions.com"&gt;http://bamboosolutions.com&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;b&gt;MetaLogix&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-z7aUZms5Iks/TrzqDJesrQI/AAAAAAAAAlw/1aD8KhqsIUc/s1600-h/image%25255B2%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-zeNg6RVU73E/TrzqGWfDGLI/AAAAAAAAAl4/fK7CdcfDfuc/image_thumb.png?imgmax=800" width="205" height="55"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Provides comprehensive content lifecycle management solutions that allow you to easily move data, reduce compliance risk, cut the cost of discovery, reduce storage and simplify management of Microsoft content, whether it’s on-premises or in the cloud. &lt;a href="http://www.metalogix.com"&gt;http://www.metalogix.com&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt;&amp;nbsp; &lt;p&gt;&lt;b&gt;Axceler&lt;/b&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-2TVZyCWZ5Zc/TrzqHoM9vkI/AAAAAAAAAmA/SW2lyY47q7Y/s1600-h/image%25255B5%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-FlPpVX3Y0OE/TrzqI7g0qiI/AAAAAAAAAmI/j4hh0-M_63M/image_thumb%25255B1%25255D.png?imgmax=800" width="179" height="73"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Axceler provides SharePoint solutions that help the SharePoint management team get the most out of their platform and address the most pressing SharePoint challenges facing enterprises today. Solutions include SharePoint Governance, SharePoint Administration, SharePoint Migration, SharePoint Security, SharePoint Reporting and SharePoint Visibility. &lt;a href="http://www.axceler.com"&gt;http://www.axceler.com&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt;&amp;nbsp; &lt;p&gt;&lt;b&gt;HiSoftware&lt;/b&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-C3AqzHoHV8A/TrzqJ080h0I/AAAAAAAAAmQ/6N3JhscbWGk/s1600-h/image%25255B8%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-woUf7z8JARw/TrzqMNpzPHI/AAAAAAAAAmY/tUb0sZ8wLZ4/image_thumb%25255B2%25255D.png?imgmax=800" width="183" height="63"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;HiSoftware provides content-aware compliance solutions for both Web and SharePoint® environments that detect private or confidential data and report on violations to ensure compliance with regulatory and other internal policies. &lt;a href="http://www.hisoftware.com"&gt;http://www.hisoftware.com&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/429025622434259152-3434283867181492471?l=johanolivier.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johanolivier.blogspot.com/feeds/3434283867181492471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johanolivier.blogspot.com/2011/11/european-sp-conference-exceeded.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/3434283867181492471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/3434283867181492471'/><link rel='alternate' type='text/html' href='http://johanolivier.blogspot.com/2011/11/european-sp-conference-exceeded.html' title='European SP Conference Exceeded Expectations'/><author><name>Johan Olivier</name><uri>http://www.blogger.com/profile/12362783186069410694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='19' src='http://2.bp.blogspot.com/_SX0lCwhJEzc/SxYSinEvesI/AAAAAAAAAAM/YDzvQbZhOzk/S220/JohanMuggshot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-cHRpzIfCllU/TrzY1Z9F-BI/AAAAAAAAAi4/v0qKP8ptQdE/s72-c/clip_image001_thumb%25255B1%25255D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429025622434259152.post-5421199092703688494</id><published>2011-06-28T16:04:00.001+02:00</published><updated>2011-06-28T16:34:16.497+02:00</updated><title type='text'>Authentication Methods for SP2010 Client OM</title><content type='html'>On 25 June 2011 I presented a session at SharePoint Saturday India on the topic of the ‘SharePoint 2010 Client Object Model’. One of the questions which were asked was around the various authentication methods when using the Client Object model. &lt;br&gt;This short post will describe the authentication methods available when using the SharePoint 2010 .Net Managed Client Object Model. &lt;br&gt;&lt;b&gt;&lt;/b&gt;&lt;br&gt;The 3 Object Models with their available authentication methods are:  &lt;ol&gt; &lt;li&gt;&lt;strong&gt;.NET Client Object model &lt;/strong&gt; &lt;ul&gt; &lt;li&gt;The default is to authenticate users via their current Windows credentials (NTLM and Kerberos).  &lt;li&gt;Possible for you to define other authentication methods like Anonymous or Forms Authentication. &lt;/li&gt;&lt;/ul&gt; &lt;li&gt;&lt;strong&gt;Silverlight Client Object model&lt;/strong&gt;  &lt;ul&gt; &lt;li&gt;Default is to authenticate users via their current Windows credentials (NTLM and Kerberos).  &lt;li&gt;It is possible for you to define other authentication methods like Forms Authentication.  &lt;li&gt;It is &lt;strong&gt;not &lt;/strong&gt;possible to use the Silverlight client object model with anonymous authentication. &lt;/li&gt;&lt;/ul&gt; &lt;li&gt;&lt;strong&gt;ECMA Script Client Object model &lt;/strong&gt;&lt;/strong&gt; &lt;ul&gt; &lt;li&gt;No need for additional authentication as JavaScript already runs in an authenticated page. &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;Authentication Methods when using the .Net Client Object Model&lt;/font&gt; &lt;/strong&gt;&lt;/p&gt;&lt;a href="http://lh6.ggpht.com/-yGelrL0iXAQ/TgnfaoceSZI/AAAAAAAAAik/Wf1Y0SE3p3E/s1600-h/image%25255B4%25255D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-QGQk4EKPFUA/TgnfbuXTswI/AAAAAAAAAio/dqoBgYaT4_U/image_thumb%25255B2%25255D.png?imgmax=800" width="495" height="309"&gt;&lt;/a&gt;  &lt;p&gt;&lt;/p&gt;&lt;br&gt;The Microsoft.SharePoint.Client namespace provides a ClientAuthenticationMode enumerator.The members are:  &lt;p&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; Represents the default authentication mode.  &lt;li&gt;&lt;b&gt;FormsAuthentication:&lt;/b&gt; Represents ASP.NET forms authentication mode.  &lt;li&gt;&lt;b&gt;Anonymous:&lt;/b&gt; Represents anonymous authentication mode. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;So in order to specify the authentication type you will have something like: &lt;br&gt;&lt;font color="#004080" face="Courier New"&gt;&lt;font color="#004040"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#004080" face="Courier New"&gt;&lt;font color="#008040"&gt;//Create a client context for my site which uses Forms Authentication&lt;/font&gt; &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;ClientContext clientContext = new ClientContext("http://ltp-21:31890"); &lt;br&gt;&lt;font color="#008040"&gt;//Set the AuthenticationMode&lt;/font&gt; &lt;br&gt;clientContext.AuthenticationMode = ClientAuthenticationMode.FormsAuthentication;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;If you use Forms Authentication you will have to set properties for an instance of FormsAuthenticationLoginInfo class and assign that to the client context (see example below). &lt;br&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt; &lt;p&gt;Note:&lt;br&gt;All the examples below are based on creating a .Net Windows Console Application. Remember to please add references to: &lt;br&gt;&lt;b&gt;Microsoft.SharePoint.Client:&lt;/b&gt; C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.SharePoint.Client.dll &lt;br&gt;&lt;b&gt;Microsoft.SharePoint.Client.Runtime:&lt;/b&gt; C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.SharePoint.Client.Runtime.dll &lt;br&gt;&lt;/p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;/p&gt;The code for all three examples will:  &lt;p&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Create a client context for my site which uses a specific authentication method.  &lt;li&gt;Instruct the client context that I want to load the sub-site.  &lt;li&gt;Get the title of the site and write it to console.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;Default Authentication:&lt;/font&gt;&lt;/b&gt; &lt;br&gt;In this example the client object model will connect through using the current Windows credentials (NTLM / Kerberos). &lt;br&gt;Because the default authentication method for client object model is NTLM / Kerberos we do not explicitly need to specify an authentication method. &lt;br&gt;Remember to replace the URL of the site with that of your environment. &lt;br&gt;In my environment the URL &lt;a href="http://ltp-21:13111"&gt;http://ltp-21:13111&lt;/a&gt; points to site configured for NTLM authentication.&lt;/p&gt; &lt;p&gt;&lt;font color="#000080" face="Consolas"&gt;using System; &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;using Microsoft.SharePoint.Client; &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;namespace StdAuthSample &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;{&lt;/font&gt; &lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;class Program &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;{ &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;static void Main(string[] args) &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;{ &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;ClientContext clientContext = new ClientContext("http://ltp-21:13111"); &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;Web site = clientContext.Web; &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;clientContext.Load(site); &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;clientContext.ExecuteQuery(); &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;Console.WriteLine("Title: {0}", site.Title); &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;} &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;} &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;}&lt;/font&gt;&lt;br&gt;&lt;b&gt;&lt;/b&gt;&lt;br&gt;&lt;b&gt;&lt;font size="3"&gt;Forms Authentication:&lt;/font&gt;&lt;/b&gt; &lt;br&gt;In this example the client object model will connect through using Forms Authentication. &lt;br&gt;You have to explicitly set the authentication method to Forms Authentication by using the clientContext.AuthenticationMode. &lt;br&gt;Then you also have to specify the Authentication Login Info by creating an instance of FormsAuthenticationLoginInfo and setting the new clientContext.FormsAuthenticationLoginInfo to that of your FormsAuthenticationLoginInfo object. &lt;br&gt;Remember to replace the URL of the site with that of your environment. &lt;br&gt;In my environment the URL http://ltp-21:31890 points to a site configured for Forms Authentication.&lt;/p&gt; &lt;p&gt;&lt;font color="#000080" face="Consolas"&gt;ClientContext clientContext = new ClientContext("http://ltp-21:31890");&lt;/font&gt; &lt;br&gt;&lt;font color="#008040"&gt;&lt;font face="Consolas"&gt;//Set the AuthenticationMode &lt;/font&gt;&lt;br&gt;&lt;/font&gt;&lt;font color="#000080" face="Consolas"&gt;clientContext.AuthenticationMode = ClientAuthenticationMode.FormsAuthentication; &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;&lt;font color="#004040"&gt;&lt;font color="#008040"&gt;//Instantiate a FormsAuthenticationLoginInfo object&lt;/font&gt;.&lt;/font&gt; &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;FormsAuthenticationLoginInfo formsAuthInfo = new &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;FormsAuthenticationLoginInfo("MyFormsTestUser", "MyUserPassword!2"); &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;&lt;font color="#008040"&gt;//Specify the login details using the FormsAuthenticationLoginInfo object.&lt;/font&gt; &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;clientContext.FormsAuthenticationLoginInfo = formsAuthInfo; &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;Web site = clientContext.Web; &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;clientContext.Load(site); &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;clientContext.ExecuteQuery(); &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;Console.WriteLine("Title: {0}", site.Title);&lt;/font&gt;&lt;br&gt;&lt;b&gt;&lt;/b&gt;&lt;br&gt;&lt;b&gt;&lt;font size="3"&gt;Anonymous Authentication:&lt;/font&gt;&lt;/b&gt; &lt;br&gt;In this example the client object model will connect through using Anonymous Authentication. &lt;br&gt;You have to explicitly set the authentication method to Anonymous Authentication by using the clientContext.AuthenticationMode. &lt;br&gt;Remember to replace the URL of the site with that of your environment. &lt;br&gt;In my environment the URL http://ltp-21:12381 points to a site configured for Anonymous Authentication. &lt;/p&gt; &lt;p&gt;&lt;font color="#000080" face="Consolas"&gt;ClientContext clientContext = new ClientContext("http://ltp-21:12381"); &lt;/font&gt;&lt;br&gt;&lt;font color="#008040"&gt;&lt;font face="Consolas"&gt;//Set the AuthenticationMode &lt;/font&gt;&lt;br&gt;&lt;/font&gt;&lt;font color="#000080" face="Consolas"&gt;clientContext.AuthenticationMode = ClientAuthenticationMode.Anonymous; &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;Web site = clientContext.Web; &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;clientContext.Load(site); &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;clientContext.ExecuteQuery(); &lt;/font&gt;&lt;br&gt;&lt;font color="#000080" face="Consolas"&gt;Console.WriteLine("Title: {0}", site.Title);&lt;/font&gt; &lt;br&gt;&lt;/p&gt; &lt;p&gt;I hope this will give you a simple but complete overview of the 3 authentication methods available when using the .Net Managed SharePoint 2010 Client Object Model. &lt;br&gt;Enjoy!!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429025622434259152-5421199092703688494?l=johanolivier.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johanolivier.blogspot.com/feeds/5421199092703688494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johanolivier.blogspot.com/2011/06/authentication-methods-for-sp2010.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/5421199092703688494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/5421199092703688494'/><link rel='alternate' type='text/html' href='http://johanolivier.blogspot.com/2011/06/authentication-methods-for-sp2010.html' title='Authentication Methods for SP2010 Client OM'/><author><name>Johan Olivier</name><uri>http://www.blogger.com/profile/12362783186069410694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='19' src='http://2.bp.blogspot.com/_SX0lCwhJEzc/SxYSinEvesI/AAAAAAAAAAM/YDzvQbZhOzk/S220/JohanMuggshot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-QGQk4EKPFUA/TgnfbuXTswI/AAAAAAAAAio/dqoBgYaT4_U/s72-c/image_thumb%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429025622434259152.post-1136725420381970356</id><published>2011-05-20T16:30:00.001+02:00</published><updated>2011-05-20T16:40:00.851+02:00</updated><title type='text'>Improve SharePoint Search Relevance</title><content type='html'>&lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;Introduction:&lt;/font&gt;&lt;/b&gt;  &lt;p&gt;I recently developed a SharePoint 2010 solution which includes an advanced search web part which allows the users to perform enterprise searches and view the returned results in a graphical rich representation.  &lt;p&gt;As an architect I want to ensure that the search results that are returned to the user match what the user wanted to find and that the results that are returned on the first page are the most relevant, so the user does not have to look through several pages of results to find the best matches for their search. This is called Search Relevancy.  &lt;p&gt;It is very important to realize the difference between &lt;strong&gt;Sorting&lt;/strong&gt; and &lt;strong&gt;Ranking&lt;/strong&gt;. In my own words I would describe Sorting as the process or arranging objects according to a specific attribute of the item. An example would be the books in a library.  &lt;p&gt;Ranking is where an item takes precedence over other items based on a combination of attributes. Examples of this would be how tools in a workshop are arranged, how equipment is arranged in an E.R. room, how individuals are ranked based on the role they play in the military, or even how food items are arranged in the supermarket. One realize from these examples that there is no single property which can be used to determine the ranking of such items and that Ranking is based on the importance an item has in a given situation.  &lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;The Role of the SharePoint Architect:&lt;/font&gt;&lt;/strong&gt;  &lt;p&gt;Architects and developers place a lot of focus during development to ensure that search engine works well. Performance and Accuracy of search results are normally the main focus point.  &lt;p&gt;Providing a comprehensive search solution requires that the architect considers the search experience from the end-user point of view.  &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_SX0lCwhJEzc/TdZ6-4y7yiI/AAAAAAAAAhk/vKjcCV82eK0/s1600-h/clip_image002%5B5%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image002" border="0" alt="clip_image002" src="http://lh3.ggpht.com/_SX0lCwhJEzc/TdZ6_oUCmuI/AAAAAAAAAho/pF5-_Ixxas8/clip_image002_thumb%5B2%5D.jpg?imgmax=800" width="363" height="288"&gt;&lt;/a&gt;  &lt;p&gt;The end-user is not really concerned about what happens on the server and will most likely not appreciate the effort which goes into building robust search engines.  &lt;p&gt;Management spend up to 27% of their time looking for information and when using the Search functionality in your SharePoint solution only one question will be asked; “&lt;i&gt;Did I find what I was searching for on the first page of the results?” &lt;/i&gt;If the item the user searched for is not part of the first 10 search result items then then user will most likely believe the item does not exist in the system.  &lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;The SharePoint Search Ranking Model:&lt;/font&gt;&lt;/b&gt;  &lt;p&gt;Relevance is about how closely the search results that are returned to the user match what the user wanted to find.  &lt;p&gt;SharePoint uses a formula to determine which items are most relevant but the end-users have a different view on what should be considered the most relevant items. Even different users who use the same solution might have different opinions about this. (To be honest I can relate to this as I will sometimes at home arrange our DVD collection in a particular order and another family member would prefer a completely different order)  &lt;p&gt;As an example when the user performs a search using the keyword ‘Demo’ the SP Search Engine returns the items in the following order:  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_SX0lCwhJEzc/TdZ7ArTYzlI/AAAAAAAAAhs/TX-a41U3hBw/s1600-h/clip_image003%5B6%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://lh4.ggpht.com/_SX0lCwhJEzc/TdZ7Bqq__ZI/AAAAAAAAAhw/Kw_aa0XYZQw/clip_image003_thumb%5B1%5D.png?imgmax=800" width="387" height="106"&gt;&lt;/a&gt;  &lt;p&gt;SharePoint evaluates all properties and even the contents of the documents returned in the search results and used a complex algorithm to determine which items are most relevant and which items are least relevant.  &lt;p&gt;Users are not interested in algorithms and might not even consider the fact that the search engine also takes into calculation less obvious dynamics like “Click Distance”, “Document Location (URL Depth)”, “Document Popularity”, “Language Detection”, “File Type”, etc. In actual fact the algorithm is very complex and it is unfortunate that very few end users appreciate at how clever the search engine is.  &lt;p&gt;Some users might feel that the search results should be ranked in a way so that the Title of the item is considered the most important determining factor.  &lt;p&gt;In this example we executed the same search we tested earlier but because a different preference of ranking were specified two of the result items were allocated a lower ranking order and items where the Title field are closer to the search criteria used moved up in the ranking.  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_SX0lCwhJEzc/TdZ7CZoQvgI/AAAAAAAAAh0/sgbN_S6wVMY/s1600-h/clip_image004%5B5%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://lh4.ggpht.com/_SX0lCwhJEzc/TdZ7DHORspI/AAAAAAAAAh4/hx7ejamXraA/clip_image004_thumb%5B2%5D.png?imgmax=800" width="387" height="107"&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt;  &lt;p&gt;There might even be a requirement to rank the search results based on a custom field like ‘Client Name’. You can see from the same search results below the item where the search criteria was not found as part of the ‘Client Name field moved down in the ranking order and items which contains the search criteria in the ‘Client Name’ field moved up in the rank.  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_SX0lCwhJEzc/TdZ7DzfBM9I/AAAAAAAAAh8/8LnANm_CtUM/s1600-h/clip_image005%5B4%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image005" border="0" alt="clip_image005" src="http://lh6.ggpht.com/_SX0lCwhJEzc/TdZ7EoGVwBI/AAAAAAAAAiA/OFVXroQ-Uk4/clip_image005_thumb%5B1%5D.png?imgmax=800" width="387" height="100"&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;SharePoint Enterprise Search includes a ranking engine developed in collaboration with Microsoft Research. It is specifically tuned for the unique requirements of searching enterprise content.  &lt;p&gt;The great news is that it is possible for IT Professionals to customize the way SharePoint rank search results. This can be done through creating a custom model (ranking model) and instructing SharePoint to use the custom model in a particular area of the solution or even to set the new ranking model as the default for SharePoint Search.  &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;This article will provide you with the necessary background SharePoint Ranking Models and will guide you through the process of creating and implementing your own custom ranking models.  &lt;p&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;font color="#0000ff" size="4"&gt;Let’s Get Started!!&lt;/font&gt;&lt;/b&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;Structure&lt;/font&gt; &lt;/b&gt; &lt;p&gt;As a developer I used to hate this part of an article… the mumbo-jumbo theory stuff which can be very boring, but believe me, if you really want to become one of the best SharePoint professional you have to consider the ground-rules, even if they are not always applicable to the immediate problem which you are trying to solve. So here we go….  &lt;p&gt;Ranking Model are based on a XML schema which contains an unique identifier, name, description and specifics of the components as part of the formula when calculating numeric scores which indicate which search results are more relevant than others. (For those who are interested in the formula please research the BM25 rating model)  &lt;p&gt;The formula to calculate relevance uses two areas of ranking called &lt;b&gt;Static&lt;/b&gt; and &lt;b&gt;Dynamic&lt;/b&gt; ranking.  &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;Dynamic Ranking (query-dependent ranking)&lt;/font&gt;&lt;/b&gt; is where the property values or content of an item affects the ranking score. As example the ‘Title’ field can be evaluated against the search criteria and the more important we consider the field to be, the higher the ranking score will be for items where the value in the ‘Title’ field have a closer match to the search criteria.  &lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;Static Ranking (query-independent ranking)&lt;/font&gt; &lt;/b&gt;is where&lt;b&gt; &lt;/b&gt;the content or property values of an item do not determine the ranking of the item.  &lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;Dynamic Ranking contains the following components:&lt;/font&gt;&lt;/b&gt;  &lt;ul&gt; &lt;li&gt;&lt;b&gt;Property Weighting &lt;/b&gt;is used to assign a weighting to a property so that they are weighted more heavily in the relevance calculation. Configure this setting to a value between 1 and 75.  &lt;li&gt;&lt;b&gt;Property Length Normalization &lt;/b&gt;– because properties of an item vary in length, evaluation of the values cannot be treated equally and we need to adjust the rank of a content item, based on the length of the property, and the length normalization setting. This only applies to properties that contain text.The range of possible values for this setting is 0 to 1. For long text-managed properties, you usually want to set this to a value near to 0.7, which is the approximate setting for the body property. For properties that contain a small amount of text use a value of approximately 0.5.  &lt;li&gt;&lt;b&gt;Title Extraction - &lt;/b&gt;only performed on Microsoft Office files. In scenarios where the ‘Title’ field of an Office file does not accurately reflect the contents of the item (example when a title of a file is ‘Presentation 1’ or ‘Document 1’), Enterprise Search detects another candidate for title within the body of the content item, and includes this value with the actual title when calculating relevance. (I think this is really cool!)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;Static Ranking contains the following components:&lt;/font&gt;&lt;/b&gt;  &lt;ul&gt; &lt;li&gt;&lt;b&gt;Click Distance &lt;/b&gt;is&lt;b&gt; &lt;/b&gt;the number of links between a content item and an "expert" page linking to the content item. The more links that the crawler must travel from an authoritative page to the content item, the lower the relevance score. If there are multiple paths to a content item, relevance is calculated based on the shortest path.  &lt;li&gt;&lt;b&gt;URL Depth&lt;/b&gt; refers to how many levels deep within a site the content item is found. The level is determined by reviewing the number of slash ("/") characters in the URL; the greater the number of slash characters in the URL path, the deeper the URL is for that content item. A large URL depth number can lower the relevance of that content.  &lt;li&gt;&lt;b&gt;Automatic Language Detection &lt;/b&gt;determines the user's language based on "Accept-Language" headers from the browser they are using and content that is retrieved in the user's language is considered more relevant than content in other languages, with the exception of English language content.  &lt;li&gt;&lt;b&gt;File Type Biasing - &lt;/b&gt;in most search scenarios, certain file types are more relevant than others. For example, HTML pages and Word documents are usually more relevant to a user's search than an Excel spread sheet or a plain text file.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;b&gt;&lt;font color="#0000ff" size="4"&gt;Tutorial (…the exciting part)&lt;/font&gt; &lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;What you need:&lt;/font&gt;&lt;/b&gt;  &lt;ul&gt; &lt;li&gt;SharePoint Central Administration  &lt;li&gt;SharePoint Site with a document library  &lt;li&gt;5 Sample documents (no other content in site)  &lt;li&gt;A Search Scope to the particular SharePoint site which you want to search in.  &lt;li&gt;Understanding of Manage Metadata Properties (only if you want to search on custom site columns.  &lt;li&gt;PowerShell  &lt;li&gt;Utility or source code to test our ranking model&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;Test Harness:&lt;/font&gt;&lt;/b&gt;  &lt;p&gt;Before we build a new custom ranking model let us first develop a small utility to help us test our ranking model. (You can also export the standard SharePoint Core Search Results Web Part and modify the xml to specify the ranking model to use, but in most cases I prefer to use a test harness instead of making changes to SharePoint until I have finished quality assurance of my custom code).  &lt;p&gt;Create a new Visual Studio console application and add the following code to your Program.cs class: &lt;p&gt;using System; &lt;br&gt;using System.Collections.Generic; &lt;br&gt;using Microsoft.SharePoint; &lt;br&gt;using System.Diagnostics; &lt;br&gt;using Microsoft.Office.Server.Search.Query;  &lt;p&gt;namespace SP2010SearchSample &lt;br&gt;{ &lt;br&gt;&amp;nbsp; class Program &lt;br&gt;&amp;nbsp; { &lt;br&gt;&amp;nbsp; static void Main(string[] args) &lt;br&gt;&amp;nbsp; { &lt;br&gt;&amp;nbsp; SPSite objSite = new SPSite("&lt;a href="http://ltp-21:14111&amp;quot;);"&gt;http://ltp-21:14111");&lt;/a&gt; //Replace with yours &lt;br&gt;&amp;nbsp; SPWeb objTargetWeb = objSite.OpenWeb("/"); &lt;br&gt;&amp;nbsp; ResultType resultType = ResultType.RelevantResults; &lt;br&gt;&amp;nbsp; //VERY IMPORTANT TO USE DEFAULTPROPERTIES instead of * &lt;br&gt;&amp;nbsp; //Replace 'SPSearchDemoSearchScope' with your Search Scope Name &lt;br&gt;&amp;nbsp; string strQuery = "SELECT RANK, Filename, Title, FROM SCOPE() WHERE &lt;br&gt;&amp;nbsp; FREETEXT(DefaultProperties, '*demo* ') AND \"SCOPE\" = 'SPSearchDemoSearchScope'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ORDER BY \"Rank\" DESC "; &lt;br&gt;&amp;nbsp; FullTextSqlQuery fullTextSqlQuery = new FullTextSqlQuery(objSite); &lt;br&gt;&amp;nbsp; fullTextSqlQuery.QueryText = strQuery; &lt;br&gt;&amp;nbsp; fullTextSqlQuery.ResultTypes = resultType; &lt;br&gt;&amp;nbsp; //This is where we will later specify the custom ranking model to use. &lt;br&gt;&amp;nbsp; //fullTextSqlQuery.RankingModelId = ""; &lt;br&gt;&amp;nbsp; ResultTableCollection resultTableCollection = fullTextSqlQuery.Execute(); &lt;br&gt;&amp;nbsp; ResultTable resultTable = resultTableCollection[resultType]; &lt;br&gt;&amp;nbsp; while (resultTable.Read()) &lt;br&gt;&amp;nbsp; { &lt;br&gt;&amp;nbsp; Console.WriteLine("Rank:" + resultTable["RANK"].ToString() + " Title:" + resultTable["TITLE"].ToString()); &lt;br&gt;&amp;nbsp; } &lt;br&gt;} &lt;br&gt;} &lt;br&gt;} &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Please note the following:&lt;/strong&gt; &lt;ul&gt; &lt;li&gt;Your namespace will be different. &lt;/li&gt; &lt;li&gt;Replace &lt;a href="http://ltp-21:14111"&gt;&lt;font size="1" face="Courier"&gt;http://ltp-21:14111&lt;/font&gt;&lt;/a&gt; with your site URL  &lt;li&gt;Replace &lt;strong&gt;'&lt;/strong&gt;&lt;font color="#ff0000"&gt;SPSearchDemoSearchScope&lt;/font&gt;&lt;strong&gt;' &lt;/strong&gt;with your Search Scope name.  &lt;li&gt;I included a placeholder &lt;strong&gt;(&lt;/strong&gt;&lt;font color="#008000" face="cour"&gt;//fullTextSqlQuery.RankingModelId = "";&lt;/font&gt;&lt;strong&gt;)&lt;/strong&gt; to later specify our custom ranking model to use.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;Compile the application and run it. If there are no problems you should see the search results returned and ranked using the default SharePoint Ranking model.  &lt;p&gt;You can also refer to: Best Practices: Writing SQL Syntax Queries for Relevant Results in Enterprise Search  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_SX0lCwhJEzc/TdZ7Fb9_V_I/AAAAAAAAAiE/RUFiY28e2hY/s1600-h/clip_image003%5B1%5D%5B3%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image003[1]" border="0" alt="clip_image003[1]" src="http://lh4.ggpht.com/_SX0lCwhJEzc/TdZ7GWZI5LI/AAAAAAAAAiI/AvcIXNL40IM/clip_image003%5B1%5D_thumb%5B1%5D.png?imgmax=800" width="387" height="97"&gt;&lt;/a&gt;  &lt;p&gt;Now that we have a test harness to use for testing different ranking models we can proceed to &lt;b&gt;Build and implement a new custom ranking model&lt;/b&gt;  &lt;p&gt;We need to following values in order to construct our xml:&lt;/p&gt; &lt;p&gt; &lt;table border="1" cellspacing="0" cellpadding="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="167"&gt; &lt;p&gt;&lt;strong&gt;Item&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="152"&gt; &lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="340"&gt; &lt;p&gt;&lt;strong&gt;How to find value&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="167"&gt; &lt;p&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="152"&gt; &lt;p&gt;The name of your custom ranking model&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="340"&gt; &lt;p&gt;Any value you want to use.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="167"&gt; &lt;p&gt;&lt;strong&gt;Id&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="152"&gt; &lt;p&gt;The unique identifier for the ranking model&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="340"&gt; &lt;p&gt;Use GUIDGen Tool to create a new GUID.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="167"&gt; &lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="152"&gt; &lt;p&gt;A description of your ranking model&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="340"&gt; &lt;p&gt;Any text you want to use.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="167"&gt; &lt;p&gt;&lt;strong&gt;One or more queryDependentFeatures&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="152"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="340"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="167"&gt; &lt;p&gt;&lt;strong&gt;pid&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="152"&gt; &lt;p&gt;The property ID of a managed property in the search schema.&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="340"&gt; &lt;p&gt;Run the following PowerShell command to export all the PIDs to a text file:  &lt;p&gt;Get-SPEnterpriseSearchServiceApplication | Get-SPEnterpriseSearchMetadataManagedProperty &amp;gt;&amp;gt; C:\PID.txt&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="167"&gt; &lt;p&gt;&lt;strong&gt;name&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="152"&gt; &lt;p&gt;The name of a managed property&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="340"&gt; &lt;p&gt;Run the following PowerShell command to export all the Property names to a text file:  &lt;p&gt;Get-SPEnterpriseSearchServiceApplication | Get-SPEnterpriseSearchMetadataManagedProperty &amp;gt;&amp;gt; C:\PID.txt&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="167"&gt; &lt;p&gt;&lt;strong&gt;weight&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="152"&gt; &lt;p&gt;The weight setting for a managed property.&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="340"&gt; &lt;p&gt;Any value between 0 and infinity. If the value is 0 the property is ignored. Normally the value is between 1 and 75.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt; &lt;p&gt;The xml schema for a ranking model is structured in the following way:  &lt;p&gt;&amp;lt;rankingModel name=”string” id=”GUID” description=”string” xmlns=”&lt;a href="http://schemas.microsoft.com/office/2009/rankingModel"&gt;http://schemas.microsoft.com/office/2009/rankingModel&lt;/a&gt;”&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;queryDependentFeatures&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;queryDependentFeature pid=”PID” name=”string” weight=”weightValue” lengthNormalization=”lengthNormalizationSetting” /&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/queryDependentFeatures&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;queryIndependentFeatures&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;categoryFeature pid=”PID” default=”defaultValue” name=”string”&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;category value=”categoryValue” name=”string” weight=”weightValue” /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/categoryFeature&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;languageFeature pid=”PID” name=”string” default=”defaultValue” weight=”weightValue” /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;queryIndependentFeature pid=”PID” name=”string” default=”defaultValue”&amp;nbsp; weight=”weightValue”&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;transformRational k=”value” /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;transformInvRational k=”value” /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;transformLinear max=”maxValue” /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/queryIndependentFeature&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/queryIndependentFeatures&amp;gt;&lt;br&gt;&amp;lt;/rankingModel&amp;gt;&lt;b&gt;&lt;/b&gt;  &lt;p&gt;The following link describes the different elements in the XML: &lt;a href="http://msdn.microsoft.com/en-us/library/ee558793.aspx"&gt;http://msdn.microsoft.com/en-us/library/ee558793.aspx&lt;/a&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;So, in order to create a new ranking model, open a xml editor and use the following example:  &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br&gt;&amp;lt;rankingModel &lt;br&gt;name="DemoRankingModel" &lt;br&gt;id="302A9E0E-F8B9-4b21-8180-C327ECCBBA94" &lt;br&gt;description="Demo Custom Ranking Model" &lt;br&gt;xmlns="&lt;a href="http://schemas.microsoft.com/office/2009/rankingModel&amp;quot;"&gt;http://schemas.microsoft.com/office/2009/rankingModel"&lt;/a&gt;&amp;gt; &lt;br&gt;&amp;lt;queryDependentFeatures&amp;gt; &lt;br&gt;&amp;lt;queryDependentFeature pid="56" name="Filename" weight="75" lengthNormalization="10" /&amp;gt; &lt;br&gt;&amp;lt;queryDependentFeature pid="2" name="Title" weight="25" lengthNormalization="10" /&amp;gt; &lt;br&gt;&amp;lt;/queryDependentFeatures&amp;gt; &lt;br&gt;&amp;lt;/rankingModel&amp;gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;Next, run the following PowerShell command to upload your new custom ranking model: &lt;br&gt;Get-SPEnterpriseSearchServiceApplication | New-SPEnterpriseSearchRankingModel –RankingModelXML ‘{your xml pasted as a string}’ &lt;p&gt;&lt;code&gt;&lt;/code&gt; &lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;Using the new Ranking Model:&lt;/font&gt;&lt;/strong&gt; &lt;br&gt;There are two ways of using the custom ranking model &lt;br&gt;1. Search logic implemented through the object model (shown in this tutorial) &lt;br&gt;2. Extending the Core Results Web Part &lt;br&gt;&lt;a href="http://msdn.microsoft.com/en-us/sp2010devtrainingcourse_extendingsharepointsearchlab_topic4#_Toc280092619"&gt;http://msdn.microsoft.com/en-us/sp2010devtrainingcourse_extendingsharepointsearchlab_topic4#_Toc280092619&lt;/a&gt; &lt;p&gt;You can use the test harness described in the beginning of this tutorial to test your new ranking model. To do that, uncomment the following line and supply the GUID of your new ranking model:  &lt;p&gt;//This is where we will later specify the custom ranking model to use. &lt;br&gt;fullTextSqlQuery.RankingModelId = "302A9E0E-F8B9-4b21-8180-C327ECCBBA94"; &lt;br&gt;//remember to replace the ID value with the GUID of your ranking model  &lt;p&gt; &lt;p&gt;You will notice a change in the way your test harness return the results.  &lt;p&gt;The following diagram shows how your code and the SharePoint Foundation will use your custom Ranking Model to provide different results: &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_SX0lCwhJEzc/TdZ7HBdKypI/AAAAAAAAAiU/k78wXS5hlpc/s1600-h/clip_image007%5B7%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image007" border="0" alt="clip_image007" src="http://lh6.ggpht.com/_SX0lCwhJEzc/TdZ7IIvbmII/AAAAAAAAAiY/DtwMkWGuM8c/clip_image007_thumb%5B4%5D.jpg?imgmax=800" width="588" height="376"&gt;&lt;/a&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;Additional PowerShell Commands:&lt;/font&gt;&lt;/strong&gt;  &lt;p&gt;&lt;strong&gt;List all of the Managed Properties in SharePoint Search: &lt;br&gt;&lt;/strong&gt;Get-SPEnterpriseSearchServiceApplication | Get-SPEnterpriseSearchMetadataManagedProperty &amp;gt;&amp;gt; C:\PID.txt  &lt;p&gt;&lt;strong&gt;Add a new ranking model to SharePoint : &lt;/strong&gt;&lt;br&gt;Get-SPEnterpriseSearchServiceApplication | New-SPEnterpriseSearchRankingModel –RankingModelXML ‘{Ranking model XML PASTED AS A STRING}’  &lt;p&gt;&lt;strong&gt;List the ranking models: &lt;br&gt;&lt;/strong&gt;Get-SPEnterpriseSearchServiceApplication|Get-SPEnterpriseSearchRankingModel  &lt;p&gt;&lt;strong&gt;Delete a ranking model: &lt;/strong&gt;&lt;br&gt;Remove-SPEnterpriseSearchRankingModel -Identity ‘xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx’ -SearchApplication Get-SPEnterpriseSearchServiceApplication &lt;p&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;I hope that you will make full use of all the SharePoint capabilities like custom ranking models to unlock your full potential to providing world-class SharePoint solutions.  &lt;p&gt;Enjoy !    &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429025622434259152-1136725420381970356?l=johanolivier.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johanolivier.blogspot.com/feeds/1136725420381970356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johanolivier.blogspot.com/2011/05/improve-sharepoint-search-relevance.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/1136725420381970356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/1136725420381970356'/><link rel='alternate' type='text/html' href='http://johanolivier.blogspot.com/2011/05/improve-sharepoint-search-relevance.html' title='Improve SharePoint Search Relevance'/><author><name>Johan Olivier</name><uri>http://www.blogger.com/profile/12362783186069410694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='19' src='http://2.bp.blogspot.com/_SX0lCwhJEzc/SxYSinEvesI/AAAAAAAAAAM/YDzvQbZhOzk/S220/JohanMuggshot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_SX0lCwhJEzc/TdZ6_oUCmuI/AAAAAAAAAho/pF5-_Ixxas8/s72-c/clip_image002_thumb%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429025622434259152.post-7370570765086726298</id><published>2011-05-20T13:58:00.001+02:00</published><updated>2011-05-20T14:03:23.586+02:00</updated><title type='text'>Upcoming Events</title><content type='html'>&lt;p&gt;Very few things in life are more rewarding for me than to see that I have made a positive impact on the life of one or more individuals through my technical- and motivational contributions to the community. &lt;br&gt;This month I have been very fortunate to be invited to a number of local as well as international events. I hope to see you at the following events where I will speak on various SharePoint topics: &lt;br&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff" size="4"&gt;24 May 2011 – Microsoft Dev Days - Cape Town (community slot)&lt;/font&gt;&lt;/strong&gt;&lt;strong&gt;&lt;font color="#0000ff" size="4"&gt;&lt;br&gt;&lt;/font&gt;&lt;/strong&gt;&lt;strong&gt;Improve SharePoint Search Relevance through Custom Ranking Models&lt;br&gt;&lt;/strong&gt;When searching for content we want a search engine to put the most relevant content at the top of the results page. SharePoint employ different ranking models to compute what content item is more relevant than another content item. In this session we will explore how you can use PowerShell and Visual Studio to build SharePoint Custom Ranking models in order control how SharePoint determine the relevancy and order of search result items.&lt;br&gt;URL: &lt;a href="http://www.microsoft.com/southafrica/devdays/"&gt;http://www.microsoft.com/southafrica/devdays/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;&lt;font color="#0000ff" size="4"&gt;31 May 2011 – Information Worker Community – Cape Town&lt;/font&gt;&lt;br&gt;&lt;/font&gt;SharePoint 2010 Sandboxed Solutions&lt;/strong&gt;&lt;br&gt;In this session we will take a look at SharePoint Sandboxed solutions, understanding what they are, why they were introduced and best practices for building one. We will also advise Farm Administrators on the tools &amp;amp; techniques available to manage user solutions and partially trusted code in a SharePoint farm.&lt;br&gt;URL: &lt;a href="http://www.informationworker.co.za"&gt;www.informationworker.co.za&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff" size="4"&gt;25 June 2011 – SharePoint Saturday India – Online Event&lt;br&gt;&lt;/font&gt;Understanding the SP2010 Managed Client Object Model&lt;br&gt;&lt;/strong&gt;In this session we will take a look at the SharePoint2010 Managed Client Object Model. &lt;br&gt;We will present an overview of what the Client Side Object Model is, why it was introduced, what are the best practices for using it and lessons learned from the field.&lt;br&gt;URL: &lt;a href="http://www.sharepointsaturday.org/india"&gt;www.sharepointsaturday.org/india&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff" size="4"&gt;18 October 2011 – European SharePoint Conference – Berlin&lt;br&gt;&lt;/font&gt;A Developer’s mind-shift from Sp2007 to Sp2010.&lt;/strong&gt;&lt;br&gt;In this session we will discuss the best approach for a SharePoint 2007 developer to make the transition to SharePoint 2010 development. We will introduce new advancements in the SharePoint 2010 platform as well as how SharePoint 2010 is now integrated with Visual Studio 2010. The outcome of this session is to provide the developer with a roadmap for making the transition from SharePoint 2007 development to SharePoint 2010 development with Visual Studio 2010, SharePoint Designer 2010, PowerShell and Codeplex solutions for SharePoint 2010.&lt;br&gt;URL: &lt;a href="http://www.sharepointeurope.com"&gt;http://www.sharepointeurope.com&lt;/a&gt;&lt;/p&gt; &lt;p&gt;I sincerely hope to see you at the events! &lt;br&gt;In case you miss any of the events, please keep an eye on this blog site as I will post all my presentations in the form of detailed whitepapers.&lt;/p&gt; &lt;p&gt;Enjoy! &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429025622434259152-7370570765086726298?l=johanolivier.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johanolivier.blogspot.com/feeds/7370570765086726298/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johanolivier.blogspot.com/2011/05/upcoming-events.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/7370570765086726298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/7370570765086726298'/><link rel='alternate' type='text/html' href='http://johanolivier.blogspot.com/2011/05/upcoming-events.html' title='Upcoming Events'/><author><name>Johan Olivier</name><uri>http://www.blogger.com/profile/12362783186069410694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='19' src='http://2.bp.blogspot.com/_SX0lCwhJEzc/SxYSinEvesI/AAAAAAAAAAM/YDzvQbZhOzk/S220/JohanMuggshot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429025622434259152.post-4139160573213552852</id><published>2011-04-13T17:15:00.001+02:00</published><updated>2011-04-13T17:18:37.745+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010 Development'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010 General'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Development'/><title type='text'>Resolve SharePoint Errors caused by SQL Express</title><content type='html'>&lt;p&gt;Today I tested my bulk import tool as part of a data migration. The code in the custom developed tool is straight-forward and must move list items and documents from over 600 SharePoint 2007 sites into a single SharePoint 2010 site.  &lt;p&gt;Soon after starting my tests I ran into SharePoint foundation problems.  &lt;p&gt;&lt;b&gt;&lt;u&gt;Problem:&lt;/u&gt;&lt;/b&gt;  &lt;p&gt;Whenever the code attempts to upload a file into SharePoint I got the following error:  &lt;p&gt;&lt;font color="#ff0000"&gt;The URL 'Document_2011/0000000zzz/Test Document.docx' is invalid. &lt;/font&gt; &lt;p&gt;&lt;font color="#ff0000"&gt;It may refer to a nonexistent file or folder, or refer to a valid file or folder that is not in the current Web. Troubleshoot issues with Microsoft SharePoint Foundation.&lt;/font&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_SX0lCwhJEzc/TaW9tiDIUcI/AAAAAAAAAgE/WHYH02-p1uk/s1600-h/image%5B5%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_SX0lCwhJEzc/TaW9uuoFJ3I/AAAAAAAAAgI/nDOQBT6-mwk/image_thumb%5B3%5D.png?imgmax=800" width="356" height="256"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I then tried to manually delete a file from the SharePoint site and received the following error:  &lt;p&gt;The server has encountered the following error(s):  &lt;p&gt;&lt;font color="#ff0000"&gt;ExampleFile.pdf &lt;/font&gt; &lt;p&gt;&lt;font color="#ff0000"&gt;Exception from HRESULT: 0x80131904&lt;/font&gt;  &lt;p&gt;When I try to delete the entire document library I receive the following error:  &lt;p&gt;&lt;font color="#ff0000"&gt;Exception from HRESULT: 0x80131904 &lt;/font&gt; &lt;p&gt;&lt;font color="#ff0000"&gt;Troubleshoot issues with Microsoft SharePoint Foundation.&lt;/font&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Investigation:&lt;/u&gt;&lt;/b&gt;  &lt;p&gt;I investigated the SharePoint content database.  &lt;p&gt;In Central Admin, go to Application Management and then to Manage Content Databases.  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_SX0lCwhJEzc/TaW9vEwIrII/AAAAAAAAAgM/og9TIKDMEg8/s1600-h/image%5B9%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_SX0lCwhJEzc/TaW9wtO-DcI/AAAAAAAAAgQ/t4TYTEqYPu4/image_thumb%5B5%5D.png?imgmax=800" width="420" height="165"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;You can select the web application and view the details of the associated content database.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_SX0lCwhJEzc/TaW9w9p6ugI/AAAAAAAAAgU/4spNN9DFLgc/s1600-h/image%5B43%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_SX0lCwhJEzc/TaW9xiKAjuI/AAAAAAAAAgY/Jbk4eFtCVq4/image_thumb%5B17%5D.png?imgmax=800" width="274" height="160"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I then logged into SQL Server Management Studio and confirmed that the content database ran out of space. As you can see from the screenshot below, the database size is 4138.19 MB and there is only 0.13 MB free space. (ensure to log into the correct instance of SQL in order to see the content databases)&lt;/p&gt;&lt;a href="http://lh6.ggpht.com/_SX0lCwhJEzc/TaW9yNNASYI/AAAAAAAAAgc/Rs_Dg6TQe14/s1600-h/image%5B44%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_SX0lCwhJEzc/TaW9yvppQ1I/AAAAAAAAAgg/2WBD16aTvEQ/image_thumb%5B18%5D.png?imgmax=800" width="337" height="153"&gt;&lt;/a&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Cause:&lt;/u&gt;&lt;/b&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt; &lt;p&gt;When SharePoint 2010 is installed the user can select to perform a ‘Basic’ or default installation.  &lt;p&gt;Selecting a ‘Basic’ installation is a big mistake, but unfortunately guys who are new to SharePoint might not be aware of the pitfalls.  &lt;p&gt;When you installed SharePoint 2007 as basic, the installation used the Windows Internal Database, a version of SQL Express with no size limit, but in SharePoint 2010 the installation will be done on SQL Express which has a 4GB size limit.  &lt;p&gt;SQL Express 2008 R2 has a 10GB size limit, but it might still not be enough.  &lt;p&gt;This was exactly my problem –SharePoint was installed as a ‘Basic’ installation on a test environment and I was trying to upload a large number of files – around 5.3GB in total size. Once I reached the limit of 4GB SharePoint could not perform any operations on the database which requires more space.  &lt;p&gt;Remember that even if you try to delete items from SharePoint, they are only moved to the recycle-bin so the used database space does not become available immediately.  &lt;p&gt;&lt;b&gt;&lt;u&gt;Solution:&lt;/u&gt;&lt;/b&gt;  &lt;p&gt;There are two ways to solve this:  &lt;p&gt;1-You can either upgrade from SQL Express to SQL Server,  &lt;p&gt;or  &lt;p&gt;2- Implement EBS (External Blob Store - move the BLOB items out of the database onto a file system. For more information on this please see &lt;a href="http://msdn.microsoft.com/en-us/library/bb802812.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb802812.aspx&lt;/a&gt; )  &lt;p&gt;I decided to go with option #1-Upgrade my SQL Instance from SQL Express to SQL Server 2008 R2.&amp;nbsp; The better architecture would be to go with EBS but I wanted to explore the database upgrade and do the EBS later. &lt;p&gt;&lt;b&gt;&lt;u&gt;Upgrade Steps:&lt;/u&gt;&lt;/b&gt;  &lt;p&gt;1-Close SharePoint and Close SQL Server Management Studio.  &lt;p&gt;2-Open Command Prompt and run the following command from the location where the SQL Server installation files are available to start the installation (upgrade) of SQL Server R2.  &lt;p&gt;&lt;strong&gt;&lt;font color="#000080"&gt;Setup.exe SKUUPGRADE=1&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;a href="http://lh4.ggpht.com/_SX0lCwhJEzc/TaW9zVfF6kI/AAAAAAAAAgk/w9d8OLcwthk/s1600-h/image%5B45%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_SX0lCwhJEzc/TaW9z9xgouI/AAAAAAAAAgo/fPqp80heACg/image_thumb%5B19%5D.png?imgmax=800" width="415" height="118"&gt;&lt;/a&gt;  &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;3-Proceed through the installation wizard and on the Installation window click on &lt;b&gt;‘Upgrade from SQL Server 2000, SQL Server 2005 or SQL Server 2008.&lt;/b&gt;&amp;nbsp; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_SX0lCwhJEzc/TaW90nCYEaI/AAAAAAAAAgs/VnLNDhHpEdQ/s1600-h/image%5B50%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_SX0lCwhJEzc/TaW91vBICOI/AAAAAAAAAgw/epCQh2ui5z8/image_thumb%5B24%5D.png?imgmax=800" width="369" height="282"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;4-Proceed through the wizard until you get to the ‘&lt;b&gt;Select Instance&lt;/b&gt;’ page. &lt;p&gt;Remember when we inspected our database details in Central Admin we were able to see the SQL instance:&lt;/p&gt;&lt;a href="http://lh6.ggpht.com/_SX0lCwhJEzc/TaW917IJSPI/AAAAAAAAAg0/r4SL_FL61HI/s1600-h/image%5B47%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_SX0lCwhJEzc/TaW92gp-oGI/AAAAAAAAAg4/jZDiaM-Ddz0/image_thumb%5B21%5D.png?imgmax=800" width="307" height="82"&gt;&lt;/a&gt;  &lt;p&gt;&lt;/p&gt; &lt;p&gt;5-Now, in the SQL Upgrade wizard you have to select the same instance. You can see from the screenshot below that my “SHAREPOINT” instance was originally installed as ‘Express’ so this is the one which I have to select to be upgraded to SQL Server 2008 R2.&amp;nbsp; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_SX0lCwhJEzc/TaW93bvuLQI/AAAAAAAAAg8/3u2TQz0OtPc/s1600-h/image%5B55%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_SX0lCwhJEzc/TaW94ecghNI/AAAAAAAAAhA/n2A6hi3W30U/image_thumb%5B29%5D.png?imgmax=800" width="379" height="295"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;6-Click on Next and continue through the wizard….When you get to the “Instance Configuration” page pay careful attention to ensure that all the details are correct.&lt;/p&gt;&lt;a href="http://lh5.ggpht.com/_SX0lCwhJEzc/TaW95f0mxdI/AAAAAAAAAhE/OGEEuoWz3lQ/s1600-h/image%5B52%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_SX0lCwhJEzc/TaW96AgN3oI/AAAAAAAAAhI/9mtbcNeBLRw/image_thumb%5B26%5D.png?imgmax=800" width="385" height="295"&gt;&lt;/a&gt;  &lt;p&gt;&lt;/p&gt; &lt;p&gt;8-Click on Next and proceed through all the pages to complete the all the installation wizard steps.  &lt;p&gt;9-Once completed review the results to confirm that the upgrade was successful.  &lt;p&gt;&amp;nbsp;&lt;a href="http://lh3.ggpht.com/_SX0lCwhJEzc/TaW97LZpvoI/AAAAAAAAAhM/2_dXQFcIJg4/s1600-h/image%5B57%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_SX0lCwhJEzc/TaW97wQXlkI/AAAAAAAAAhQ/g5LefTnh914/image_thumb%5B31%5D.png?imgmax=800" width="396" height="303"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;10-After this perform an IISReset.  &lt;p&gt;&lt;u&gt;&lt;strong&gt;Verify Success:&lt;/strong&gt;&lt;/u&gt;  &lt;p&gt;I viewed the properties of my upgraded database and immediately noticed that the space available was increased from 0.13MB to 1.02MB.  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_SX0lCwhJEzc/TaW98bu2h8I/AAAAAAAAAhU/54k5qsUeUf4/s1600-h/image%5B60%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_SX0lCwhJEzc/TaW99y5B1xI/AAAAAAAAAhY/sFa77cZ6niw/image_thumb%5B34%5D.png?imgmax=800" width="377" height="201"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Also, after this I was able to add more content to SharePoint and grow the database size beyond 4GB..  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_SX0lCwhJEzc/TaW9-XKJoeI/AAAAAAAAAhc/QI079rjhGI8/s1600-h/image%5B61%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_SX0lCwhJEzc/TaW9_Iq8DnI/AAAAAAAAAhg/c1p2J2T2Z1k/image_thumb%5B35%5D.png?imgmax=800" width="377" height="204"&gt;&lt;/a&gt;  &lt;p&gt;Enjoy!!  &lt;p&gt;Thanks to Todd Klindt - &lt;a href="http://www.toddklindt.com/blog/Lists/Posts/Post.aspx?ID=55"&gt;&lt;font color="#000080"&gt;http://www.toddklindt.com/blog/Lists/Posts/Post.aspx?ID=55&lt;/font&gt;&lt;/a&gt; for his contributions.    &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429025622434259152-4139160573213552852?l=johanolivier.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johanolivier.blogspot.com/feeds/4139160573213552852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johanolivier.blogspot.com/2011/04/resolve-sharepoint-errors-caused-by-sql.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/4139160573213552852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/4139160573213552852'/><link rel='alternate' type='text/html' href='http://johanolivier.blogspot.com/2011/04/resolve-sharepoint-errors-caused-by-sql.html' title='Resolve SharePoint Errors caused by SQL Express'/><author><name>Johan Olivier</name><uri>http://www.blogger.com/profile/12362783186069410694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='19' src='http://2.bp.blogspot.com/_SX0lCwhJEzc/SxYSinEvesI/AAAAAAAAAAM/YDzvQbZhOzk/S220/JohanMuggshot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_SX0lCwhJEzc/TaW9uuoFJ3I/AAAAAAAAAgI/nDOQBT6-mwk/s72-c/image_thumb%5B3%5D.png?imgmax=800' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429025622434259152.post-1014336691406681020</id><published>2011-03-17T13:15:00.002+02:00</published><updated>2011-03-17T15:37:45.290+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Nintex Workflow 2010'/><title type='text'>Import and Publish Nintex Workflows programmatically</title><content type='html'>I recently developed a SharePoint solution which requires that 3 Nintex 2010 workflows are published on 13 document libraries in 22 SharePoint sites. I developed the Nintex workflows on a single library in one site and gave it to the test team to perform quality assurance. Now that I know the workflows are working well, we are ready to export them and upload and publish them to a much larger test environment. This will require that we import and publish 3 workflows x 13 libraries x 22 sites …thus a repetitive 858 manual tasks… there is no way that we will do this manually, so I took a little time to develop a tool which will programmatically import and publish workflows. &lt;br /&gt;I found that it really is easy to utilise the Nintex web services to manage workflows. &lt;br /&gt;In this tutorial I will give you a high level overview of how to use code to upload / import .nwf files to a target SharePoint site thereby automating the process as much as possible. This approach will help you to move workflows between development-, test- and production environments. &lt;br /&gt;&lt;b&gt;What we want to achieve:&lt;/b&gt; &lt;br /&gt;I developed a simple tool which allows you to select one or more exported workflow files as source and then specify the target environment to which the workflows must be imported and published. &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_SX0lCwhJEzc/TYHtI6NANAI/AAAAAAAAAfs/pcBQV3YK1Ow/s1600-h/image%5B29%5D.png"&gt;&lt;img alt="image" border="0" height="344" src="http://lh5.ggpht.com/_SX0lCwhJEzc/TYHtKLFr6_I/AAAAAAAAAfw/gYzhjQTfRBg/image_thumb%5B15%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="569" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;You need the following:&lt;/b&gt; &lt;br /&gt;1. A few working Nintex workflows exported to local .nwf files. &lt;br /&gt;2. A target SharePoint site with document libraries or lists which you can use as target to import and publish the workflows to. &lt;br /&gt;3. Nintex Web Services must be accessible (installed with Nintex). &lt;br /&gt;&lt;b&gt;Preparation:&lt;/b&gt; &lt;br /&gt;1. &lt;b&gt;.NWF Files:&lt;/b&gt; To create a few workflows to test with I created a few really simple workflows like the one below which just update a single field on the list / library. I then saved the workflow, published it and tested it. After I have confirmation that the workflow works well I proceeded to export the workflow as a local .nwf file. Remember that this must be done in a SharePoint site which is different than your target site or you have to delete the workflows from the site before you test the import code. &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_SX0lCwhJEzc/TYHtLHmDtCI/AAAAAAAAAe8/o3ntWNEbzyo/s1600-h/image%5B8%5D.png"&gt;&lt;img alt="image" border="0" height="243" src="http://lh4.ggpht.com/_SX0lCwhJEzc/TYHtMBgq2bI/AAAAAAAAAfA/UQkStynAXEk/image_thumb%5B4%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="397" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;2. &lt;/b&gt;&lt;b&gt;Target SharePoint site: &lt;/b&gt;Your target SharePoint site must have Nintex Workflow installed and configured. You can go to your test target library and from the ribbon verify that you have access to create or manage Nintex workflows: &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_SX0lCwhJEzc/TYHtMwkRa0I/AAAAAAAAAfE/PXg41VHygYc/s1600-h/image%5B13%5D.png"&gt;&lt;img alt="image" border="0" height="176" src="http://lh4.ggpht.com/_SX0lCwhJEzc/TYHtOXNJN8I/AAAAAAAAAfI/ASlB0PIh7n4/image_thumb%5B7%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="238" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;3. &lt;/b&gt;&lt;b&gt;Nintex Web Services: &lt;/b&gt;You should be able to browse to the Nintex Workflow web services. &lt;b&gt;&lt;/b&gt;&lt;br /&gt;These web services are included as part of the Nintex Workflow out of the box installation. &lt;br /&gt;The URL will be &amp;lt;SP Web App URL&amp;gt;&amp;lt;/_vti_bin/nintexworkflow/workflow.asmx&amp;gt;&lt;b&gt;&lt;/b&gt; &lt;br /&gt;Example: My target site is in the following web application &lt;a href="http://ltp-21:17819/"&gt;http://ltp-21:17819/&lt;/a&gt; so the URL which I will use to access the Nintex Workflow web services will be: &lt;br /&gt;&lt;a href="http://ltp-21:17819/_vti_bin/nintexworkflow/workflow.asmx"&gt;http://ltp-21:17819/_vti_bin/nintexworkflow/workflow.asmx&lt;/a&gt; &lt;br /&gt;You should be able to use Internet Explorer to navigate to the web service URL. &lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Let’s Write the Code:&lt;/b&gt; &lt;br /&gt;Please note that in order to simplify the tutorial I will only show the code which is required to import and publish the workflows. &lt;br /&gt;I therefore assume that you will be able to develop the additional code which you will need to make a tool similar to the screenshot at the beginning of this post fully functional. If you are interested in any other bits of the code for the complete tool please leave a comment and I will gladly send it to you. &lt;br /&gt;1. Create a new Visual Studio Windows Forms Application. &lt;br /&gt;2. Because we target SharePoint 2010 remember to set your platform target to 64 bit: &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_SX0lCwhJEzc/TYHtPJSyDGI/AAAAAAAAAfM/M8sUP66hPyo/s1600-h/image%5B17%5D.png"&gt;&lt;img alt="image" border="0" height="153" src="http://lh4.ggpht.com/_SX0lCwhJEzc/TYHtQD_yNCI/AAAAAAAAAfQ/HQ_djOrfmsk/image_thumb%5B9%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="377" /&gt;&lt;/a&gt; &lt;br /&gt;3. Add a web service reference to the Nintex Workflow web service: &lt;br /&gt;Remember the URL of the Nintex Workflow web service is in the form &lt;b&gt;&lt;/b&gt;&lt;br /&gt;&amp;lt;SP Web App URL&amp;gt;&amp;lt;/_vti_bin/nintexworkflow/workflow.asmx&amp;gt;&lt;b&gt;&lt;/b&gt; &lt;br /&gt;Example: My target site is in the following web application &lt;a href="http://ltp-21:17819/"&gt;http://ltp-21:17819/&lt;/a&gt; so the URL which I will use to access the Nintex Workflow web services will be: &lt;br /&gt;&lt;a href="http://ltp-21:17819/_vti_bin/nintexworkflow/workflow.asmx"&gt;http://ltp-21:17819/_vti_bin/nintexworkflow/workflow.asmx&lt;/a&gt; &lt;br /&gt;I used NintexWorkflowService as the web reference name &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_SX0lCwhJEzc/TYHtRMoZF4I/AAAAAAAAAf0/PZGdJmdpU48/s1600-h/image%5B30%5D.png"&gt;&lt;img alt="image" border="0" height="381" src="http://lh3.ggpht.com/_SX0lCwhJEzc/TYHtSHvxS1I/AAAAAAAAAf4/lbKXvYq_ofk/image_thumb%5B16%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="534" /&gt;&lt;/a&gt; &lt;br /&gt;4. Add a new button named cmdImportWorkflow onto Form1: &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_SX0lCwhJEzc/TYHtS7BrL4I/AAAAAAAAAfc/YQ7dqmZVB-s/s1600-h/image%5B24%5D.png"&gt;&lt;img alt="image" border="0" height="210" src="http://lh4.ggpht.com/_SX0lCwhJEzc/TYHtTknM0qI/AAAAAAAAAfg/hBSkxrWT3SQ/image_thumb%5B12%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="228" /&gt;&lt;/a&gt; &lt;br /&gt;5. Add the following code to the button click event: &lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: #0000a0;"&gt;try&lt;br /&gt;{&lt;br /&gt;NintexWorkflowService.NintexWorkflowWS objWFService = new NintexWorkflowService.NintexWorkflowWS(); &lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="color: #0000a0;"&gt;objWFService.Url = "&lt;/span&gt;&lt;a href="http://ltp-21:17819/MyNintexSite/_vti_bin/nintexworkflow/workflow.asmx%22;"&gt;&lt;span style="color: #0000a0;"&gt;http://ltp-21:17819/MyNintexSite/_vti_bin/nintexworkflow/workflow.asmx";&lt;/span&gt;&lt;/a&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="color: #0000a0;"&gt;objWFService.Credentials = System.Net.CredentialCache.DefaultCredentials; &lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="color: #0000a0;"&gt;byte[] arrWorkflowFile = System.IO.File.ReadAllBytes(@"E:\WorkflowsToImport\UpdateTitlewithTime.nwf"); &lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="color: #0000a0;"&gt;objWFService.PublishFromNWF(arrWorkflowFile, "MyDocs", "My Imported Workflow", true); &lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="color: #0000a0;"&gt;}&lt;br /&gt;catch (Exception exception)&lt;br /&gt;{&lt;br /&gt;MessageBox.Show("An error occured while trying to publish the workflows: " + exception.Message);&lt;br /&gt;} &lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="color: #0000a0;"&gt;MessageBox.Show("Done");&lt;/span&gt;&lt;/blockquote&gt;&lt;b&gt;Let’s Analyse the code:&lt;/b&gt; &lt;br /&gt;1. Instantiate the Nintex Workflows web method: &lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: #0000a0;"&gt;NintexWorkflowService.NintexWorkflowWS objWFService = new NintexWorkflowService.NintexWorkflowWS();&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;2. Ensure the web method will execute against the correct target URL: &lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: #0000a0;"&gt;objWFService.Url = "http://ltp-21:17819/MyNintexSite/_vti_bin/nintexworkflow/workflow.asmx";&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;This URL must be the full URL to the target SharePoint site followed by “/_vti_bin/nintexworkflow/workflow.asmx”. &lt;/blockquote&gt;&lt;blockquote&gt;Please ensure that you replace the first part of the URL with that of your target environment.&lt;/blockquote&gt;3. Set the credentials for the web service: &lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: #0000a0;"&gt;objWFService.Credentials = System.Net.CredentialCache.DefaultCredentials;&lt;/span&gt;&lt;/blockquote&gt;4. Read the Nintex workflow file (.nwf) into a byte array: &lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: #0000a0;"&gt;byte[] arrWorkflowFile = System.IO.File.ReadAllBytes(@"E:\WorkflowsToImport\UpdateTitlewithTime.nwf");&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;This is the workflow which we exported earlier to a local file.&lt;/blockquote&gt;5. Call the web method to import and publish the workflow file. &lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: #0000a0;"&gt;objWFService.PublishFromNWF(arrWorkflowFile, "MyDocs", "My Imported Workflow", true);&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;The parameters are:&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="color: #0000a0;"&gt;1. &lt;b&gt;arrWorkflowFile:&lt;/b&gt; Byte Array of the workflow file to be imported.&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="color: #0000a0;"&gt;2. &lt;b&gt;listName:&lt;/b&gt; The name of the target list / library.&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="color: #0000a0;"&gt;3. &lt;b&gt;workflowName:&lt;/b&gt; The name which will be assigned to the new imported workflow.&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="color: #0000a0;"&gt;&lt;b&gt;4. &lt;/b&gt;&lt;b&gt;saveIfCannotPublish: &lt;/b&gt;Flag to indicate whether the workflow must be saved if it cannot be published.&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Verify Success:&lt;/b&gt; &lt;br /&gt;Run the code and step through each line to ensure there are no exceptions. &lt;br /&gt;After successful execution open the target SharePoint site and the target document library / list. &lt;br /&gt;Go to Manage Nintex Workflows and verify that the workflow was successfully imported and published – you should see the new published workflow. &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_SX0lCwhJEzc/TYHtUataHjI/AAAAAAAAAf8/CTM7_aALY58/s1600-h/image%5B31%5D.png"&gt;&lt;img alt="image" border="0" height="255" src="http://lh6.ggpht.com/_SX0lCwhJEzc/TYHtVbGrE7I/AAAAAAAAAgA/GsMeOdi9AHI/image_thumb%5B17%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="576" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;b&gt;Conclusion:&lt;/b&gt; &lt;br /&gt;As you can see from the sample code it is really easy to automate the import and publishing of Nintex 2010 workflows to SharePoint 2010. You might come across a few exceptions if your environment does not allow certain workflow actions or if dependencies (like list or field lookups in workflows) are not in place in the target environment. &lt;br /&gt;You can now use the very basic sample code to develop a tool like the one I illustrate at the top of this post to automate workflow upload &amp;amp; publishing and hopefully save your system administrator hours of manual configuration. &lt;br /&gt;Enjoy !!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429025622434259152-1014336691406681020?l=johanolivier.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johanolivier.blogspot.com/feeds/1014336691406681020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johanolivier.blogspot.com/2011/03/import-and-publish-nintex-workflows.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/1014336691406681020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/1014336691406681020'/><link rel='alternate' type='text/html' href='http://johanolivier.blogspot.com/2011/03/import-and-publish-nintex-workflows.html' title='Import and Publish Nintex Workflows programmatically'/><author><name>Johan Olivier</name><uri>http://www.blogger.com/profile/12362783186069410694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='19' src='http://2.bp.blogspot.com/_SX0lCwhJEzc/SxYSinEvesI/AAAAAAAAAAM/YDzvQbZhOzk/S220/JohanMuggshot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_SX0lCwhJEzc/TYHtKLFr6_I/AAAAAAAAAfw/gYzhjQTfRBg/s72-c/image_thumb%5B15%5D.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429025622434259152.post-8829509873947211131</id><published>2011-02-11T09:58:00.002+02:00</published><updated>2011-03-17T15:38:32.280+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Nintex Workflow 2010'/><title type='text'>Nintex Workflow 2010 ‘Task Reminder’ Bug &amp; Fix</title><content type='html'>&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="color: black;"&gt;This morning I came across the following error while trying to publish a Nintex 2010 workflow which contains a ‘Task Reminder’ workflow action.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="color: black;"&gt;&lt;strong&gt;Background:&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="color: black;"&gt;I have a SharePoint 2010 MOSS environment. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="color: black;"&gt;I create a new Nintex 2010 Workflow which I can save and publish without problems.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="color: black;"&gt;Then I add a ‘Task Reminder’ action&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;a href="http://lh5.ggpht.com/_SX0lCwhJEzc/TVTsDEW4B8I/AAAAAAAAAeY/k-I0jax0H4I/s1600-h/image%5B5%5D.png"&gt;&lt;img alt="image" border="0" height="84" src="http://lh3.ggpht.com/_SX0lCwhJEzc/TVTsE5bLpaI/AAAAAAAAAec/3O9oXyi7hP4/image_thumb%5B1%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="156" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="color: black;"&gt;&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes;"&gt;&lt;shapetype coordsize="21600,21600" filled="f" id="_x0000_t75" o:preferrelative="t" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" stroked="f"&gt;&lt;stroke joinstyle="miter"&gt;&lt;/stroke&gt;&lt;formulas&gt;&lt;f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/f&gt;&lt;f eqn="sum @0 1 0"&gt;&lt;/f&gt;&lt;f eqn="sum 0 0 @1"&gt;&lt;/f&gt;&lt;f eqn="prod @2 1 2"&gt;&lt;/f&gt;&lt;f eqn="prod @3 21600 pixelWidth"&gt;&lt;/f&gt;&lt;f eqn="prod @3 21600 pixelHeight"&gt;&lt;/f&gt;&lt;f eqn="sum @0 0 1"&gt;&lt;/f&gt;&lt;f eqn="prod @6 1 2"&gt;&lt;/f&gt;&lt;f eqn="prod @7 21600 pixelWidth"&gt;&lt;/f&gt;&lt;f eqn="sum @8 21600 0"&gt;&lt;/f&gt;&lt;f eqn="prod @7 21600 pixelHeight"&gt;&lt;/f&gt;&lt;f eqn="sum @10 21600 0"&gt;&lt;/f&gt;&lt;/formulas&gt;&lt;path gradientshapeok="t" o:connecttype="rect" o:extrusionok="f"&gt;&lt;/path&gt;&lt;lock aspectratio="t" v:ext="edit"&gt;&lt;/lock&gt;&lt;/shapetype&gt;&lt;shape id="Picture_x0020_2" o:spid="_x0000_i1027" style="height: 71.25pt; mso-wrap-style: square; visibility: visible; width: 129.75pt;" type="#_x0000_t75"&gt;&lt;imagedata o:title="" src="file:///C:\Users\jolivier\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png"&gt;&lt;/imagedata&gt;&lt;/shape&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="color: black;"&gt;And when I publish the workflow I get the following error:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;a href="http://lh4.ggpht.com/_SX0lCwhJEzc/TVTsFt7RpqI/AAAAAAAAAeg/agTCDDIGdvk/s1600-h/image%5B9%5D.png"&gt;&lt;img alt="image" border="0" height="164" src="http://lh6.ggpht.com/_SX0lCwhJEzc/TVTsGeKoO-I/AAAAAAAAAek/fVsC-QU5rrc/image_thumb%5B3%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="356" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;strong&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="color: black;"&gt;Cause:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="color: black; font-family: Calibri; font-size: small;"&gt;For a type to be used within the workflow, it must be registered as an Authorized Type in the web.config file. All of the Nintex workflow actions and custom types are registered as authorized types.&lt;br /&gt;Some of the workflow actions have a property of a type that inherits from a generic list, that is List&amp;lt;T&amp;gt;. List&amp;lt;T&amp;gt; is a basic system type provided in .NET. &lt;br /&gt;&lt;/span&gt;&lt;span style="color: black; font-family: Calibri; font-size: small;"&gt;With SharePoint 2010, List&amp;lt;T&amp;gt; is no longer authorized. Workflow actions that use a type that inherits from List&amp;lt;T&amp;gt; no longer run or publish.&lt;br /&gt;The SharePoint web service to validate workflows returns the following error when publishing:&lt;br /&gt;&lt;span style="color: #c10000; font-size: x-small;"&gt;&amp;lt;Error&amp;gt;&amp;lt;CompilerError Line="0" Column="0" Text="Type System.Collections.Generic.List`1, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 is not marked as authorized in the application configuration file." /&amp;gt;&amp;lt;/Error&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;, &amp;quot;sans-serif&amp;quot;; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-theme-font: minor-bidi; mso-hansi-theme-font: minor-latin;"&gt;Work around:&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="color: black;"&gt;Add the following to the web.config of the SharePoint web application on which you want to publish the workflow.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="color: navy; font-family: Calibri;"&gt;&amp;lt;authorizedType Assembly="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Namespace="System.Collections.Generic" TypeName="List`1" Authorized="True" /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;a href="" name="_MailAutoSig"&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="mso-bookmark: _mailautosig;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Save the web.config and return to SharePoint and now you will be able to successfully publish the same workflow (containing the Task Reminder):&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;a href="http://lh3.ggpht.com/_SX0lCwhJEzc/TVTsG-P_keI/AAAAAAAAAeo/A3Qsb_TOYrQ/s1600-h/image%5B2%5D.png"&gt;&lt;img alt="image" border="0" height="120" src="http://lh3.ggpht.com/_SX0lCwhJEzc/TVTsHZ8dALI/AAAAAAAAAes/g8CMx8bAZBQ/image_thumb.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="244" /&gt;&lt;/a&gt;&amp;nbsp;&lt;span style="mso-bookmark: _mailautosig;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="mso-bookmark: _mailautosig;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Enjoy !&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="color: black; font-family: Calibri; font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;Also refer to: &lt;a href="http://connect.nintex.com/forums/thread/239.aspx" title="http://connect.nintex.com/forums/thread/239.aspx"&gt;http://connect.nintex.com/forums/thread/239.aspx&lt;/a&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/429025622434259152-8829509873947211131?l=johanolivier.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johanolivier.blogspot.com/feeds/8829509873947211131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johanolivier.blogspot.com/2011/02/nintex-workflow-2010-task-reminder-bug.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/8829509873947211131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/8829509873947211131'/><link rel='alternate' type='text/html' href='http://johanolivier.blogspot.com/2011/02/nintex-workflow-2010-task-reminder-bug.html' title='Nintex Workflow 2010 ‘Task Reminder’ Bug &amp;amp; Fix'/><author><name>Johan Olivier</name><uri>http://www.blogger.com/profile/12362783186069410694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='19' src='http://2.bp.blogspot.com/_SX0lCwhJEzc/SxYSinEvesI/AAAAAAAAAAM/YDzvQbZhOzk/S220/JohanMuggshot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_SX0lCwhJEzc/TVTsE5bLpaI/AAAAAAAAAec/3O9oXyi7hP4/s72-c/image_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429025622434259152.post-2429006361979225438</id><published>2011-02-03T16:51:00.004+02:00</published><updated>2011-03-17T16:12:36.991+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010 General'/><title type='text'>SharePoint 2010 Incoming e-mail Settings on Windows 7</title><content type='html'>Recently I needed to enable a SharePoint 2010 document library to accept incoming emails and then use the data from the body of the email to update list values. &lt;br /&gt;It is really easy to configure SharePoint 2010 for incoming email and to enable a specific document library to receive emails. &lt;br /&gt;You will find a few good tutorials on the web to help you achive this. &lt;br /&gt;One of the very first things which you need to do is to install and configure a SMTP service on your SP2010 web front-end server. That is exactly where I ran into problems as my SP2010 web front end server is running on Windows 7. &lt;br /&gt;Unfortunately Windows 7 does not ship with SMTP Service and almost all the documentation showing how to configure your SP2010 WFE for incoming mail focus on Windows 2008 server. &lt;br /&gt;Many thanks to Wesley Bakker for the clear and helpful instructions which he posted at &lt;a href="http://weblogs.asp.net/wesleybakker/archive/2010/08/09/configure-hmailserver-for-sharepoint.aspx"&gt;http://weblogs.asp.net/wesleybakker/archive/2010/08/09/configure-hmailserver-for-sharepoint.aspx&lt;/a&gt; &lt;br /&gt;This short tutorial will illustrate how I managed to get my SharePoint 2010 incoming email configured on my Windows 7 web front-end server. &lt;br /&gt;1. &lt;strong&gt;Download hMailServer&lt;/strong&gt; from &lt;a href="http://www.hmailserver.com/"&gt;http://www.hmailserver.com/&lt;/a&gt; &lt;br /&gt;2. &lt;strong&gt;Install hMailServer&lt;/strong&gt; and create a new Administrator password when prompted. &lt;br /&gt;3. &lt;strong&gt;Configure hMailServer&lt;/strong&gt; in the following way: &lt;br /&gt;&lt;blockquote&gt;(If I do not specify a setting to be changed then accept the default) &lt;br /&gt;&lt;ul&gt;&lt;li&gt;After the install completed, add a new domain. You can use anything.&lt;/li&gt;&lt;li&gt;In the new hMailServer domain create two new email accounts &lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;a href="http://lh6.ggpht.com/_SX0lCwhJEzc/TUrAeKpjsXI/AAAAAAAAAck/As7SSvm3qMw/s1600-h/clip_image0024.jpg"&gt;&lt;img alt="clip_image002" border="0" height="127" src="http://lh6.ggpht.com/_SX0lCwhJEzc/TUrAfrpRPzI/AAAAAAAAAcs/V4H0hPXeZkI/clip_image002_thumb1.jpg?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="clip_image002" width="380" /&gt;&lt;/a&gt; &lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;Expand Settings and click on SMTP. Set the ‘Local host name’ to your local machine name. &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://lh3.ggpht.com/_SX0lCwhJEzc/TUrAghCOwiI/AAAAAAAAAcw/Reuh45eRTzY/s1600-h/clip_image0044.jpg"&gt;&lt;img alt="clip_image004" border="0" height="195" src="https://lh5.googleusercontent.com/_SX0lCwhJEzc/TUrAhohgNmI/AAAAAAAAAc0/PYV5dhV9wIg/clip_image004_thumb1.jpg?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="clip_image004" width="392" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Expand ‘Advanced’ and then expand ‘IP Ranges’ and click on ‘Localhost’. I changed the Name, Lower IP, Upper IP values and I removed the requirement for SMTP authentication.&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;div align="center"&gt;&lt;a href="http://lh5.ggpht.com/_SX0lCwhJEzc/TUrAiam5bbI/AAAAAAAAAc4/sPwXGaMDfTM/s1600-h/clip_image0064.jpg"&gt;&lt;img alt="clip_image006" border="0" height="256" src="http://lh5.ggpht.com/_SX0lCwhJEzc/TUrAjIhahVI/AAAAAAAAAc8/j9uPb-0VeY4/clip_image006_thumb1.jpg?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="clip_image006" width="400" /&gt;&lt;/a&gt;&amp;nbsp; &lt;/div&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;Because hMailServer does not have an email drop folder by default, you have to create a folder structure to use as a drop folder. I created the following folder structure to use as my drop folder:&amp;nbsp; C:\Program Files (x86)\hMailServer\Data\JohanSPSDev.local\Dropfolder\&lt;/li&gt;&lt;li&gt;Microsoft SMTP server adds header information to emails which hMailServer does not do, so if the information is missing SharePoint will not accept the emails into the library. So in order to prevent this you need to add a script to hMailServer to include the header information into the emails before there are dropped into the drop folder for SharePoint.&lt;/li&gt;&lt;li&gt;This process is very clearly explained by Wesley Bakker in his post: &lt;a href="http://weblogs.asp.net/wesleybakker/archive/2010/08/09/configure-hmailserver-for-sharepoint.aspx"&gt;http://weblogs.asp.net/wesleybakker/archive/2010/08/09/configure-hmailserver-for-sharepoint.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;li&gt;In hMailServer expand ‘Advanced’ and then click on ‘Scripts’. &lt;/li&gt;&lt;li&gt;Enable Scripts and click on Show Scripts. Open the existing script file in notepad and add the following text. &lt;/li&gt;&lt;li&gt;Ensure to change the drop folder path to your own configuration. &lt;/li&gt;&lt;li&gt;After you made the changes save the file and close it. &lt;/li&gt;&lt;li&gt;Back in hMailServer click on ‘Check syntax’ and then on ‘Reload scripts’. &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://lh5.ggpht.com/_SX0lCwhJEzc/TUrAj5fPCRI/AAAAAAAAAdA/5E1zyIeN1OM/s1600-h/clip_image0084.jpg"&gt;&lt;img alt="clip_image008" border="0" height="321" src="https://lh3.googleusercontent.com/_SX0lCwhJEzc/TUrAlOrQtTI/AAAAAAAAAdE/8nWLF-15y8c/clip_image008_thumb1.jpg?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="clip_image008" width="382" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;4. Test your SMTP Service:&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Now our hMailServer should be up and running and we are ready to test whether we can send and receive email… because I also have a corporate email account and I have Outlook installed the easiest for me was to create a POP account in Outlook and point it to my new domain. &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://lh5.ggpht.com/_SX0lCwhJEzc/TUrAmdDpizI/AAAAAAAAAdI/Bt5zA4OfZKc/s1600-h/clip_image0104.jpg"&gt;&lt;img alt="clip_image010" border="0" height="275" src="http://lh5.ggpht.com/_SX0lCwhJEzc/TUrAnNdiv6I/AAAAAAAAAdM/OBOGhpR6AtY/clip_image010_thumb1.jpg?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="clip_image010" width="388" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;The important thing here is to use an IP address of your local machine instead of using the word localhost or even your pc name. I tried my pc name as well as localhost but when I tested the account settings it kept failing… I only got it to work after I provided the IP address. &lt;/li&gt;&lt;li&gt;After I finished configuration of my POP3 account in Outlook I received the following test email in my inbox as confirmation that my SMTP service is working fine &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://lh6.ggpht.com/_SX0lCwhJEzc/TUrAodF2FnI/AAAAAAAAAdQ/kB3H_VtM3_s/s1600-h/clip_image0124.jpg"&gt;&lt;img alt="clip_image012" border="0" height="155" src="http://lh6.ggpht.com/_SX0lCwhJEzc/TUrAo0Xgq_I/AAAAAAAAAdU/WSsEQktRyKQ/clip_image012_thumb1.jpg?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="clip_image012" width="390" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;So now that our SMTP Service is working the next step is to configure SharePoint. &lt;/li&gt;&lt;li&gt;Open Central Administration and go to System Settings. &lt;/li&gt;&lt;li&gt;Click on ‘Configure incoming e-mail settings &lt;/li&gt;&lt;/ul&gt;&lt;a href="https://lh5.googleusercontent.com/_SX0lCwhJEzc/TUrApiAci7I/AAAAAAAAAdY/2x9ScdWYehU/s1600-h/clip_image0144.jpg"&gt;&lt;img alt="clip_image014" border="0" height="197" src="https://lh5.googleusercontent.com/_SX0lCwhJEzc/TUrArngAC3I/AAAAAAAAAdc/VxWFnMweRNE/clip_image014_thumb1.jpg?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="clip_image014" width="393" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Set ‘Enable sites on this server to receive e-mail’ to ‘Yes’ &lt;/li&gt;&lt;li&gt;Ensure that you change the e-mail server to match that of the new domain which you created in hMailServer and specify the drop folder which you manually created earlier. &lt;/li&gt;&lt;li&gt;Click on OK to save your settings. &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://lh6.ggpht.com/_SX0lCwhJEzc/TUrAsVyu_6I/AAAAAAAAAdg/g9z4y6LzBYU/s1600-h/clip_image0164.jpg"&gt;&lt;img alt="clip_image016" border="0" height="249" src="http://lh4.ggpht.com/_SX0lCwhJEzc/TUrAtDqtSXI/AAAAAAAAAdk/uEubCnq87z8/clip_image016_thumb1.jpg?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="clip_image016" width="388" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="left"&gt;To test that it is working create a new SP2010 document library and go to the library settings. Click on ‘Incoming e-mail settings’ &lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://lh3.ggpht.com/_SX0lCwhJEzc/TUrAtv_WHtI/AAAAAAAAAdo/T9dF1zwDCuY/s1600-h/clip_image0184.jpg"&gt;&lt;img alt="clip_image018" border="0" height="186" src="https://lh5.googleusercontent.com/_SX0lCwhJEzc/TUrAuRFxFBI/AAAAAAAAAds/lawF0s2ntRo/clip_image018_thumb1.jpg?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="clip_image018" width="394" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;strong&gt;5. Configure the Incoming e-mail settings for the library:&lt;/strong&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Configure the Incoming e-mail settings for the library as illustrated in the screenshot below and click on ‘OK’ to save the settings. Note that I specify an e-mail address which of an account which I created in hMailServer earlier. &lt;/li&gt;&lt;/ul&gt;&lt;a href="https://lh3.googleusercontent.com/_SX0lCwhJEzc/TUrAv0PJS1I/AAAAAAAAAdw/X5jutGcmXlo/s1600-h/clip_image0204.jpg"&gt;&lt;img alt="clip_image020" border="0" height="272" src="http://lh4.ggpht.com/_SX0lCwhJEzc/TUrAx7qCjwI/AAAAAAAAAd0/dQUaZpGiDjU/clip_image020_thumb1.jpg?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="clip_image020" width="405" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;strong&gt;6. Test Everything:&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Go back to Outlook and select the new POP3 mailbox. Create a new email to be sent from this account and send a test email to the email address of the document library and send the email. &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://lh4.ggpht.com/_SX0lCwhJEzc/TUrAyek84SI/AAAAAAAAAd4/5zU_lO6-hzk/s1600-h/clip_image0224.jpg"&gt;&lt;img alt="clip_image022" border="0" height="98" src="https://lh5.googleusercontent.com/_SX0lCwhJEzc/TUrAzCg6m9I/AAAAAAAAAd8/u074iovvMxc/clip_image022_thumb1.jpg?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="clip_image022" width="419" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;After outlook performed a send-receive and the email is in your ‘sent items’ go to SharePoint and refresh the document library. &lt;/li&gt;&lt;li&gt;If everything went well you should see the new email in you library. &lt;/li&gt;&lt;/ul&gt;&lt;a href="https://lh5.googleusercontent.com/_SX0lCwhJEzc/TUrA0CgavlI/AAAAAAAAAeA/HkNRdIirnu0/s1600-h/clip_image0244.jpg"&gt;&lt;img alt="clip_image024" border="0" height="151" src="http://lh6.ggpht.com/_SX0lCwhJEzc/TUrA0sathTI/AAAAAAAAAeE/Ih7HLmK7N4o/clip_image024_thumb1.jpg?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="clip_image024" width="422" /&gt;&lt;/a&gt; &lt;br /&gt;Note that when a library is configured to accept incoming email SharePoint will automatically add new columns to the library, but the new columns is not automatically added to the default view..so you can modify the view to see the additional information from the email: &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_SX0lCwhJEzc/TUrA2Hju9LI/AAAAAAAAAeI/68JvrTSX10c/s1600-h/clip_image0265.jpg"&gt;&lt;img alt="clip_image026" border="0" height="313" src="http://lh6.ggpht.com/_SX0lCwhJEzc/TUrA2kW9xzI/AAAAAAAAAeM/VouJCzWBSnI/clip_image026_thumb2.jpg?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="clip_image026" width="427" /&gt;&lt;/a&gt; &lt;br /&gt;You will also notice that the body of the email is not available as a column. &lt;br /&gt;It is very easy to extract the body information by using an eml reader class. I will how you how to do this in a separate post. &lt;br /&gt;Keep in mind that your environment might be very different than mine and there can be a million things configured which might have an impact on getting this to work for you. My anti-virus was not a problem and my hMailServer service was automatically started. &lt;br /&gt;I hope this post will help you to get incoming e-mail configured for SharePoint 2010 on a Windows 7 machine. &lt;br /&gt;Have fun!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429025622434259152-2429006361979225438?l=johanolivier.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johanolivier.blogspot.com/feeds/2429006361979225438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johanolivier.blogspot.com/2011/02/sharepoint-2010-incoming-e-mail.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/2429006361979225438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/2429006361979225438'/><link rel='alternate' type='text/html' href='http://johanolivier.blogspot.com/2011/02/sharepoint-2010-incoming-e-mail.html' title='SharePoint 2010 Incoming e-mail Settings on Windows 7'/><author><name>Johan Olivier</name><uri>http://www.blogger.com/profile/12362783186069410694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='19' src='http://2.bp.blogspot.com/_SX0lCwhJEzc/SxYSinEvesI/AAAAAAAAAAM/YDzvQbZhOzk/S220/JohanMuggshot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_SX0lCwhJEzc/TUrAfrpRPzI/AAAAAAAAAcs/V4H0hPXeZkI/s72-c/clip_image002_thumb1.jpg?imgmax=800' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429025622434259152.post-4418738196361316966</id><published>2011-01-28T11:14:00.002+02:00</published><updated>2011-03-17T16:14:58.641+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010 Development'/><title type='text'>SPFarm.Local is null (x86 vs. x64)</title><content type='html'>This is one of those silly little mistakes which we very often overlook…and believe it or not, I have found many forums and blog posts where developers ask for help on this.&lt;br /&gt;I wanted to work with the SPFarm.Local object earlier this week and forgot that SharePoint 2010 targets the 64bit platform …duh… so when I tried the following code:&lt;br /&gt;&lt;span style="font-family: times;"&gt;private void cmdCreateWebApp_Click(object sender, EventArgs e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int myPort = 999; &lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: times;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPFarm farm = SPFarm.Local;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPWebApplicationBuilder webAppBuilder = new SPWebApplicationBuilder &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SPFarm.Local); &lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family: times;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; webAppBuilder.Port = myPort;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPWebApplication newApplication = webAppBuilder.Create();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newApplication.Provision(); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPSite mySiteCollection = newApplication.Sites.Add("/",&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @"Mydomain\MyAdminUserName", "MyAdminUserEmail@CompanyName.co.za");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mySiteCollection.Close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;I kept getting an exception and found that SPFarm.Local remains null.&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_SX0lCwhJEzc/TUKJyal2KaI/AAAAAAAAAb4/AMOFTlL2gKI/s1600-h/image6%5B1%5D.png"&gt;&lt;img alt="image" border="0" height="172" src="http://lh6.ggpht.com/_SX0lCwhJEzc/TUKI92zUEzI/AAAAAAAAAb8/WYb0f7yVVsw/image6_thumb.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="484" /&gt;&lt;/a&gt; &lt;br /&gt;The problem was that my VS2010 project was set to target a x86 platform and not the x64!!&lt;br /&gt;So, I opened my project properties and changed the platform target to x64.&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_SX0lCwhJEzc/TUKI-3iCQYI/AAAAAAAAAcE/Aa5vkLqgzvs/s1600-h/image%5B2%5D.png"&gt;&lt;img alt="image" border="0" height="209" src="http://lh6.ggpht.com/_SX0lCwhJEzc/TUKJAIA_lBI/AAAAAAAAAcI/MN0k7LCwLI8/image_thumb%5B1%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="470" /&gt;&lt;/a&gt; &lt;br /&gt;Recompiled my code and ran it and it worked like a charm !&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_SX0lCwhJEzc/TUKJA2xIaCI/AAAAAAAAAcU/P5_XXCTQq6A/s1600-h/image12%5B1%5D.png"&gt;&lt;img alt="image" border="0" height="165" src="http://lh6.ggpht.com/_SX0lCwhJEzc/TUKJDMO3FII/AAAAAAAAAcc/0lRXabtzkFw/image12_thumb.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="462" /&gt;&lt;/a&gt;&lt;br /&gt;Always remember guys…. &lt;strong&gt;X64&lt;/strong&gt; !!!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429025622434259152-4418738196361316966?l=johanolivier.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johanolivier.blogspot.com/feeds/4418738196361316966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johanolivier.blogspot.com/2011/01/spfarmlocal-is-null-x86-vs-x64.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/4418738196361316966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/4418738196361316966'/><link rel='alternate' type='text/html' href='http://johanolivier.blogspot.com/2011/01/spfarmlocal-is-null-x86-vs-x64.html' title='SPFarm.Local is null (x86 vs. x64)'/><author><name>Johan Olivier</name><uri>http://www.blogger.com/profile/12362783186069410694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='19' src='http://2.bp.blogspot.com/_SX0lCwhJEzc/SxYSinEvesI/AAAAAAAAAAM/YDzvQbZhOzk/S220/JohanMuggshot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_SX0lCwhJEzc/TUKI92zUEzI/AAAAAAAAAb8/WYb0f7yVVsw/s72-c/image6_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429025622434259152.post-6717501179987575637</id><published>2010-12-23T15:34:00.002+02:00</published><updated>2011-03-17T16:15:18.997+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010 Development'/><title type='text'>WSPBuilder Error x86 vs. x64 (SP 2007)</title><content type='html'>Today I came across 2 errors:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Feature 'featureid' is not installed in this farm, and can not be added to this scope. &lt;/li&gt;&lt;li&gt;Cannot add the specified assembly to the global assembly cache: cablib.dll. &lt;/li&gt;&lt;/ol&gt;I tried to deploy a WSP solution which we created a few weeks ago into a test SharePoint 2007 (MOSS) environment.&lt;br /&gt;I am using the CodePlex.SharePointInstaller (Setup.exe) and my solution.wsp file. &lt;br /&gt;This works well if I install it on my dev environment, but as soon as I try to install it on the test environment I get the following error at the very last step of the installation wizard.&lt;br /&gt;Error: Cannot add the specified assembly to the global assembly cache: cablib.dll.&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_SX0lCwhJEzc/TRNP5RDwJ6I/AAAAAAAAAa8/Fy7wDlm4BDw/s1600-h/image%5B11%5D.png"&gt;&lt;img alt="image" border="0" height="270" src="http://lh6.ggpht.com/_SX0lCwhJEzc/TRNP8Jcy_wI/AAAAAAAAAbE/lrIFOkFE-SM/image_thumb%5B5%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="344" /&gt;&lt;/a&gt; &lt;br /&gt;I checked the 12 hive and my feature files are all there, but as soon as I try to activate a feature which contains an event receiver (assembly should be in GAC) I get the following error: &lt;br /&gt;Feature 'dc618366-db0a-4912-88d1-ad59e55bac90' is not installed in this farm, an &lt;br /&gt;d can not be added to this scope.&lt;br /&gt;After a bit of head-scratching I realized something. The solution was built on a 64bit dev environment and I am trying to install into a 32bit test environment.&lt;br /&gt;So this is what I had to do to get it to work:&lt;br /&gt;In Visual Studio, open you WSPBuilder project and go to project –&amp;gt; properties. Then change the Platform Target to x86.&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_SX0lCwhJEzc/TRNP82sSNtI/AAAAAAAAAbM/VKvODsiD6HU/s1600-h/image%5B12%5D.png"&gt;&lt;img alt="image" border="0" height="144" src="http://lh3.ggpht.com/_SX0lCwhJEzc/TRNP9bweZ-I/AAAAAAAAAbQ/oQXmOdbLQ4s/image_thumb%5B6%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="image" width="344" /&gt;&lt;/a&gt; &lt;br /&gt;Save your project and build it. &lt;br /&gt;Reinstall the WSP (run the SharePoint Solution Installer for your WSP to remove the old version and then run it again to install the new version.)&lt;br /&gt;This time the assemblies can be deployed to the GAC and you will now be able to activate your feature !!!&lt;br /&gt;Enjoy !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429025622434259152-6717501179987575637?l=johanolivier.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johanolivier.blogspot.com/feeds/6717501179987575637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johanolivier.blogspot.com/2010/12/wspbuilder-error-x86-vs-x64.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/6717501179987575637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/6717501179987575637'/><link rel='alternate' type='text/html' href='http://johanolivier.blogspot.com/2010/12/wspbuilder-error-x86-vs-x64.html' title='WSPBuilder Error x86 vs. x64 (SP 2007)'/><author><name>Johan Olivier</name><uri>http://www.blogger.com/profile/12362783186069410694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='19' src='http://2.bp.blogspot.com/_SX0lCwhJEzc/SxYSinEvesI/AAAAAAAAAAM/YDzvQbZhOzk/S220/JohanMuggshot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_SX0lCwhJEzc/TRNP8Jcy_wI/AAAAAAAAAbE/lrIFOkFE-SM/s72-c/image_thumb%5B5%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429025622434259152.post-2672402958839831370</id><published>2010-10-22T21:27:00.031+02:00</published><updated>2010-10-22T21:41:20.579+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Client Object Model'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010 Development'/><title type='text'>SP2010 Basics: Client Object Model</title><content type='html'>&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;This post is part of the series which I will share in order to help you understand the new architecture of SharePoint 2010 and the impact thereof on you as developer.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;This week I had the opportunity to be a speaker at the AvePoint Interactive Theater at Teched Africa 2010. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;I decided to present an understanding of the SharePoint 2010 Managed Client Object Model. This is an introduction to how the Client Object model works, the benefits it brings and some very important considerations you have make.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;So...lets get cracking...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Trebuchet MS;"&gt;&lt;strong&gt;The Standard SharePoint 2007 Implementation&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: Trebuchet MS;"&gt;This diagram shows the standard communication between a SharePoint client browser and the server in a non customized environment.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;You can see that there is nothing special required on the client side. Simple comms to the server and then some execution there. &lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_SX0lCwhJEzc/TMHKSUdP_0I/AAAAAAAAAZ8/5kLPLiBo6xM/s1600/1.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="252" nx="true" src="http://4.bp.blogspot.com/_SX0lCwhJEzc/TMHKSUdP_0I/AAAAAAAAAZ8/5kLPLiBo6xM/s400/1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Trebuchet MS;"&gt;&lt;strong&gt;What do we want to achieve?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: Trebuchet MS;"&gt;Sometimes we want to extend SharePoint by adding functionality which will execute on the client-side. This means we want some mechanism to execute code on the client-side but then still interact with SharePoint data and functionality which reside on the server.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Examples of this will be:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;1-Building Silverlight components, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;2-Build web parts which contains client side code like ajax or silverlight, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;3-Extend an existing Windows forms application which contains client-side code.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Trebuchet MS;"&gt;&lt;strong&gt;The Challenges in SharePoint 2007&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: Trebuchet MS;"&gt;The first challenge we faced in SharePoint 2007 was that if we wanted to extend an existing application which runs on the client side. In order to utilize SharePoint you had to use the native SharePoint Web Services or build new custom web services which will be hosted on the SharePoint server. Remember that custom web services will use the server object model. Deploying custom web services onto the server creates an administrative overhead and introduces a risk.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_SX0lCwhJEzc/TMHWR7hJevI/AAAAAAAAAaA/jFbfdxEBSo8/s1600/2.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="306" nx="true" src="http://2.bp.blogspot.com/_SX0lCwhJEzc/TMHWR7hJevI/AAAAAAAAAaA/jFbfdxEBSo8/s320/2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;The second challenge is in building silverlight applications which execute client-side.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_SX0lCwhJEzc/TMHZlcg1auI/AAAAAAAAAaE/QSRDcEe8pLE/s1600/3.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="311" nx="true" src="http://2.bp.blogspot.com/_SX0lCwhJEzc/TMHZlcg1auI/AAAAAAAAAaE/QSRDcEe8pLE/s400/3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;So it is very obvious that we needed some mechanism to build client-side code which has an awareness and access to the SharePoint Server Object Model.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_SX0lCwhJEzc/TMHb8yGSSGI/AAAAAAAAAaI/iH6y1xGsR1o/s1600/4.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="257" nx="true" src="http://3.bp.blogspot.com/_SX0lCwhJEzc/TMHb8yGSSGI/AAAAAAAAAaI/iH6y1xGsR1o/s400/4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Microsoft helped solve this problem for us by introducing the SharePoint 2010 Client Side Object Model. Now we have a mechanism to extend SharePoint functionality through client-side code..without using&amp;nbsp;SharePoint Web Services !!!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_SX0lCwhJEzc/TMHceQJG6SI/AAAAAAAAAaM/rQThUiMfGN0/s1600/5.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="276" nx="true" src="http://2.bp.blogspot.com/_SX0lCwhJEzc/TMHceQJG6SI/AAAAAAAAAaM/rQThUiMfGN0/s400/5.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;How does the Client-Side Object Model&amp;nbsp;work?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_SX0lCwhJEzc/TMHdjrhfsoI/AAAAAAAAAaQ/X-vA-QROYoY/s1600/6.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="375" nx="true" src="http://1.bp.blogspot.com/_SX0lCwhJEzc/TMHdjrhfsoI/AAAAAAAAAaQ/X-vA-QROYoY/s400/6.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-family: Trebuchet MS;"&gt;From the diagram you will see that we have the client on the left and the server on the right. The server contains the SharePoint Databases and the Server-side Object model.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Between the server and client is a new WCF service called Client.svc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;When you reference the client-side object model in your code (example later in this post) , the internal proxy class takes care of sending requests and review responses via the WCF Service.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;The very important thing to notice here is that we dont want to send requests to the server and get a response for almost every line of code we execute. So how it is designed to work is that in your code you will construct the objects and execute standard SharePoint OM functions. The objects will be empty structures without properties and without data, and the functions will not execute right away.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Then at logical points you bundle everything together and send it to the server for processing. The server will then unpack your bundled code and execute it in the correct order and return JSON to your client-side. Your objects will then be populated with data and properties and you can carry on executing more code. The important concept to understand is that you bundle empty objects together and send to the server when ready for processing.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;The SharePoint Foundation 2010 managed client model consist of &lt;strong&gt;Two Assemblies &lt;/strong&gt;that &lt;strong&gt;contains five namespaces.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: Trebuchet MS;"&gt;There are 3 types of client object models.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: Trebuchet MS;"&gt;1-Managed Client Object model&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: Trebuchet MS;"&gt;2-Silverlight Client Object model&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: Trebuchet MS;"&gt;3-ECMAScript Client Object model&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: blue; font-family: Trebuchet MS;"&gt;1-Managed Client Object model:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;This is used to extend Windows Form applications, services, WPF applications, console applications etc.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;It consist of Microsoft.SharePoint.Client.dll (282 kb) and&lt;br /&gt;Microsoft.SharePoint.Client.Runtime.dll (146 kb)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: blue; font-family: Trebuchet MS;"&gt;2-Silverlight Client Object model:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;span style="font-family: Trebuchet MS;"&gt;This is used to Silverlight Applications.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;It consist of Microsoft.SharePoint.Client.dll (282 kb) and&lt;br /&gt;Microsoft.SharePoint.Client.Runtime.dll (146 kb)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: blue;"&gt;3-ECMAScript Client Object model:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;JavaScript in our SharePoint user interface.&lt;br /&gt;It consist of:&lt;br /&gt;CUI.js (344 kb)&lt;br /&gt;SP.js (381 kb)&lt;br /&gt;SP.Core.js (13 kb)&lt;br /&gt;SP.Ribbon.js (208 kb)&lt;br /&gt;etc...&lt;br /&gt;&lt;br /&gt;You will notice that there are a few differences between the objects in the Client-Side Object model and the Server-side Object model:&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_SX0lCwhJEzc/TMHhS_FpvfI/AAAAAAAAAaU/M72I36XKIS4/s1600/7.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="190" nx="true" src="http://4.bp.blogspot.com/_SX0lCwhJEzc/TMHhS_FpvfI/AAAAAAAAAaU/M72I36XKIS4/s320/7.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Lets build some simple code:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Create a new Visual Studio 2010 Console application&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Add a references to:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Microsoft.SharePoint.Client.dll and &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Microsoft.SharePoint.Client.Runtime.dll&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;ensure your console app code look as follows:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;using System; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;using Microsoft.SharePoint.Client; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;class DisplayWebTitle &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;{ &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;static void Main() &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;{ &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;ClientContext clientContext =&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;new ClientContext("&lt;/span&gt;&lt;a href="http://ltp-21:17819/"&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;http://ltp-21:17819/&lt;/span&gt;&lt;/a&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;"); &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;Web site = clientContext.Web; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;clientContext.Load(site); &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;clientContext.ExecuteQuery(); &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;Console.WriteLine("Title: {0}", site.Title); &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;} &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Press control+F5 and see your code execute.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;strong&gt;Lets analyze the code:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;You inform the managed client OM about the operations that you want to take. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;This includes accessing the values of properties of objects (for example, objects of the List class, ListItem class, and Web class), CAML queries that you want to run, and objects such as ListItem objects that you want to insert, update or delete.&lt;br /&gt;Then you call the ExecuteQuery method.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Only when you call the ExecuteQuery will the objects be bundled up and sent to the server for processing.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;No network traffice occurs before then.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Another Example:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Create a new Visual Studio 2010 Console application&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Add a references to:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Microsoft.SharePoint.Client.dll and &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Microsoft.SharePoint.Client.Runtime.dll&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;ensure your console app code look as follows:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times;"&gt;using System; &lt;br /&gt;using Microsoft.SharePoint.Client; &lt;br /&gt;class Program &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp; static void Main() &lt;br /&gt;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;ClientContext clientContext = new ClientContext("&lt;a href="http://ltp-21:17819/"&gt;http://ltp-21:17819/&lt;/a&gt;"); &lt;br /&gt;&amp;nbsp;List list = clientContext.Web.Lists.GetByTitle("Announcements"); &lt;br /&gt;&amp;nbsp;CamlQuery camlQuery = new CamlQuery(); &lt;br /&gt;&amp;nbsp;camlQuery.ViewXml = "&amp;lt;View/&amp;gt;"; &lt;br /&gt;&amp;nbsp;ListItemCollection listItems = list.GetItems(camlQuery); &amp;nbsp;clientContext.Load(list);&lt;br /&gt;&amp;nbsp;clientContext.Load(listItems); &lt;br /&gt;&amp;nbsp;clientContext.ExecuteQuery(); &lt;br /&gt;&amp;nbsp;foreach (ListItem listItem in listItems) &lt;br /&gt;&amp;nbsp;&amp;nbsp;Console.WriteLine("Id: {0} Title: {1}", listItem.Id, &amp;nbsp;listItem["Title"]); &lt;br /&gt;&amp;nbsp; } &lt;br /&gt;}&lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times;"&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Press control+F5 and see your code execute.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Again, the code will be bundled up and only be sent to the server for processing when the .ExecuteQuery() run.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;This means that although you called the list.GetItems the CAML did not execute at that time.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;When you call the .ExecuteQuery(), the server will receive your code, unpack it and execute it in the correct sequence and return the objects populated with data and properties.... all processed on the server side... and ready to be further used on the client-side !!!! &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Amazing, isnt it ! Well I hope this gives you a nice overview of the Client Side Object model in SharePoint 2010.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Have Fun !&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429025622434259152-2672402958839831370?l=johanolivier.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johanolivier.blogspot.com/feeds/2672402958839831370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johanolivier.blogspot.com/2010/10/sp2010-basics-client-object-model.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/2672402958839831370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/2672402958839831370'/><link rel='alternate' type='text/html' href='http://johanolivier.blogspot.com/2010/10/sp2010-basics-client-object-model.html' title='SP2010 Basics: Client Object Model'/><author><name>Johan Olivier</name><uri>http://www.blogger.com/profile/12362783186069410694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='19' src='http://2.bp.blogspot.com/_SX0lCwhJEzc/SxYSinEvesI/AAAAAAAAAAM/YDzvQbZhOzk/S220/JohanMuggshot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_SX0lCwhJEzc/TMHKSUdP_0I/AAAAAAAAAZ8/5kLPLiBo6xM/s72-c/1.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429025622434259152.post-3299692189339327898</id><published>2010-08-23T21:30:00.003+02:00</published><updated>2010-08-26T19:54:49.025+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Packaging and Deployment'/><title type='text'>SharePoint 2007 Site Templates vs. Site Definitions</title><content type='html'>&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;There is an ongoing debate between SharePoint developers regarding the best approach for packaging and deploying customized SharePoint solutions.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;One easy approach is to use site templates, but my opinion is that for a developer who are concerned about system performance and who needs finer control over cusomization, a site definition is the better option.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;I found that building&amp;nbsp;some&amp;nbsp;sort of&amp;nbsp;&lt;strong&gt;custom site provisioning provider&lt;/strong&gt; works the best. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Below is my analysis of the differences between site definitions vs. site templates and at the bottom is a summary of the approach I prefer for deploying custom SharePoint solutions. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;strong&gt;&lt;u&gt;What is a Site Definition?&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;A Site definition is the core definition of what a site is in SharePoint.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;User content on a SharePoint site is located in a SQL Server database. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;All the code and the pages that are used to administer and render the SharePoint site are stored as physical files on the web server. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;A site definition exists as physical files on the web server and defines, through the use of SharePoint’s XML schema (known as CAML), the lists, columns, features etc. that should be created / activated when a site is created. (The files includes .aspx pages and .xml files)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;A site definition is installed on file system of web front ends, located at ..\12\Template\SiteTemplates. This directory is language-neutral.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Site definition files are cached in memory on the server at process start-up of Microsoft Internet Information Services (IIS), which improves scalability and performance by reducing unnecessary data storage or retrieval, and by allowing uncustomized pages to be reused across sites. The information contained in these files is pulled from the cache at run time. Pages and list schemas are read from the site definition files but appear to be actual files within a site.&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;strong&gt;&lt;u&gt;What is a Site Template?&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;A site template (*.stp file) is created through the user interface or through implementation of the object model. It is a package containing a set of differences and changes from a base site definition. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;The site template package is stored as a CAB-based file that can be downloaded or uploaded to site collections by users with the appropriate rights. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;It is not as performant as a pure site definition as site definitions are cached on start of IIS on the web front ends while site templates are stored and hence need to be fetched from the content database and merged with the site definition code at runtime to render the site.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;strong&gt;&lt;u&gt;Deciding Between Site Definitions and Custom Site Templates&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt; &lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;/u&gt;&lt;/strong&gt;&amp;nbsp; &lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Site Templates&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Easy to create.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;You do not need to be a server administrator on the Web server to create and deploy site templates.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Easiest way for system administrators to extend SharePoint without requirement for development skills.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Deployment is simple because template data is stored centrally in the configuration database.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Because it is slow to store templates in and retrieve them from the database, site templates can result in slower performance.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;The contents of unghosted pages are routed through the Safe Mode parser, which prevents server-side code from executing, and which depends entirely on the Safe Controls list specified in the web.config file of the wwwroot directory to determine which controls can be rendered at run time.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;You can modify a site template without affecting existing sites created by the template.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Custom templates can be modified without affecting existing sites that have been created from the templates.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Custom templates are not created in a development environment.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;If the site definition on which the custom template is based does not exist on the front-end server or servers, the custom template will not work.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;If you plan to transfer a site template to separate farm, that the farms have the same versions installed of SharePoint installed. (hotfixes,etc.) This is due to the dependence site templates have on the original base site definition they were created from.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Site Definitions:&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Complex and laborious to create.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Administrators must always be involved in the deployment of site definitions.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Most appropriate for third-party developers.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Deploying a site definition requires more work.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Site definition files are cached in memory on the server at process start-up of Microsoft Internet Information Services (IIS), which improves scalability and performance by reducing unnecessary data storage or retrieval.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Uncustomized pages to be reused across sites.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;You can achieve a finer level of customization by directly editing all the schema files.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Custom site definitions are version and upgrade independent.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Subsequent upgrades to SharePoint Products and Technologies may overwrite existing default site definitions. Using custom site definitions excludes your sites from potential upgrade issues.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;There is no easy way to modify site definitions once they are deployed&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Doing anything other than adding code can break existing sites&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Users cannot apply a SharePoint theme through a site definition.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Customizing site definitions requires access to the file system of the front-end Web server.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Multiple root-level pages -- In a site definition, you can define several root-level pages. Instead of your sites having one page, they can have many. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Template picker pages -- You have the ability to change the icon that displays in conjunction with the template so it stands out as you create the templates.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Microsoft doesn't support changes made to a site definition after you've created the sites. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Multiple lists of the same type -- Because of the structure of CAML and the ONET.XML file, you can't create multiple lists from the same list definition and put them on the same page.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Summary of my preferred approach:&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;I found that building a &lt;strong&gt;custom site provisioning provider &lt;/strong&gt;works the best. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;This means that I build my SharePoint artefacts - lists, libraries, web parts, custom forms, etc. using SharePoint, SharePoint Designer and Visual Studio. When I am then ready to package and deploy my custom SharePoint solution I use the SharePoint Solutions Generator - part of Microsoft SharePoint Developer Tools 9.0 to create list and library definition features.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Once I have my list and library definitions in place I create a Visual Studio WSP Builder project with an Feature Event Receiver. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;In the "activate" event I add logic to activate the definition features and in the "deactivating" event I do a cleanup (deactivate definition features and remove web parts)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;This means the following will happen when one of my solutions are deployed / retracted:&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;1. The user creates a blank SharePoint site. (previously team site)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;2. The user runs a Setup.exe file.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;3. This file is the un-customized Codeplex Solutions Installer and will read configuration data from Setup.exe.config&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;4. The file will open a deployment wizard which guides the user through a series of screens to ensure successful solution deployment.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;5. After successful deployment the user follow instructions from the deployment guide to execute a single stsadm.exe command.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;6. This command will activate a single hidden feature.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;7. The single feature which gets activated will do the following on the site:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Set the new site title.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Check environment for previously installed features which are still active&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Activate Web Features in the correct order&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Activate Site Collection Features&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Allows activation of generic site collection features – shared among more than 1 solution.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Clear Site Structure – remove unwanted artefacts&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Set Site Structure – build Quick Launch Items, Set Web Parts on Default.aspx page etc.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;8. During deactivation of the single “configuration” feature the following will happen:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Set the new site title back to default.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Deactivate Web Features in the correct order&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Deactivate Site Collection Features&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Clear Site Structure – remove unwanted artefacts&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;I do not delete lists or libraries which contain data – do not want to delete data.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Benefits of this approach:&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Allows dependencies between hidden features - lookup lists&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Allows list to be automatically instantiated with default data&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Allows library content – like UDCX files to be configured with new environmental values (link InfoPath Form to dynamic data connections)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Allows activation of web part features to site collection scope&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Allows validation and upload of InfoPath Forms (using site collection feature)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Allows publishing &lt;span id="goog_914088969"&gt;&lt;/span&gt;&lt;span id="goog_914088967"&gt;&lt;/span&gt;of InfoPath Form to site collection forms library&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Leverage off the benefits of using definitions.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;I hope this will help you to choose the best approach for the kind of SharePoint solutions which you need to deploy... good luck !!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;strong&gt;&lt;u&gt;Further reading and references:&lt;/u&gt;&lt;/strong&gt; &lt;/span&gt;&lt;br /&gt;&lt;a href="http://itfootprint.wordpress.com/2007/04/18/sharepoint-site-template-vs-site-definition/"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;http://itfootprint.wordpress.com/2007/04/18/sharepoint-site-template-vs-site-definition/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms980852.aspx"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;http://msdn.microsoft.com/en-us/library/ms980852.aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mymemorysucks.wordpress.com/2009/02/25/site-definitions-vs-site-templates-and-site-provisioning-providers/"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;http://mymemorysucks.wordpress.com/2009/02/25/site-definitions-vs-site-templates-and-site-provisioning-providers/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://my.advisor.com/doc/17614"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;http://my.advisor.com/doc/17614&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/brianwilson/archive/2008/07/13/site-definitions-versus-site-templates-and-deciding-on-the-correct-customization-approach.aspx"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;http://blogs.msdn.com/b/brianwilson/archive/2008/07/13/site-definitions-versus-site-templates-and-deciding-on-the-correct-customization-approach.aspx&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429025622434259152-3299692189339327898?l=johanolivier.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johanolivier.blogspot.com/feeds/3299692189339327898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johanolivier.blogspot.com/2010/08/sharepoint-2007-site-templates-vs-site.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/3299692189339327898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/3299692189339327898'/><link rel='alternate' type='text/html' href='http://johanolivier.blogspot.com/2010/08/sharepoint-2007-site-templates-vs-site.html' title='SharePoint 2007 Site Templates vs. Site Definitions'/><author><name>Johan Olivier</name><uri>http://www.blogger.com/profile/12362783186069410694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='19' src='http://2.bp.blogspot.com/_SX0lCwhJEzc/SxYSinEvesI/AAAAAAAAAAM/YDzvQbZhOzk/S220/JohanMuggshot.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429025622434259152.post-5819630939521554120</id><published>2010-08-16T22:17:00.018+02:00</published><updated>2011-02-10T10:33:00.807+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010 Development'/><title type='text'>SharePoint 2010 Provider Consumer Web Parts</title><content type='html'>&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;In this tutorial I will show how to develop&amp;nbsp;Provider and Consumer web parts and connect them through an Interface.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;The result will be the ability to have two web parts on a SharePoint 2010 page and filter the contents of the consumer web part on the data from the provider web part. This is almost like a master - detail view.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;You can view the same functionality by looking at the standard SharePoint web parts. Modify a web part --&amp;gt; select Connections and the "Provide data to..." or "Receive data from..."&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_SX0lCwhJEzc/TGmVmqCpEcI/AAAAAAAAAYI/gkd6k7KrOnQ/s1600/3.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="172" ox="true" src="http://3.bp.blogspot.com/_SX0lCwhJEzc/TGmVmqCpEcI/AAAAAAAAAYI/gkd6k7KrOnQ/s640/3.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;and then...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_SX0lCwhJEzc/TGmZneB4M2I/AAAAAAAAAYQ/3TMM1EXvgO0/s1600/4.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="201" ox="true" src="http://1.bp.blogspot.com/_SX0lCwhJEzc/TGmZneB4M2I/AAAAAAAAAYQ/3TMM1EXvgO0/s400/4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;strong&gt;&lt;u&gt;Lets Get Started:&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;I will show the detailed steps to:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;1 - Develop a Connection Interface&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;2 - Develop a simple provider web part.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;3 - Develop a simple consumer web part.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;strong&gt;&lt;u&gt;1 - Develop a Connection Interface.&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Open Visual Studio 2010 and create a new project. In the New Project dialog window, select Visual C# --&amp;gt; SharePoint 2010 --&amp;gt; Empty SharePoint Project.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Provide a descriptive name and click on OK.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Select to deploy the solution as a "Deploy as Farm Solution" and click on Finish.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Wait for the solution to be created in Visual Studio.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Now we will create the web part connection interface which is responsible for exchanging connection information between a provider and consumer web part.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;In the Solution Explorer, right-click on your project and select "Add --&amp;gt; New item".&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;In the Add New Item dialog window, select Visual C# --&amp;gt; Code --&amp;gt; Interface.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Enter &lt;strong&gt;ITask &lt;/strong&gt;in the Name textbox and click the Add button.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Open ITask.cs in code view and change the&amp;nbsp;visibility of the interface to Public and add the following code inside the interface:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;namespace WebPartConnectors&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&lt;strong&gt;public&lt;/strong&gt;&lt;/span&gt; interface ITask&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;int Id { get; }&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string Name { get; }&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;2 - Develop a simple provider web part:&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;In the Solution Explorer, right click on your project and select Add --&amp;gt; New Item…&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Select Visual C# --&amp;gt; SharePoint 2010 Web Part.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Enter ProviderWebPart in the Name textbox and click Add.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Open ProviderWebPart.cs in code view and in the ProviderWebPart class declaration, implement ITask.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;public class ProviderWebPart : Microsoft.SharePoint.WebPartPages.WebPart, &lt;span style="color: red;"&gt;&lt;strong&gt;ITask&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Insert the following code after the ProviderWebPart class declaration. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;This code block implements the ITask web part connection interface and adds a local variable to the web part.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;DropDownList _objPicker = null;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;int ITask.Id &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;{ &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; get &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{ &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; return int.Parse(_objPicker.SelectedValue); &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;} &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;string ITask.Name &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;{ &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp; get &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return _objPicker .SelectedItem.ToString(); &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Update the CreateChildControls method to contain the following code:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;protected override void CreateChildControls()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp; try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp; { &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _objPicker= new DropDownList(); &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (SPSite spSite = new SPSite(SPContext.Current.Web.Url)) &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (SPWeb spWeb = spSite.OpenWeb()) &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SPList objList = spWeb.Lists["Tasks"];&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (SPListItem objListItem in objList.Items)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _objPicker.Items.Add(new ListItem(objListItem.Title, objListItem.ID.ToString())); &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _objPicker.AutoPostBack = true;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Controls.Add(_objPicker);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp; catch (Exception ex)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp; { &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Controls.Clear(); &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Controls.Add(new LiteralControl(ex.Message));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Insert the following ConnectionProvider property below the CreateChildControls method. This provides the Connection Provider interface point for the ProviderWebPart:&lt;/span&gt; &lt;span style="color: red;"&gt;[ConnectionProvider("Task Name and ID")] &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;public ITask NameDoesNotMatter() &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;{ &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp; return this;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Save your solution and build. Ensure that there are no build errors before you proceed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;3 - Develop a simple consumer web part.&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;In the Solution Explorer, right click on your project and select Add --&amp;gt; New Item…&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Select Visual C# --&amp;gt; SharePoint 2010 Web Part.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Enter ConsumerWebPart in the Name textbox and click Add.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Insert the following code inside the ConsumerWebPart class declaration:&lt;/span&gt; &lt;br /&gt;&lt;span style="color: red;"&gt;ITask _provider = null; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;Label _lbl = null;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Update the CreateChildControls method to contain the following code:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;protected override void CreateChildControls()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;try &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;_lbl = new Label();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;if (_provider != null)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;if (_provider.Id &amp;gt; 0) &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;{ &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;_lbl.Text = _provider.Name + " was selected."; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;} &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;{ &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;_lbl.Text = "Nothing was selected."; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;} &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;} &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;else &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;{ &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;_lbl.Text = "No Provider Web Part Connected."; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;this.Controls.Add(_lbl);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;catch (Exception ex)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;{ &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;this.Controls.Clear(); &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;this.Controls.Add(new LiteralControl(ex.Message)); &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;}&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;span style="color: red;"&gt;&lt;span style="color: black;"&gt;&lt;span style="color: red;"&gt;&lt;span style="color: black;"&gt;Insert the following ConnectionConsumer property below the CreateChildControls method. This provides the Connection Consumer interface point for the ConsumerWebPart:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: red;"&gt;&lt;span style="color: black;"&gt;&lt;span style="color: red;"&gt;[ConnectionConsumer("Name and ID")]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;public void ThisNameDoesNotMatter(ITask providerInterface)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp; _provider = providerInterface;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;span style="color: black;"&gt;Save the solution, Build the solution and Deploy the solution.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;Go to your target SharePoint 2010 site and refresh the site.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;Edit a page and add the two new web parts.(ensure that you have some data in the SharePoint Tasks list)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: red;"&gt;&lt;/span&gt; &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_SX0lCwhJEzc/TGmUAfY28-I/AAAAAAAAAXw/Uy5CGV9Cc-Q/s1600/0.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="217" ox="true" src="http://3.bp.blogspot.com/_SX0lCwhJEzc/TGmUAfY28-I/AAAAAAAAAXw/Uy5CGV9Cc-Q/s400/0.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;View your two new web parts on the page:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_SX0lCwhJEzc/TGmUsZ9qGzI/AAAAAAAAAX4/9STKl9GYbHE/s1600/1.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="366" ox="true" src="http://3.bp.blogspot.com/_SX0lCwhJEzc/TGmUsZ9qGzI/AAAAAAAAAX4/9STKl9GYbHE/s400/1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;span style="color: black;"&gt;Edit the page again and select the ProviderWebPart and click on Edit Web Part.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_SX0lCwhJEzc/TGmVKr7DuhI/AAAAAAAAAYA/2L3AqrycbyA/s1600/2.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="233" ox="true" src="http://1.bp.blogspot.com/_SX0lCwhJEzc/TGmVKr7DuhI/AAAAAAAAAYA/2L3AqrycbyA/s400/2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Select the ProviderWebPart again, but this time select "Connections" --&amp;gt; "Send Task Name and ID To" --&amp;gt; ConsumerWebPart.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_SX0lCwhJEzc/TGmVmqCpEcI/AAAAAAAAAYI/gkd6k7KrOnQ/s1600/3.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="171" ox="true" src="http://3.bp.blogspot.com/_SX0lCwhJEzc/TGmVmqCpEcI/AAAAAAAAAYI/gkd6k7KrOnQ/s640/3.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Now, if you select an item from the dropdown list control in the providerwebpart you will see the corresponding data change in the consumerwebpart.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_SX0lCwhJEzc/TGmZneB4M2I/AAAAAAAAAYQ/3TMM1EXvgO0/s1600/4.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="201" ox="true" src="http://1.bp.blogspot.com/_SX0lCwhJEzc/TGmZneB4M2I/AAAAAAAAAYQ/3TMM1EXvgO0/s400/4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;span style="color: black;"&gt;This way you will be able to build master-detail views or web part filters based on selections of other web parts.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;Enjoy !!&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/429025622434259152-5819630939521554120?l=johanolivier.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johanolivier.blogspot.com/feeds/5819630939521554120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johanolivier.blogspot.com/2010/08/sharepoint-2010-provider-consumer-web.html#comment-form' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/5819630939521554120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/5819630939521554120'/><link rel='alternate' type='text/html' href='http://johanolivier.blogspot.com/2010/08/sharepoint-2010-provider-consumer-web.html' title='SharePoint 2010 Provider Consumer Web Parts'/><author><name>Johan Olivier</name><uri>http://www.blogger.com/profile/12362783186069410694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='19' src='http://2.bp.blogspot.com/_SX0lCwhJEzc/SxYSinEvesI/AAAAAAAAAAM/YDzvQbZhOzk/S220/JohanMuggshot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_SX0lCwhJEzc/TGmVmqCpEcI/AAAAAAAAAYI/gkd6k7KrOnQ/s72-c/3.png' height='72' width='72'/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429025622434259152.post-1307414149778859356</id><published>2010-08-16T13:03:00.000+02:00</published><updated>2010-08-16T13:03:54.348+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010 Development'/><title type='text'>Basic SharePoint 2010 LINQ Web Part</title><content type='html'>&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;In this tutorial I will show how to develop a very basic visual web part which uses LINQ (LINQ to SharePoint) to populate data from a SharePoint 2010 list into a SPDataGrid control.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;The web part will look like this:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_SX0lCwhJEzc/TGkR2AOXKYI/AAAAAAAAAW4/2herGNf9WfE/s1600/00.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="190" ox="true" src="http://3.bp.blogspot.com/_SX0lCwhJEzc/TGkR2AOXKYI/AAAAAAAAAW4/2herGNf9WfE/s640/00.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Overview:&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;The following steps will be taken to develop the web part which contains LINQ.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;1- Create a Visual Web Part.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;2- Create a LINQ proxy class.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;3- Use a LINQ provider to read data from a SharePoint list.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;4- Show the data in a SPDataGrid control.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Lets get started&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="color: blue;"&gt;1- Create a Visual Web Part:&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Create a new Visual Studio 2010 project. From the installed templates select Visual C# --&amp;gt; SharePoint --&amp;gt; 2010 --&amp;gt; Visual Web Part.&lt;br /&gt;Provide a suitable name and click on OK.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_SX0lCwhJEzc/TGkTUpt_HuI/AAAAAAAAAXA/79b2qeFnNIY/s1600/0.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="257" ox="true" src="http://1.bp.blogspot.com/_SX0lCwhJEzc/TGkTUpt_HuI/AAAAAAAAAXA/79b2qeFnNIY/s400/0.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Select to deploy the solution as a Farm Solution and click on "Finish"&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_SX0lCwhJEzc/TGkTnFe3n8I/AAAAAAAAAXI/M1Q_JIFdekc/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="316" ox="true" src="http://3.bp.blogspot.com/_SX0lCwhJEzc/TGkTnFe3n8I/AAAAAAAAAXI/M1Q_JIFdekc/s400/1.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once the project is created, open the VisualWebPart1.webpart (from the solution explorer)&lt;br /&gt;Change the Title and Description values&amp;nbsp;and save the file.&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;lt;properties&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;lt;property name="&lt;span style="color: red;"&gt;&lt;strong&gt;Title&lt;/strong&gt;&lt;/span&gt;" type="string"&amp;gt;&lt;span style="color: red;"&gt;MyFirstSPLinqWebPart&lt;/span&gt;&amp;lt;/property&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;lt;property name="&lt;span style="color: red;"&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/span&gt;" type="string"&amp;gt;&lt;span style="color: red;"&gt;My First SQL LINQ Web Part&lt;/span&gt;&amp;lt;/property&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;lt;/properties&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="color: blue;"&gt;2- Create a LINQ proxy class.&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;In the Solution Explorer, right-click on your project and select Open Folder in Windows Explorer.&lt;br /&gt;&lt;br /&gt;Hold Shift key and right click anywhere in the Explorer Window and select Open Command Window Here to open the command prompt window in the current project directory.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_SX0lCwhJEzc/TGkVCXuDnAI/AAAAAAAAAXQ/UcR0sfX3mMo/s1600/2.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="232" ox="true" src="http://4.bp.blogspot.com/_SX0lCwhJEzc/TGkVCXuDnAI/AAAAAAAAAXQ/UcR0sfX3mMo/s400/2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Type the following command in the command prompt and press Enter to set the path to the SharePoint 2010 folder:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;set path=%path%;c:\program files\common files\microsoft shared\web server extensions\14\bin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Type the following command in the command prompt and press Enter to generate the Linq-to-SharePoint proxy code. &lt;br /&gt;the yoursharepointsiteaddress value should reflect the URL of your SharePoint 2010 site.&lt;br /&gt;(mine was &lt;a href="http://svr-x:12345/"&gt;http://svr-x:12345/&lt;/a&gt;)&lt;br /&gt;For yourwebpartnamespace value I used MyFirstSPLinqWebPart.VisualWebPart1.&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;spmetal.exe /web:http://&lt;span style="color: red;"&gt;&lt;strong&gt;yoursharepointsiteaddress&lt;/strong&gt;&lt;/span&gt; /namespace:&lt;span style="color: red;"&gt;&lt;strong&gt;yourwebpartnamespace&lt;/strong&gt;&lt;/span&gt; /code:SPLinq.cs&lt;/span&gt;&lt;br /&gt;so my command looked like:&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;spmetal.exe /web:http://svr-x:1234 /namespace:MyFirstSPLinqWebPart.VisualWebPart1 /code:SPLinq.cs&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Note – you may get warnings about content types for list Form Templates. You can safely ignore this warning and continue.&lt;br /&gt;Close the command window and switch back to Visual Studio.&lt;br /&gt;In Visual Studio, in the solutions explorer, right click on your project and select Add Existing Item&amp;nbsp;--&amp;gt; Navigate to the &lt;span style="color: blue;"&gt;SPLinq.cs&lt;/span&gt; file (should be in your project folder)..select the file from the Add Existing Item dialog window and click Add.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;Next we will add a reference to Linq to our project. &lt;br /&gt;In the Solution Explorer right click on References and click on "Add Reference". &lt;br /&gt;Select Microsoft.SharePoint.Linq from the list of .net references and click on OK. &lt;br /&gt;(the file is available on the server as &lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.SharePoint.Linq.dll&lt;/span&gt;) &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_SX0lCwhJEzc/TGkXXQPnzVI/AAAAAAAAAXY/tppNqlb5ncA/s1600/3.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="260" ox="true" src="http://4.bp.blogspot.com/_SX0lCwhJEzc/TGkXXQPnzVI/AAAAAAAAAXY/tppNqlb5ncA/s400/3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&amp;nbsp; &lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&amp;nbsp; &lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="color: blue;"&gt;3- Use a LINQ provider to read data from a SharePoint list &amp;amp; populate the GridView:&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;In Solution Explorer, expand VisualWebPart1 and double-click on VisualWebPart1UserControl.ascx.&lt;br /&gt;&lt;br /&gt;Add the following code to the bottom of the file &lt;strong&gt;&lt;span style="color: red;"&gt;below the code which already exists in the file.&lt;/span&gt;&lt;/strong&gt;. &lt;br /&gt;This is to generate the&amp;nbsp;user control to construct the grid view.&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;lt;%@ Import Namespace="Microsoft.SharePoint.WebControls" %&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;lt;SharePoint:SPGridView id="spGridView" runat="server" AutoGenerateColumns="false"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;HeaderStyle HorizontalAlign="Left" ForeColor="Navy" Font-Bold="true" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Columns&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;SharePoint:SPBoundField DataField="Title" HeaderText="Title"&amp;gt;&amp;lt;/SharePoint:SPBoundField&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;SharePoint:SPBoundField DataField="Body" HeaderText="Body"&amp;gt;&amp;lt;/SharePoint:SPBoundField&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;SharePoint:SPBoundField DataField="AssignedTo"&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HeaderText="AssignedTo"&amp;gt;&amp;lt;/SharePoint:SPBoundField&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Columns&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;lt;/SharePoint:SPGridView&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In the Solution Explorer, right click on VisualWebPart1UserControl.ascx and select View Code.&amp;nbsp;Add the following using statements to the code behind:&amp;nbsp; &lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;using Microsoft.SharePoint.Linq;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;using Microsoft.SharePoint;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;using System.Linq;&lt;/span&gt;&lt;br /&gt;Insert the following code inside the Page_Load method:&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;SPLinqDataContext dc = new SPLinqDataContext(SPContext.Current.Web.Url);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;EntityList&amp;lt;Task&amp;gt; Tasks = dc.GetList&amp;lt;Task&amp;gt;("Tasks");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;var empQuery = from taskitem in Tasks&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select new&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; taskitem.Title,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Body = taskitem.Body,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; taskitem.AssignedTo,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;spGridView.DataSource = empQuery;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;spGridView.DataBind();&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Build the project&amp;nbsp;and deploy.&lt;br /&gt;Refresh your SharePoint site.&lt;br /&gt;Edit an existing page and add your new web part to&amp;nbsp;the page (select your new web part)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_SX0lCwhJEzc/TGkZsFSUBGI/AAAAAAAAAXg/QqpcTkRrvas/s1600/4.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="252" ox="true" src="http://4.bp.blogspot.com/_SX0lCwhJEzc/TGkZsFSUBGI/AAAAAAAAAXg/QqpcTkRrvas/s400/4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You will now see the data which is loaded from a SharePoint list using LINQ and represented in a SPDataGrid.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_SX0lCwhJEzc/TGkaJR7zKjI/AAAAAAAAAXo/y4vPhUPDEHc/s1600/5.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="201" ox="true" src="http://4.bp.blogspot.com/_SX0lCwhJEzc/TGkaJR7zKjI/AAAAAAAAAXo/y4vPhUPDEHc/s400/5.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enjoy !!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429025622434259152-1307414149778859356?l=johanolivier.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johanolivier.blogspot.com/feeds/1307414149778859356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johanolivier.blogspot.com/2010/08/basic-sharepoint-2010-linq-web-part.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/1307414149778859356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/1307414149778859356'/><link rel='alternate' type='text/html' href='http://johanolivier.blogspot.com/2010/08/basic-sharepoint-2010-linq-web-part.html' title='Basic SharePoint 2010 LINQ Web Part'/><author><name>Johan Olivier</name><uri>http://www.blogger.com/profile/12362783186069410694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='19' src='http://2.bp.blogspot.com/_SX0lCwhJEzc/SxYSinEvesI/AAAAAAAAAAM/YDzvQbZhOzk/S220/JohanMuggshot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_SX0lCwhJEzc/TGkR2AOXKYI/AAAAAAAAAW4/2herGNf9WfE/s72-c/00.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429025622434259152.post-3438620360929846778</id><published>2010-08-15T19:41:00.008+02:00</published><updated>2010-08-15T20:14:28.010+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010 Development'/><title type='text'>SharePoint 2010 Ribbon Custom Command</title><content type='html'>&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;In this last tutorial I show how to create a Web Part which adds a comma&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;nd to the Ribbon. This is an introduction to customizing the SharePoint 2010 Ribbon using custom actions.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_SX0lCwhJEzc/TGgnxyNxxEI/AAAAAAAAAWo/RA9vOmOZGxU/s1600/0.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="292" ox="true" src="http://3.bp.blogspot.com/_SX0lCwhJEzc/TGgnxyNxxEI/AAAAAAAAAWo/RA9vOmOZGxU/s640/0.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Lets get started:&lt;/span&gt;&lt;/strong&gt; &lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Create a new Visual Studio 2010 Project. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Select SharePoint and then Empty SharePoint Project. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Name the project and click on OK&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_SX0lCwhJEzc/TGfgLgPU1kI/AAAAAAAAAVQ/yzJwMoebYeE/s1600/1.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="440" ox="true" src="http://4.bp.blogspot.com/_SX0lCwhJEzc/TGfgLgPU1kI/AAAAAAAAAVQ/yzJwMoebYeE/s640/1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Specify the site to use for debugging, select "Deploy as farm solution" and click on Finish.&lt;/span&gt; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_SX0lCwhJEzc/TGfhCN8WzOI/AAAAAAAAAVY/hk4zUwkETq0/s1600/2.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="506" ox="true" src="http://4.bp.blogspot.com/_SX0lCwhJEzc/TGfhCN8WzOI/AAAAAAAAAVY/hk4zUwkETq0/s640/2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Using the Solution Explorer, add a new item to the project. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Select Visual C# --&amp;gt; SharePoint 2010 --&amp;gt; Empty Element.&lt;br /&gt;Name the element RibbonActions and click on "add"&lt;/span&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_SX0lCwhJEzc/TGfmwuCto0I/AAAAAAAAAV4/Z6UXLRuV7UI/s1600/6.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="440" ox="true" src="http://1.bp.blogspot.com/_SX0lCwhJEzc/TGfmwuCto0I/AAAAAAAAAV4/Z6UXLRuV7UI/s640/6.png" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;In the editor for the Elements.xml file that has opened automatically add a new &amp;lt;CustomAction&amp;gt; element right inside the &amp;lt;Elements&amp;gt; node and add the following markup. (your project will contain two Elements.xml files. One under MyRibbonWebPart and another under RibbonActions. The changes required here is for the Elements.xml file under RibbonActions)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;Elements xmlns="http://schemas.microsoft.com/sharepoint/"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp; &amp;lt;CustomAction&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Id="Hello_world"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RegistrationType="List"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RegistrationId="101"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Location="CommandUI.Ribbon"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sequence="5"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;strong&gt;&lt;u&gt;CommandUIExtension&lt;/u&gt;&lt;/strong&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;CommandUIDefinitions&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;CommandUIDefinition Location="Ribbon.Documents.Manage.Controls._children"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Id="Ribbon.Documents.HelloWorldButton"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Alt="Hello World"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sequence="5"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Command="Show_HelloWorld"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Image32by32="/_layouts/images/placeholder32x32.png"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LabelText="Hello World Command"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TemplateAlias="o1"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/CommandUIDefinition&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/CommandUIDefinitions&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;strong&gt;&lt;u&gt;CommandUIHandlers&lt;/u&gt;&lt;/strong&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;CommandUIHandler&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Command="Show_HelloWorld"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CommandAction="javascript:alert('Hello World!');" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/CommandUIHandlers&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/CommandUIExtension&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;lt;/CustomAction&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/Elements&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Save the project and build the project.&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;In the Solution Explorer, right-click on the project and choose Deploy. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black; font-family: Trebuchet MS;"&gt;Open the web.config file of the web application which hosts the SharePoint site which you deployed to.&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Add a SafeControls entry for the new assembly.(remember that your PublicKeyToken value will be different)&lt;/span&gt; &lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;SafeControl Assembly="MyRibbonWebPart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3d7d18f076284cdb" Namespace="MyRibbonWebPart.MyRibbonWebPart" TypeName="*" Safe="True" AllowRemoteDesigner="True" /&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Save and close the web.config file.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Navigate to the target SharePoint Site, go to Site Actions --&amp;gt;Site Settings --&amp;gt; Manage Site Features and activate the new feature.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Navigate to a document libary and click on "Documents" group in the Ribbon. Notice the new action item.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_SX0lCwhJEzc/TGgnxyNxxEI/AAAAAAAAAWo/RA9vOmOZGxU/s1600/0.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="292" ox="true" src="http://3.bp.blogspot.com/_SX0lCwhJEzc/TGgnxyNxxEI/AAAAAAAAAWo/RA9vOmOZGxU/s640/0.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Click on the new custom action to view execution of the javascript.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_SX0lCwhJEzc/TGgoJrW0VdI/AAAAAAAAAWw/CPpYaJo9KEc/s1600/0.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="426" ox="true" src="http://1.bp.blogspot.com/_SX0lCwhJEzc/TGgoJrW0VdI/AAAAAAAAAWw/CPpYaJo9KEc/s640/0.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Enjoy !!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429025622434259152-3438620360929846778?l=johanolivier.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johanolivier.blogspot.com/feeds/3438620360929846778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johanolivier.blogspot.com/2010/08/sharepoint-2010-ribbon-enabled-web-part.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/3438620360929846778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/3438620360929846778'/><link rel='alternate' type='text/html' href='http://johanolivier.blogspot.com/2010/08/sharepoint-2010-ribbon-enabled-web-part.html' title='SharePoint 2010 Ribbon Custom Command'/><author><name>Johan Olivier</name><uri>http://www.blogger.com/profile/12362783186069410694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='19' src='http://2.bp.blogspot.com/_SX0lCwhJEzc/SxYSinEvesI/AAAAAAAAAAM/YDzvQbZhOzk/S220/JohanMuggshot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_SX0lCwhJEzc/TGgnxyNxxEI/AAAAAAAAAWo/RA9vOmOZGxU/s72-c/0.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429025622434259152.post-1964253506664391668</id><published>2010-08-04T17:38:00.002+02:00</published><updated>2010-09-14T17:39:08.760+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Nintex Workflow 2010'/><title type='text'>Nintex Workflow 2010 Installation</title><content type='html'>&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Today I installed and configured Nintex Workflow 2010 for SharePoint 2010.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;I must say, the guys at &lt;a href="http://www.nintex.com/"&gt;Nintex&lt;/a&gt; are doing a brilliant job and their product documentation is clear and easy to follow.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;I had absolutely no problems installing Nintex Workflow 2010 on my SharePoint 2010 sandbox and this tutorial will show how easy it is to prepare a Nintex Workflow 2010 environment.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;The reasons for choosing Nintex Workflow 2010 as a workflow designer tool deserve a separate post, but for a quick overview please have a look at &lt;a href="http://www.nintex.com/en-US/Products/Pages/NintexWorkflow2010.aspx"&gt;this site&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;In my environment I had the following in place before installing Nintex Workflow 2010:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp; * Windows 2008 Server&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp; * Microsoft Office SharePoint Server 2010&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp; * SQL Server 2008 (and other prerequisites to run SharePoint 2010)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp; * SMTP Server (outside of the SharePoint Farm)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp; * SMTP Service configured on Windows 2008 server (&lt;a href="http://technet.microsoft.com/en-us/library/cc263462.aspx"&gt;see instructions&lt;/a&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp; * Outgoing email settings configured for SharePoint Farm (&lt;a href="http://technet.microsoft.com/en-us/library/cc263462.aspx"&gt;see instructions&lt;/a&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp; * Outgoing email settings configured for SharePoint Web App (&lt;a href="http://www.blogger.com/goog_1468533700"&gt;see&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc263462.aspx"&gt;instructions&lt;/a&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;strong&gt;Installation &amp;amp; Configuration:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;The install is very simple. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;I followed the installation guide which is available on this &lt;a href="http://www.nintex.com/en-US/Products/Pages/NintexWorkflow2010.aspx"&gt;site&lt;/a&gt; under technical information.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;The following steps need to be followed:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp; 1 Install the Nintex Workflow 2010 solution package&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp; 2 Perform Database Configuration&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp; 3 Configure Workflow Server Settings&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp; 4 Activate Features&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;strong&gt;1 Install the Nintex Workflow 2010 (NW2010) solution package:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;To install the NW2010 solution package is really very easy.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Ensure that you are logged in to the server as local admin.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp; 1.1 &lt;strong&gt;Run the NintexWorkflow2010.msi from the local machine.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Follow the steps through the wizard until finished.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Trebuchet MS;"&gt;I got a error during installation complaining that the assembly failed in the zone "My Computer"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Trebuchet MS;"&gt;To solve this make sure that User Account Control is turned off or&amp;nbsp;set it to the very minimum.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Trebuchet MS;"&gt;Follow these steps:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Trebuchet MS;"&gt;&amp;nbsp; 1.Click on Start, and then Control Panel&lt;br /&gt;&amp;nbsp; 2.In Control Panel, click User Accounts&lt;br /&gt;&amp;nbsp; 3.In the User Accounts window, click User Accounts&lt;br /&gt;&amp;nbsp; 4.In the User Accounts tasks window, turn the User Account Control to the very minimum&lt;br /&gt;&amp;nbsp; 5.Restart to apply the changes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp; 1.2 &lt;strong&gt;Deploy the solution to web applications.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;Open the SharePoint 2010 Central Administration&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; go to&lt;span style="color: blue;"&gt; 'System Settings'&lt;/span&gt; and then to &lt;span style="color: blue;"&gt;'Manage Farm Solutions'&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; You will see 2 new solutions in the list of solutions in the farm. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;They are:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;nintexworkflow2010.wsp&lt;/span&gt; and&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;nintexworkflow2010enterprisefeatures.wsp&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Deploy both solutions to all content web applications.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; After both solutions have been deployed successfully you should see the following&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; status:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_SX0lCwhJEzc/TFl-nCerCnI/AAAAAAAAAUY/NQnB_VasCDA/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" bx="true" height="320" src="http://3.bp.blogspot.com/_SX0lCwhJEzc/TFl-nCerCnI/AAAAAAAAAUY/NQnB_VasCDA/s400/1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; In order to activate the NW2010 configuration functionality in Central Admin, you &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; have to deploy the nintexworkflow2010enterprisefeatures.wsp solution again, but &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this time select only the Central Admin web application as the "Deploy To" location.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; It is &lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;not necessary to retract the solution first, just deploy it again.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp;&amp;nbsp; &lt;strong&gt;1.3 The next step is to import the Nintex License.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If you return to the Home page of Central Admin you will notice a new configuration&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; section called "Nintex Workflow Management".&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_SX0lCwhJEzc/TFmARMuWQrI/AAAAAAAAAUg/RYjHGrp6yFA/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" bx="true" height="341" src="http://2.bp.blogspot.com/_SX0lCwhJEzc/TFmARMuWQrI/AAAAAAAAAUg/RYjHGrp6yFA/s400/1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Click on 'Nintex Workflow Management' and select 'Licensing'&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_SX0lCwhJEzc/TFmBJHjrwFI/AAAAAAAAAUo/QfCD1SwCwiw/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" bx="true" height="185" src="http://3.bp.blogspot.com/_SX0lCwhJEzc/TFmBJHjrwFI/AAAAAAAAAUo/QfCD1SwCwiw/s640/1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; From here you can click on the 'Import' button... to import your license file.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_SX0lCwhJEzc/TFmBr_410zI/AAAAAAAAAUw/0cUMWVCxy2M/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" bx="true" height="263" src="http://4.bp.blogspot.com/_SX0lCwhJEzc/TFmBr_410zI/AAAAAAAAAUw/0cUMWVCxy2M/s400/1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Ok, once this is all done we are ready to:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;strong&gt;2- Configure the Nintex database&lt;/strong&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;In Central Admin go to the Nintex Workflow Management section.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Click on the "Database Setup" link and then click on the "Create" button.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Provide details of your database server and click on the "OK" button to allow the database to be generated.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="color: red; font-family: Trebuchet MS;"&gt;The cool thing here is that in previous versions of Nintex Workflow (for SharePoint 2007) it was really tricky to get the database connection details working in a single server installation. It seems like it has all been taken care of since I am able to use my Windows Authentication to access the database without any problems.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_SX0lCwhJEzc/TFmDWMVwsmI/AAAAAAAAAU4/tpAwQtU1avY/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" bx="true" height="240" src="http://4.bp.blogspot.com/_SX0lCwhJEzc/TFmDWMVwsmI/AAAAAAAAAU4/tpAwQtU1avY/s400/1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Great, we are moving ahead... the next step is to:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;strong&gt;3 - Configure the Nintex Workflow 2010 Server Settings&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Trebuchet MS;"&gt;This will require that we:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3.1 Perform Web Application Activation&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3.2 Enable Workflow Actions&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3.3 Configure Email Settings&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3.4 Enable and Configure Lazy Approval&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3.1 Perform Web Application Activation:&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; In Central Admin go to the 'Nintex Workflow Management' section and click on &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "web application activation"&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Activate the feature to the applicable web application.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;strong&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3.2 Enable Workflow Actions&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; In Central Admin go to the 'Nintex Workflow Management' section and click on &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "manage allowed actions"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Select the workflow actions which you want to allow in your farm and click on OK.&lt;br /&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3.3 Configure Email Settings&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; In Central Admin go to the 'Nintex Workflow Management' section and click on &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Global settings"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Provide the appropriate smtp server settings and click on "OK"&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3.4 Enable and Configure Lazy Approval&lt;/strong&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;In Central Admin go to the 'Nintex Workflow Management' section and click on &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"LazyApproval Settings"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Click on the "Enable / Disable LazyApproval" shortcut to enable LazyApproval.&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Trebuchet MS;"&gt;The last step is to:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;strong&gt;4 -&amp;nbsp;Activate Features&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Go to the &lt;span style="color: blue;"&gt;Site Collection Features &lt;/span&gt;of your site on which you want to use Nintex Workflow 2010. (&lt;span style="color: red;"&gt;In SP2010 it is located under "Site Settings"&amp;nbsp;--&amp;gt; Site Collection Features under Site Collection Administration&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Trebuchet MS;"&gt;You will see the following new site collection features.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Enable all of them:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/_SX0lCwhJEzc/TFmG8UoKHEI/AAAAAAAAAVA/BOsSth3fUjY/s1600/1.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" bx="true" height="192" src="http://3.bp.blogspot.com/_SX0lCwhJEzc/TFmG8UoKHEI/AAAAAAAAAVA/BOsSth3fUjY/s640/1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Go to the &lt;span style="color: blue;"&gt;Site Features &lt;/span&gt;of your site on which you want to use Nintex Workflow 2010. (In SP2010 it is located under "Site Settings" --&amp;gt; Manage site features under Site Actions)&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Congratulations, Nintex Workflow 2010 have now been installed and configured and you can begin building workflow solutions !!!&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;In my next post I will show how to build a simple workflow to test whether the installation was successful.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Enjoy !!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;You will see the following new site features.&lt;br /&gt;Enable all of them:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_SX0lCwhJEzc/TFmHrhF1ESI/AAAAAAAAAVI/e4P_GyyCIMA/s1600/1.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" bx="true" height="142" src="http://3.bp.blogspot.com/_SX0lCwhJEzc/TFmHrhF1ESI/AAAAAAAAAVI/e4P_GyyCIMA/s640/1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429025622434259152-1964253506664391668?l=johanolivier.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johanolivier.blogspot.com/feeds/1964253506664391668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johanolivier.blogspot.com/2010/08/nintex-workflow-2010-installation.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/1964253506664391668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/1964253506664391668'/><link rel='alternate' type='text/html' href='http://johanolivier.blogspot.com/2010/08/nintex-workflow-2010-installation.html' title='Nintex Workflow 2010 Installation'/><author><name>Johan Olivier</name><uri>http://www.blogger.com/profile/12362783186069410694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='19' src='http://2.bp.blogspot.com/_SX0lCwhJEzc/SxYSinEvesI/AAAAAAAAAAM/YDzvQbZhOzk/S220/JohanMuggshot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_SX0lCwhJEzc/TFl-nCerCnI/AAAAAAAAAUY/NQnB_VasCDA/s72-c/1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429025622434259152.post-6189147514021611087</id><published>2010-08-03T16:40:00.001+02:00</published><updated>2010-08-03T16:43:13.277+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath 2010 Development'/><title type='text'>Add code to an InfoPath 2010 Form</title><content type='html'>&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Today I started&amp;nbsp;an investigation on&amp;nbsp;the changes between&amp;nbsp;InfoPath 2007 development and InfoPath 2010 development.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;I really hope that InfoPath 2010 will bring more functionality and development flexibility as it really is a great "quick-win" tool for business which is sometimes crippled by a lack of&amp;nbsp;development&amp;nbsp;richness.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;So.. one of my first questions was.. how easy is it&amp;nbsp;to develop code behind (create custom code) for an InfoPath 2010 Form.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;This tutorial will show you that it&amp;nbsp;is still extremely easy to&amp;nbsp;accomplish&amp;nbsp;adding custom code, and my initial impression is that for a developer things will only become easier when moving to InfoPath 2010.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Prerequisites:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;1.&amp;nbsp; Make sure you meet the minimum system requirements (&lt;/span&gt;&lt;a href="http://office.microsoft.com/en-us/products/microsoft-office-2010-system-requirements-HA101810407.aspx"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;available here&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;). &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;2.&amp;nbsp; Install Visual Studio Tools for Applications (VSTA). &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;3.&amp;nbsp; Choose a programming language (inside the InfoPath Forms Designer). &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;4.&amp;nbsp; Add event handlers and code.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Let's get Started:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Open Microsoft InfoPath Designer 2010.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;From the Form Templates Dialog, select "Blank Form".&lt;/span&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_SX0lCwhJEzc/TFgk4NwLvQI/AAAAAAAAATY/qKvALKN_DYE/s1600/1.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" bx="true" height="387" src="http://2.bp.blogspot.com/_SX0lCwhJEzc/TFgk4NwLvQI/AAAAAAAAATY/qKvALKN_DYE/s400/1.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Change the default Label on the form to something appropriate.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Since this is a first InfoPath 2010 tutorial, we cannot use anything else than "Hello World"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Click on the form and select the "Home" tab from the ribbon. Expand the controls pane to view the available controls.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Add a Button and a Text Box to your form under the "This is a 'Hellow World' label.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_SX0lCwhJEzc/TFglf4tkywI/AAAAAAAAATg/Ah7NcVmAY-U/s1600/2.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" bx="true" height="329" src="http://2.bp.blogspot.com/_SX0lCwhJEzc/TFglf4tkywI/AAAAAAAAATg/Ah7NcVmAY-U/s640/2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Your form will now look like this:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_SX0lCwhJEzc/TFgm2jQj4yI/AAAAAAAAATw/uQRdbkX6UBg/s1600/5.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" bx="true" height="186" src="http://4.bp.blogspot.com/_SX0lCwhJEzc/TFgm2jQj4yI/AAAAAAAAATw/uQRdbkX6UBg/s400/5.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;If you click on the 'Developer' tab in the ribbon, you will see you can se the programming language of the form.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_SX0lCwhJEzc/TFgmhQyyu-I/AAAAAAAAATo/rXTDzIbUO3A/s1600/3.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" bx="true" height="155" src="http://2.bp.blogspot.com/_SX0lCwhJEzc/TFgmhQyyu-I/AAAAAAAAATo/rXTDzIbUO3A/s640/3.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;When you click on the Language command you will see the 'Form Options' dialog with the 'Programming' section selected. In here click on 'Change Language' and specify the language of choice.&lt;/span&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_SX0lCwhJEzc/TFgnNCRLb5I/AAAAAAAAAUA/UM53OoP7lJA/s1600/4.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" bx="true" height="438" src="http://2.bp.blogspot.com/_SX0lCwhJEzc/TFgnNCRLb5I/AAAAAAAAAUA/UM53OoP7lJA/s640/4.png" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Once your development language has been specified you can go ahead to add custom code to your form.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;In design mode, select the custom button on your form and you will notice the ribbon automatically changes to show 'Control Tools' pane.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Click on the Properties item and c&lt;/span&gt;&lt;span style="font-family: Trebuchet MS;"&gt;lick on the 'Custom Code' command.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_SX0lCwhJEzc/TFgnDdmAWZI/AAAAAAAAAT4/V7Qr3dAXfcM/s1600/6.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" bx="true" height="234" src="http://4.bp.blogspot.com/_SX0lCwhJEzc/TFgnDdmAWZI/AAAAAAAAAT4/V7Qr3dAXfcM/s640/6.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;If your prerequisites were installed correctly, InfoPath forms designer will now open Visual Studio Tools for Applications and create a event handler for the button click event.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Inside the FormCode.cs you will see the following code:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;public void CTRL1_5_Clicked(object sender, ClickedEventArgs e)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Add your custom code inside this event. I added some code to set the field value of the textbox (custom field) which I added earlier in this tutorial:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;public void CTRL1_5_Clicked(object sender, ClickedEventArgs e)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: red;"&gt;XPathNavigator domNav = MainDataSource.CreateNavigator();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; XPathNavigator field = domNav.SelectSingleNode("/my:myFields/my:field1", NamespaceManager);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; field.SetValue("Hello World");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Build your code and save the project.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Return to the InfoPath Forms Designer.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;On the Home pane in the ribbon you will see on the far right the form preview command.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Click on this command to preview your form.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_SX0lCwhJEzc/TFgpSCBwSqI/AAAAAAAAAUI/pLwZIztGoXY/s1600/7.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" bx="true" height="227" src="http://3.bp.blogspot.com/_SX0lCwhJEzc/TFgpSCBwSqI/AAAAAAAAAUI/pLwZIztGoXY/s640/7.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Trebuchet MS;"&gt;If you preview the form and click on the button you will see the custom code execute and add a value to the custom field which is then displayed in the textbox.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;You can add breakpoints to your code to step through it if you want.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_SX0lCwhJEzc/TFgpv0XOpkI/AAAAAAAAAUQ/mZkLSA8nhvE/s1600/8.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" bx="true" height="414" src="http://4.bp.blogspot.com/_SX0lCwhJEzc/TFgpv0XOpkI/AAAAAAAAAUQ/mZkLSA8nhvE/s640/8.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;In the next post will I show how easy it is to publish the InfpPath form.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Enjoy !!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429025622434259152-6189147514021611087?l=johanolivier.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johanolivier.blogspot.com/feeds/6189147514021611087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johanolivier.blogspot.com/2010/08/infopath-2010-development-part-1-add.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/6189147514021611087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/6189147514021611087'/><link rel='alternate' type='text/html' href='http://johanolivier.blogspot.com/2010/08/infopath-2010-development-part-1-add.html' title='Add code to an InfoPath 2010 Form'/><author><name>Johan Olivier</name><uri>http://www.blogger.com/profile/12362783186069410694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='19' src='http://2.bp.blogspot.com/_SX0lCwhJEzc/SxYSinEvesI/AAAAAAAAAAM/YDzvQbZhOzk/S220/JohanMuggshot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_SX0lCwhJEzc/TFgk4NwLvQI/AAAAAAAAATY/qKvALKN_DYE/s72-c/1.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429025622434259152.post-8327769066406999523</id><published>2010-07-26T15:32:00.004+02:00</published><updated>2010-07-26T15:40:40.943+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010 Development'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010 Transition'/><title type='text'>My Favourite SharePoint 2010 Enhancements (for developer) part 1</title><content type='html'>&lt;div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;There are a number of platform and tool enhancements for SharePoint 2010.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;I picked out a few favourites which I briefly explain below:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;LINQ to SharePoint (Language Integrated Query)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Data Platform Improvements&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;List Enhancements&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Business Connectivity Services&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Silverlight Integration&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Managed Client Object Model&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Sandbox Solutions&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Visual Studio 2010 for SharePoint&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;WSP Changes&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Developer Dashboard&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Dialog Framework&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;SharePoint Designer 2010&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Visio Services&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;InfoPath (changes)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Windows PowerShell &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;strong&gt;&lt;u&gt;LINQ to SharePoint (Language Integrated Query)&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;LINQ is a feature of the programming languages C# and Microsoft Visual Basic .NET. Compilers are included with Visual Studio.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;LINQ adds a SQL-like syntax and vocabulary to each of the languages, which can be used to query data sources. But unlike other languages and query syntaxes which vary from one type of data source to another, LINQ can be used to query, in principle, any data source whatsoever. For this reason, developers may find that it is the only query syntax that they ever need to know.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;The LINQ to SharePoint Provider is defined in the Microsoft.SharePoint.Linq namespace. It translates LINQ queries into Collaborative Application Markup Language (CAML) queries. &lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee535491.aspx"&gt;more details here...&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Trebuchet MS;"&gt;&lt;strong&gt;&lt;u&gt;Data Platform Improvements&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;The data platform improvements include: List Relationships, Unique Column Constraints, &lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Data Validation, Column Formula Validation, etc&lt;/span&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/access/archive/2010/02/15/data-platform-improvements-in-sharepoint-2010.aspx"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;more details here...&lt;/span&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;strong&gt;&lt;u&gt;List Enhancements&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;The list enhancements in SP2010 include:&amp;nbsp;Bulk Operations, New&amp;nbsp;capacity limits(&lt;/span&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc262787.aspx#ListLibrary"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;more details here..&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;), XSLT Views (&lt;/span&gt;&lt;a href="http://blogs.msdn.com/b/sharepoint/archive/2009/12/02/sharepoint-2010-list-view-blog-series-part-1-introduction-to-the-new-list-view.aspx"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;more details here..&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Trebuchet MS;"&gt;&lt;strong&gt;&lt;u&gt;Business Connectivity Services (BCS)&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;BCS&amp;nbsp;is a set of services and features that provide a way to connect SharePoint solutions to sources of external data and to define external content types that are based on the external data. External content types resemble content types and allow the presentation of and interaction with external data in SharePoint lists (known as external lists), Web Parts, Microsoft Outlook 2010, Microsoft SharePoint Workspace 2010, and Microsoft Word 2010 clients. External systems that Microsoft Business Connectivity Services can connect to include SQL Server databases, SAP applications, Web services (including Windows Communication Foundation Web services), custom applications, and Web sites based on SharePoint. &lt;/span&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;a href="http://technet.microsoft.com/en-za/library/ee661740(en-us).aspx"&gt;more details here...&lt;/a&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Silverlight Integration&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;In Windows SharePoint Services 3.0, you could host a Microsoft Silverlight application in a Web Part. Microsoft SharePoint Foundation 2010 goes beyond by providing a built-in, extensible, Silverlight Web Part specifically designed to host Silverlight applications. Closely related to the new Web Part is Silverlight Cross-Domain Data Access (Silverlight CDA) that enables secure, cross-domain, integration between Silverlight applications and SharePoint Foundation deployments, and Silverlight CDA can be used by non-Silverlight external applications as well. &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee539062.aspx"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;more details here...&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Managed Client Object Model&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;The SharePoint Foundation 2010 managed client object model lets you write client-side code to work with all the common objects in SharePoint sites. Through the object model, you can add and remove lists, add, update, and delete list items, change documents in document libraries, create sites, manage permissions of items, and add and remove Web Parts from a page.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;With the SharePoint Foundation 2010 managed client object model, you can design client applications that access SharePoint content without installing code on the server that runs Microsoft SharePoint Foundation 2010. For example, you can build new categories of applications that include writing applications that are based on the Microsoft .NET Framework, rich interactive Web Parts, Microsoft Silverlight applications, and ECMAScript (JavaScript, JScript) applications that run client-side in a SharePoint Web Part.&lt;/span&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee857094.aspx"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;more details here...&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Sandbox Solutions&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;You can deploy a Microsoft SharePoint Foundation 2010 solution directly onto your SharePoint Foundation farm, or you can deploy the solution into a sandbox. A sandbox is a restricted execution environment that enables programs to access only certain resources, and that keeps problems that occur in the sandbox from affecting the rest of the server environment. &lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Solutions that you deploy into a sandbox, cannot use certain computer and network resources, and cannot access content outside the site collection they are deployed in.&lt;/span&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/ee335711.aspx"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;more details here...&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp;and &lt;/span&gt;&lt;a href="http://technet.microsoft.com/en-us/library/ee704543.aspx"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Visual Studio 2010 for SharePoint&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;A number of areas for SharePoint developers in Visual Studio 2010 are worth mentioning. First, you get SharePoint project templates in the box, so you can start right away on solution development. Second, tooling has standardized on the Windows SharePoint Package (WSP) packaging standard, so when you import or deploy a solution to SharePoint, Visual Studio treats it as a solution package. Third, some great deployment and packaging features, such as solution retraction and custom deployment configurations, ship with the SharePoint tools in Visual Studio 2010. And last, the new SharePoint Explorer provides a view into native and custom artifacts (for example, lists and workflows) that exist on your SharePoint server.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;WSP Changes&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;SharePoint 2010 improves the WSP format so that it is supported across all tools, allowing you to export your site through the browser, SharePoint Designer, and Visual Studio. This means that you can quickly upgrade or downgrade your solutions between the tools.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;SharePoint Online, the Microsoft - hosted version of SharePoint, supports this format so that you can move solutions to the cloud without having to rework the package.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;u&gt;Developer Dashboard&lt;/u&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;The developer dashboard is a new feature in SharePoint 2010 that is design to provide additional performance and tracing information that can be used to debug and troubleshoot issues with page rendering time. The dashboard is turned off by default, but can be enabled via the object model or stsadm (and PowerShell too, I just haven’t put together the script for it yet). When the dashboard is turned on you will find information about the controls, queries and execution time that occur as part of the page rendering process; this information appears at the bottom of the page.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://blogs.technet.com/b/speschka/archive/2009/10/28/using-the-developer-dashboard-in-sharepoint-2010.aspx"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;more details here...&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Dialog Framework&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;SharePoint 2010 has a new framework for showing dialogs to the end-user. The dialogs allow people to work with some data without losing focus on the page they were working on to get things done. Closing the dialog will often cause AJAX based refreshes to give a sense of stateful-ness.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;The dialog is of course extensible through JavaScript code. You can either show a separate page, or use a DOM element on the source page and show that. You can then determine when the dialog closes and what happens when it has closed.&lt;/span&gt;&lt;/div&gt;&lt;a href="http://blogs.msdn.com/b/jfrost/archive/2009/11/08/how-to-display-a-sharepoint-dialog-from-ribbon-button-and-get-selected-item-context.aspx"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;more details here...&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;strong&gt;&lt;u&gt;SharePoint Designer 2010&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;There have been a large number of changes to SharePoint Designer. &lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;For a nice overview go to &lt;/span&gt;&lt;a href="http://blogs.msdn.com/b/sharepointdesigner/archive/2009/11/02/sharepoint-designer-2010-new-shell-tour.aspx"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;this post&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;u&gt;Visio Services&lt;/u&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Visio Services in Microsoft SharePoint Server 2010 is a service application that lets users share and view Microsoft Visio Web drawings. The service also enables data-connected Microsoft Visio 2010 Web drawings to be refreshed and updated from various data sources. &lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Visio Web drawings (*.vdw files) can be rendered by Visio Services and viewed in a Web browser. This lets users view Visio documents without having Visio or the Visio Viewer installed on their local computer. Basic exploration and navigation of these rendered Web drawings are supported within the Visio Web Access Web Part. Page designers can configure the user interface and functionality of the Web Part. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Visio Services can also refresh the data and recalculate the visuals of a Visio Web drawing hosted on a Microsoft SharePoint Server 2010 site. This enables published Web drawings to refresh connections to various data sources and to update affected data graphics and text fields. &lt;/span&gt;&lt;a href="http://technet.microsoft.com/en-us/library/ee663485.aspx"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;more details here...&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;InfoPath 2010 (changes)&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;InfoPath 2010 comes with a large number of enhancements which includes: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Easy customization of&amp;nbsp;list forms with InfoPath, an InfoPath Form Web Part, Forms with code-behind can be deployed using sandbox solutions, creating a&amp;nbsp;site template will produce a WSP package which includes the InfoPath forms, Forms Services forms now support WCAG 2.0 standard, InfoPath forms can be made available offline using SharePoint Workspace 2010, Forms Services also support FireFox and Safari. &lt;/span&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/infopath/archive/2009/07/15/what-s-new-in-infopath-2010.aspx"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;more details here...&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt; and &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/office/aa905434.aspx"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;span style="color: blue;"&gt;&lt;strong&gt;&lt;u&gt;PowerShell for SharePoint 2010&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Windows PowerShell is a command-line scripting tool that provides an administrator full access to applicable application programming interfaces (APIs), along with the ability to unlock the capability to interact directly with SharePoint 2010 Products to manipulate Web applications, site collections, sites, lists and much more. In addition, the administrator has the ability to script cmdlets (pronounced "command-lets"), which makes for an improved experience from past product versions.&amp;nbsp; &lt;/span&gt;&lt;a href="http://technet.microsoft.com/en-us/library/ee806878.aspx"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;more details here...&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt; and&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=045F7AF5-B226-4A05-8ACE-4E17CFDEF856&amp;amp;amp;displaylang=en&amp;amp;displaylang=en"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;strong&gt;&lt;u&gt;Other enhancements (not covered in this post):&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Access Services&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Central Administration (Redesigned)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Digital Asset Management&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Enterprise Search&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Excel Services&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Health Monitoring&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Managed Metadata&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;PerformancePoint Services&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Enhanced Records Management&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Changes to Social Computing (previous called Collaboration)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Upgrade&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Enjoy !!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429025622434259152-8327769066406999523?l=johanolivier.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johanolivier.blogspot.com/feeds/8327769066406999523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johanolivier.blogspot.com/2010/07/whats-new-in-sharepoint-2010-for.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/8327769066406999523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/8327769066406999523'/><link rel='alternate' type='text/html' href='http://johanolivier.blogspot.com/2010/07/whats-new-in-sharepoint-2010-for.html' title='My Favourite SharePoint 2010 Enhancements (for developer) part 1'/><author><name>Johan Olivier</name><uri>http://www.blogger.com/profile/12362783186069410694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='19' src='http://2.bp.blogspot.com/_SX0lCwhJEzc/SxYSinEvesI/AAAAAAAAAAM/YDzvQbZhOzk/S220/JohanMuggshot.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429025622434259152.post-4261205961515366014</id><published>2010-07-25T18:23:00.007+02:00</published><updated>2010-09-19T18:54:00.210+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Development'/><title type='text'>Custom settings for a SharePoint list or library</title><content type='html'>&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Someone asked me this week if it is possible to store custom settings (configuration) on a SharePoint (WSS 3.0 and MOSS 2007) list or library. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Example: You have a list or library and you want to create a custom property (metadata)field and provide the user with an GUI to manage a setting value.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;I looked into the various options and found it is indeed very simple to accomplish.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Many thanks to &lt;a href="http://www.lcbridge.nl/download/customconfig.htm"&gt;Margriet Bruggeman and Nikander Bruggeman&lt;/a&gt; for their contributions.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;You can use the&amp;nbsp;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splist.rootfolder.aspx"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Rootfolder object&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp;which contains a System.Collections.Hashtable for storing and accessing properties.It is very simple.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;To store the value you use:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;SPContext.Current.List.RootFolder.Properties[strPropertyKey] = strValue;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;SPContext.Current.List.RootFolder.Update ();&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;To retrieve the value you use:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Helvetica Neue&amp;quot;, Arial, Helvetica, sans-serif;"&gt;strValue = SPContext.Current.List.RootFolder.Properties[strPropertyKey].ToString();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;In order to make it easy for the user to manage such settings, one would add a custom action with Location="Microsoft.SharePoint.ListEdit". &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;This means that when the user go to a list or library and then select "Settings" a new hyperlink (shortcut) will exist on the settings page from where the custom settings can be managed. (this is not overriding the settings page but rather just adding a shortcut on it)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;This tutorial will show how easy it is to develop the described functionality.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;strong&gt;&lt;u&gt;Overview:&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: Trebuchet MS;"&gt;We will develop the following&amp;nbsp;2 components:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp; 1-Feature with Custom Action.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp; 2-Custom aspx page with code behind to view,insert,edit &amp;amp; delete settings.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Trebuchet MS;"&gt;&lt;strong&gt;&lt;u&gt;Lets get started:&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-family: Trebuchet MS;"&gt;Create a new VS2008 WSPBuilder Project.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_SX0lCwhJEzc/TExVLle-mzI/AAAAAAAAASA/tGSGPOq-pdI/s1600/1.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;span style="color: black;"&gt;&lt;img border="0" height="270" hw="true" src="http://3.bp.blogspot.com/_SX0lCwhJEzc/TExVLle-mzI/AAAAAAAAASA/tGSGPOq-pdI/s400/1.png" width="400" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-family: Trebuchet MS;"&gt;Add a new item to the project. Select WSPBuilder and then 'Blank Feature'&lt;/span&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_SX0lCwhJEzc/TExVZqqg06I/AAAAAAAAASI/AOUlYoSVHAg/s1600/2.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="242" hw="true" src="http://1.bp.blogspot.com/_SX0lCwhJEzc/TExVZqqg06I/AAAAAAAAASI/AOUlYoSVHAg/s400/2.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-family: Trebuchet MS;"&gt;Set the scope of the feature to web.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;The Feature.xml file will look like:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;Feature Id="65a738a0-a095-489e-be19-82c077edea9f"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;Title="ListCustomSettings"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;Description="Allow Custom Settings on any list"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;Version="12.0.0.0"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;Hidden="FALSE"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;Scope="Web"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;DefaultResourceFile="core"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;xmlns="http://schemas.microsoft.com/sharepoint/"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;ElementManifests&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;ElementManifest Location="elements.xml"/&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/ElementManifests&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/Feature&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Now we will use the feature to implement a custom action.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Change the Elements.xml file of the Feature to look like:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8" ?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;Elements xmlns="http://schemas.microsoft.com/sharepoint/"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;CustomAction&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;Id="Custom.Configuration.ListCustomSettings"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;GroupId="&lt;span style="color: red;"&gt;GeneralSettings&lt;/span&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;Location="&lt;span style="color: red;"&gt;Microsoft.SharePoint.ListEdit&lt;/span&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;RequireSiteAdministrator="&lt;span style="color: red;"&gt;FALSE&lt;/span&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;Sequence="100"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;Title="&lt;span style="color: red;"&gt;Custom Settings&lt;/span&gt;"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: red;"&gt;UrlAction&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: red;"&gt;Url="_layouts/ListCustomSettings/ListSetting.aspx?List={ListId}"&lt;/span&gt; /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/CustomAction&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/Elements&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;The feature (as above) will give us a new hyperlink on the List Settings Page (ListEdit). It will look as follow:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_SX0lCwhJEzc/TExW_qouJiI/AAAAAAAAASQ/tpRxTe2bhUg/s1600/4.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="176" hw="true" src="http://3.bp.blogspot.com/_SX0lCwhJEzc/TExW_qouJiI/AAAAAAAAASQ/tpRxTe2bhUg/s400/4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;The next step is to create a custom page which we can redirect to and on which we can mange the custom settings.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Add a .aspx page to your project with an associated .aspx.cs file.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;(there is a little trick to adding this aspx page to the project... please see the footnote at the bottom of this post for step-by-step instructions)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Ensure that the two files are placed inside an appropriate solution folder within the LAYOUTS Folder. Also ensure that the name of the aspx file corresponds to the url used in the custom action definition (above).&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Trebuchet MS;"&gt;&amp;lt;UrlAction Url&lt;span style="color: red;"&gt;="_layouts/ListCustomSettings/ListSetting.aspx&lt;/span&gt;?List={ListId}" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_SX0lCwhJEzc/TExlYwbc7SI/AAAAAAAAATQ/AV4GlMDwESI/s1600/5.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" hw="true" src="http://2.bp.blogspot.com/_SX0lCwhJEzc/TExlYwbc7SI/AAAAAAAAATQ/AV4GlMDwESI/s320/5.png" width="303" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Next we add controls, assembly references etc to our aspx page. I am not going into detail of each line of code as it is standard code.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Ensure your .aspx file look as follow:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;(please take special note of the public token key as yours might be different)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;%@ Assembly Name="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;%@ Import Namespace="Microsoft.SharePoint" %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;%@ Import Namespace="Microsoft.SharePoint.ApplicationPages" %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;%@ Import Namespace="System.Data" %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;%@ Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral,PublicKeyToken=71e9bce111e9429c" %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;%@ Register TagPrefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;%@ Register TagPrefix="wssawc" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;%@ Register TagPrefix="wssuc" TagName="ToolBar" Src="~/_controltemplates/ToolBar.ascx" %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;%@ Register TagPrefix="wssuc" TagName="ToolBarButton" Src="~/_controltemplates/ToolBarButton.ascx" %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;%@ Register TagPrefix="wssuc" TagName="InputFormSection" src="~/_controltemplates/InputFormSection.ascx" %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;%@ Register TagPrefix="wssuc" TagName="InputFormControl" src="~/_controltemplates/InputFormControl.ascx" %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;%@ Register TagPrefix="wssuc" TagName="ButtonSection" src="~/_controltemplates/ButtonSection.ascx" %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;%@ Page Language="C#" MasterPageFile="~/_layouts/application.master" AutoEventWireup="true" Inherits="&lt;span style="color: red;"&gt;&lt;strong&gt;ListConfig.ListConfig, ListCustomSettings&lt;/strong&gt;&lt;/span&gt;,Version=1.0.0.0,Culture=neutral,PublicKeyToken=&lt;span style="color: red;"&gt;&lt;strong&gt;29d1ff49fe67cd5b&lt;/strong&gt;&lt;/span&gt;" %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;asp:Content ID="Content2" ContentPlaceHolderID="PlaceHolderPageTitle" runat="server"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;Custom list config settings page&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/asp:Content&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;asp:Content ID="Content3" ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea" runat="server"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;Custom list config settings &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/asp:Content&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;asp:Content ID="Content1" ContentPlaceHolderID="PlaceHolderMain" runat="server"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;table width="50%" class="ms-propertysheet" cellspacing="0" cellpadding="0" border="0"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;td class="ms-error"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;asp:Label ID="lblMessage" runat="server" EnableViewState="False" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/table&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;table width="50%" class="ms-propertysheet" cellspacing="0" cellpadding="0" border="0"&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;tr&amp;gt;&amp;lt;td class="ms-descriptionText"&amp;gt;&amp;lt;asp:Label ID="LabelMessage" Runat="server" EnableViewState="False" class="ms-descriptionText"/&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;tr&amp;gt;&amp;lt;td class="ms-error"&amp;gt;&amp;lt;asp:Label ID="LabelErrorMessage" Runat="server" EnableViewState="False" /&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;tr&amp;gt;&amp;lt;td class="ms-descriptionText"&amp;gt;&amp;lt;asp:ValidationSummary ID="ValSummary" HeaderText="Errors" DisplayMode="BulletList" ShowSummary="True" runat="server"&amp;gt;&amp;lt;/asp:ValidationSummary&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;&amp;lt;img src="/_layouts/images/blank.gif" width="10" height="1" alt="" /&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/table&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;table width="50%" border="0" cellspacing="0" cellpadding="0" class="ms-propertysheet"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;!-- Key --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;wssuc:InputFormSection Title="Key" runat="server"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;Template_Description&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;SharePoint:EncodedLiteral ID="EncodedLiteral1" runat="server" text="Specify a key for the entry." EncodeMethod='HtmlEncodeAllowSimpleTextFormatting'/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/Template_Description&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;Template_InputFormControls&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;wssuc:InputFormControl LabelText="" runat="server"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;Template_control&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;wssawc:InputFormTextBox Title="Key" class="ms-input" ID="txtKey" Columns="35" Runat="server" MaxLength=255 /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/Template_control&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/wssuc:InputFormControl&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/Template_InputFormControls&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/wssuc:InputFormSection&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;!-- Value --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;wssuc:InputFormSection Title="Value" runat="server"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;Template_Description&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;SharePoint:EncodedLiteral ID="EncodedLiteral2" runat="server" text="Specify the value of the entry" EncodeMethod='HtmlEncodeAllowSimpleTextFormatting'/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/Template_Description&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;Template_InputFormControls&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;wssuc:InputFormControl LabelText="" runat="server"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;Template_control&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;wssawc:InputFormTextBox Title="Value" class="ms-input" ID="txtValue" Columns="35" Runat="server" MaxLength=255 /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/Template_control&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/wssuc:InputFormControl&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/Template_InputFormControls&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/wssuc:InputFormSection&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;wssuc:ButtonSection runat="server" ShowStandardCancelButton="false"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;template_buttons&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;asp:PlaceHolder ID="PlaceHolderInsertUpdate" runat="server"&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;asp:Button UseSubmitBehavior="false" runat="server" class="ms-ButtonHeightWidth" Text="Insert" id="cmdInsertUpdate" OnClick="cmdInsertUpdate_OnClick"/&amp;gt; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;asp:Button UseSubmitBehavior="false" runat="server" class="ms-ButtonHeightWidth" Text="Cancel" id="cmdInsertUpdateCancel" OnClick="cmdInsertUpdateCancel_OnClick"/&amp;gt; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/asp:PlaceHolder&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/template_buttons&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/wssuc:ButtonSection&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;br /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;br /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/table&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;SharePoint:SPGridView ID="grdEntries" runat="server" AutoGenerateColumns="false" Width="50%" AllowSorting="True" OnRowDeleting="grdEntries_RowDeleting" OnRowEditing="grdEntries_RowEditing" EnableViewState="false"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;AlternatingRowStyle CssClass="ms-alternating" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/SharePoint:SPGridView&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;wssuc:ButtonSection runat="server" ShowStandardCancelButton="false"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;template_buttons&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;asp:PlaceHolder ID="PlaceHolder1" runat="server"&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;asp:Button UseSubmitBehavior="false" runat="server" class="ms-ButtonHeightWidth" OnClick="cmdOK_OnClick" Text="OK" id="cmdOK" causesvalidation=false /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/asp:PlaceHolder&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/template_buttons&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/wssuc:ButtonSection&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;br /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;br /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;SharePoint:FormDigest ID="FormDigest1" runat="server" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/asp:Content&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Now we need to code the ListConfig class which is the code-behind of our aspx page.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Open the ListSettings.aspx.cs in code view and add the following code:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;using System;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;using System.Data;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;using System.Configuration;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;using System.Collections;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;using System.Web;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;using System.Web.Security;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;using System.Web.UI;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;using System.Web.UI.WebControls;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;using System.Web.UI.WebControls.WebParts;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;using System.Web.UI.HtmlControls;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;using Microsoft.SharePoint;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;using Microsoft.SharePoint.WebControls;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;using Microsoft.SharePoint.Utilities;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;using System.Xml;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;namespace ListConfig&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; public partial class ListConfig : LayoutsPageBase&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private DataTable _dtEntries; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private DataView _dvEntriesView; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected SPGridView grdEntries = new SPGridView();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected Label lblMessage = new Label();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected InputFormTextBox txtKey = new InputFormTextBox();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected InputFormTextBox txtValue = new InputFormTextBox(); &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp;Next, add a Page_Init event to the ListConfig class. In this event will we add two data columns and two command cokumns to our grid.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;protected void Page_Init(object sender, EventArgs e)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; BoundField objKeyField = new BoundField();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; objKeyField.ItemStyle.Width = Unit.Percentage(30);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; objKeyField.DataField = "Key";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; objKeyField.HeaderText = "Key";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; grdEntries.Columns.Add(objKeyField);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; BoundField objValueField = new BoundField();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; objValueField.DataField = "Value";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; objValueField.HeaderText = "Value";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; grdEntries.Columns.Add(objValueField);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; CommandField objEditField = new CommandField();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; objEditField.ShowEditButton = true;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; objEditField.HeaderText = "Edit";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; objEditField.ItemStyle.Width = Unit.Pixel(20);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; objEditField.ButtonType = ButtonType.Image;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; objEditField.EditImageUrl = "/_layouts/images/edit.gif";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; grdEntries.Columns.Add(objEditField);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; CommandField objDeleteField = new CommandField();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; objDeleteField.ShowDeleteButton = true;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; objDeleteField.HeaderText = "Delete";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; objDeleteField.ItemStyle.Width = Unit.Pixel(20);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; objDeleteField.ButtonType = ButtonType.Image;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; objDeleteField.DeleteImageUrl = "/_layouts/images/delete.gif";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; grdEntries.Columns.Add(objDeleteField);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Next, add a Page_Load event to the ListConfig class. In this event we set allowunsafeupdates=true and we bind the grid to data.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;protected void Page_Load(object sender, EventArgs e)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; SPContext.Current.Web.AllowUnsafeUpdates = true;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; BindGrid();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Next, add a LoadData function to help load the data into the datatable. You will notice the important thing here is that we iterate through the RootFolder.Properties.Keys to get all custom settings for the current list, and then we load the data in to the datatable.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;private void LoadData(string strSortOrder)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;_dtEntries = new DataTable();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;DataColumn objKeyColumn = new DataColumn();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;objKeyColumn.DataType = Type.GetType("System.String");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;objKeyColumn.ColumnName = "Key";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;objKeyColumn.ReadOnly = true;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;_dtEntries.Columns.Add(objKeyColumn);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;DataColumn objValueColumn = new DataColumn();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;objValueColumn.DataType = Type.GetType("System.String");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;objValueColumn.ColumnName = "Value";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;objValueColumn.ReadOnly = true;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;_dtEntries.Columns.Add(objValueColumn);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;foreach (string strKey in SPContext.Current.List.RootFolder.Properties.Keys)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;if (strKey.StartsWith("vti_")) continue;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;if (strKey.StartsWith("_reporting")) continue;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;if (SPContext.Current.List.RootFolder.Properties[strKey] == null) continue;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;if (SPContext.Current.List.RootFolder.Properties[strKey].ToString() == String.Empty) continue;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;DataRow objRow = _dtEntries.NewRow();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;objRow["Key"] = strKey;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;catch&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;objRow["Key"] = "Error";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;objRow["Value"] = SPContext.Current.List.RootFolder.Properties[strKey];&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;catch&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;objRow["Value"] = "Error";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;_dtEntries.Rows.Add(objRow);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;_dvEntriesView = _dtEntries.DefaultView;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;_dvEntriesView.Sort = "[Key] asc";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Next, add a helper function to populate the grid: &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;private void BindGrid() &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;LoadData(String.Empty);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;grdEntries.DataSource = _dvEntriesView;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;grdEntries.DataBind();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;catch (Exception err)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;lblMessage.Text = lblMessage.Text + "Failed to bind data to page. Please try to reload the page.";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Add Event handlers for the grid behaviour:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;public void grdEntries_RowDeleting(object sender, GridViewDeleteEventArgs e)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;string strKey = grdEntries.Rows[e.RowIndex].Cells[0].Text;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;strKey = SPHttpUtility.HtmlDecode(strKey);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;if (SPContext.Current.List.RootFolder.Properties.ContainsKey(strKey))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;SPContext.Current.List.RootFolder.Properties[strKey] = null;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;SPContext.Current.List.RootFolder.Update();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;BindGrid();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;catch (Exception err)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;lblMessage.Text = lblMessage.Text + err.Message + "\n";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;public void grdEntries_RowEditing(object sender, GridViewEditEventArgs e)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;string strKey = grdEntries.Rows[e.NewEditIndex].Cells[0].Text;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;txtKey.Text = strKey;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;txtKey.Enabled = false;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;txtValue.Text = SPContext.Current.List.RootFolder.Properties[strKey].ToString();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;public void grdEntries_Sorting(object sender, GridViewEditEventArgs e)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;grdEntries.DataSource = _dvEntriesView;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;grdEntries.DataBind();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Add a helper function to build a redirect url (which will be used when the form close):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;private string GetRedirectUrl()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;return SPContext.Current.Web.Url + String.Format("/_layouts/listedit.aspx?List={0}", Request.QueryString["List"]);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Add the Button Click Events which corresponds to the definition in the aspx file:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;public void cmdOK_OnClick(object sender, EventArgs e)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;SPUtility.Redirect(GetRedirectUrl(), SPRedirectFlags.UseSource, HttpContext.Current);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;public void cmdInsertUpdate_OnClick(object sender, EventArgs e)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;string strKey = txtKey.Text;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;if (strKey.Length == 0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;throw new Exception("You must provide a key.");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;if (strKey.Contains("&amp;amp;"))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;throw new Exception("&amp;amp; is not allowed. You must provide an alternative name.");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;string strValue = txtValue.Text;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;if (strValue.Length == 0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;throw new Exception("You must provide a value.");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;if (SPContext.Current.List.RootFolder.Properties.ContainsKey(strKey))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;SPContext.Current.List.RootFolder.Properties[strKey] = strValue;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;SPContext.Current.List.RootFolder.Properties.Add(strKey, strValue);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;SPContext.Current.List.RootFolder.Update();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;strKey = "";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;strValue = "";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;txtKey.Text = "";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;txtKey.Enabled = true;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;txtValue.Text = "";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;BindGrid();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;catch (Exception err)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;lblMessage.Text = err.Message;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;public void cmdInsertUpdateCancel_OnClick(object sender, EventArgs e)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;txtKey.Text = "";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;txtKey.Enabled = true;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;txtValue.Text = "";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Override the OnUload event of the page to set the AllowUnsafeUpdates=false:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;protected override void OnUnload(EventArgs e)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;SPContext.Current.Web.AllowUnsafeUpdates = false;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;WOW, it looks like a lot of code, but in fact, its not much!&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Next, build your project and if all is successfull you are ready to test the outcome.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Go to your project properties and set the 'start browser with' setting to the target SP site url on which you want to test.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_SX0lCwhJEzc/TExho8jfZDI/AAAAAAAAASg/Lk60GYmGo6g/s1600/6.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;img border="0" height="207" hw="true" src="http://1.bp.blogspot.com/_SX0lCwhJEzc/TExho8jfZDI/AAAAAAAAASg/Lk60GYmGo6g/s400/6.png" width="400" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Save your project. Right click on your project, select WSPBuilder and then select "Build WSP" - keep an eye on the output&amp;nbsp;pane to ensure that there are no problems.&amp;nbsp;Once&amp;nbsp;successful, right click on the project, select WSPBuilder and then select "Deploy".&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Once done, go to&amp;nbsp;the target SP site and&amp;nbsp;refresh the site features list.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;You will notice the following new site feature is available:&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_SX0lCwhJEzc/TExiow0RaHI/AAAAAAAAASo/5jYwdeHItpk/s1600/7.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="72" hw="true" src="http://3.bp.blogspot.com/_SX0lCwhJEzc/TExiow0RaHI/AAAAAAAAASo/5jYwdeHItpk/s400/7.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Activate the feature.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Go to any list or library and open the settings page.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_SX0lCwhJEzc/TExjV-akafI/AAAAAAAAASw/oPyu60AIvfE/s1600/8.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="198" hw="true" src="http://2.bp.blogspot.com/_SX0lCwhJEzc/TExjV-akafI/AAAAAAAAASw/oPyu60AIvfE/s400/8.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;You will notice the new Custom Action URL which we added:&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_SX0lCwhJEzc/TExjk86m2EI/AAAAAAAAAS4/tRrOpT-gAk8/s1600/10.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" hw="true" src="http://4.bp.blogspot.com/_SX0lCwhJEzc/TExjk86m2EI/AAAAAAAAAS4/tRrOpT-gAk8/s400/10.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;When you click on the 'custom settings'&amp;nbsp;custom action url you will be redirected to the new custom page:&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_SX0lCwhJEzc/TExkMEPmMMI/AAAAAAAAATA/kLMf6q-M4hc/s1600/11.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="152" hw="true" src="http://1.bp.blogspot.com/_SX0lCwhJEzc/TExkMEPmMMI/AAAAAAAAATA/kLMf6q-M4hc/s400/11.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;On this page you can manage custom settings for the list.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_SX0lCwhJEzc/TExkslQHcSI/AAAAAAAAATI/48PRUZ5fvg4/s1600/12.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="173" hw="true" src="http://4.bp.blogspot.com/_SX0lCwhJEzc/TExkslQHcSI/AAAAAAAAATI/48PRUZ5fvg4/s400/12.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;There you go ! a very nice tool which can be used to store custom settings on any list or library.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Enjoy !!!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;strong&gt;Note: Trick to add a aspx page to the project:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;If you want to add a aspx page to the project you click on project and select "Add New Item..." but you will notice that the Web Form / .aspx item is not available to be selected.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;When you want to add a aspx page with an associated aspx.cs file to the project there is a little trick that you need to do.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Open another instance of Visual Studio.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Select to create a new project and choose C# --&amp;gt; ASP.Net Web Application&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_SX0lCwhJEzc/TJY-q_5G86I/AAAAAAAAAZg/AomzeQmZ9Do/s1600/1.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="270" qx="true" src="http://2.bp.blogspot.com/_SX0lCwhJEzc/TJY-q_5G86I/AAAAAAAAAZg/AomzeQmZ9Do/s400/1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Provide a projace name and click on "OK".&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Once the project has been created you will see it contains a web form (aspx).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Open the Solution Explorer view --&amp;gt; right click and select "Open Folder in Windows Explorer".&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_SX0lCwhJEzc/TJY_U4OmlqI/AAAAAAAAAZo/Fn9f4X00TPM/s1600/1.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" qx="true" src="http://2.bp.blogspot.com/_SX0lCwhJEzc/TJY_U4OmlqI/AAAAAAAAAZo/Fn9f4X00TPM/s400/1.png" width="176" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;From Windows Explorer copy the aspx file and aspx.cs file into your SharePoint project folder (where the solution of this tutorial project is located) and then in your project add an existing item and select the two files which you copied.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_SX0lCwhJEzc/TJY_5KECgHI/AAAAAAAAAZw/mFvzSgbzNkc/s1600/1.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="228" qx="true" src="http://3.bp.blogspot.com/_SX0lCwhJEzc/TJY_5KECgHI/AAAAAAAAAZw/mFvzSgbzNkc/s400/1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429025622434259152-4261205961515366014?l=johanolivier.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johanolivier.blogspot.com/feeds/4261205961515366014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johanolivier.blogspot.com/2010/07/custom-settings-for-sharepoint-list-or.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/4261205961515366014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/4261205961515366014'/><link rel='alternate' type='text/html' href='http://johanolivier.blogspot.com/2010/07/custom-settings-for-sharepoint-list-or.html' title='Custom settings for a SharePoint list or library'/><author><name>Johan Olivier</name><uri>http://www.blogger.com/profile/12362783186069410694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='19' src='http://2.bp.blogspot.com/_SX0lCwhJEzc/SxYSinEvesI/AAAAAAAAAAM/YDzvQbZhOzk/S220/JohanMuggshot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_SX0lCwhJEzc/TExVLle-mzI/AAAAAAAAASA/tGSGPOq-pdI/s72-c/1.png' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429025622434259152.post-411622325510985115</id><published>2010-07-16T12:05:00.081+02:00</published><updated>2010-08-04T14:10:42.669+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SilverLight for SharePoint 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Development'/><title type='text'>Silverlight in SharePoint - Option 2 - Custom Web Part Feature</title><content type='html'>&lt;span style="color: black; font-family: Trebuchet MS;"&gt;In two previous tutorials I showed how to &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=9442B0F2-7465-417A-88F3-5E7B5409E9DD&amp;amp;displaylang=en"&gt;create a simple Silverlight application&lt;/a&gt;, and how to use a Silverlight application inside SharePoint (WSS 3.0 or MOSS 2007) using &lt;a href="http://johanolivier.blogspot.com/2010/07/silverlight-in-sharepoint-option-1-cewp.html"&gt;a Content Editor Web Part&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;There are a lot of conflicting and even unclear instructions on the web on how to achieve this.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Thank you Karine Bosch for the excellent post you made available. It is very well structured and helped me immensely in putting together this post for my team. The original blog post which a lot of my information come from can be found at &lt;/span&gt;&lt;a href="http://karinebosch.wordpress.com/2009/07/17/integrating-silverlight-3-in-sharepoint-2007/"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;http://karinebosch.wordpress.com/2009/07/17/integrating-silverlight-3-in-sharepoint-2007/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;In this tutorial I will show how to develop a proper custom SharePoint web part feature which encapsulates the Silverlight application.&lt;/span&gt;&lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Please note that the example I give is very basic. It will be easy to make the web part more generic - you can add web part properties in which which the user can specify the height, width, and .xap file location. If you add the custom properties you will have a reusable Silverlight container web part.&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="color: red; font-family: Trebuchet MS;"&gt;Important:&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Trebuchet MS;"&gt;This tutorial is for Silverligh 3 - there has been changes from Silverlight version 2 which you need to consider. (SL3 does not contain the System.Web.Silverlight.dll)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;strong&gt;&lt;u&gt;Prerequisites:&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Silverlight 3 Tools for Visual Studio (&lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=9442B0F2-7465-417A-88F3-5E7B5409E9DD&amp;amp;displaylang=en"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;download here&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SharePoint (WSS 3.0 or MOSS 2007)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Visual Studio 2008&lt;/span&gt;&lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A working Silverlight application (&lt;a href="http://johanolivier.blogspot.com/2010/07/create-simple-silverlight-application.html"&gt;see this tutorial to create one&lt;/a&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WSP Builder (to develop the SharePoint Web Part)&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;u&gt;&lt;strong&gt;Lets Create our SharePoint Web Part:&lt;/strong&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Create a new Visual Studio 2008 project.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Select "WSPBuilder" from project type and&amp;nbsp; "WSP Builder Project" from Templates.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_SX0lCwhJEzc/TEAXyHhdsFI/AAAAAAAAAQo/wCKpcP8cjMU/s1600/1.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" hw="true" src="http://4.bp.blogspot.com/_SX0lCwhJEzc/TEAXyHhdsFI/AAAAAAAAAQo/wCKpcP8cjMU/s320/1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Right-click on the project and add a new item. Select WSPBuilder from Categories and "Web Part Feature" from Templates.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_SX0lCwhJEzc/TEAYY6rrA9I/AAAAAAAAAQw/dQcMI-YTrXs/s1600/2.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" hw="true" src="http://1.bp.blogspot.com/_SX0lCwhJEzc/TEAYY6rrA9I/AAAAAAAAAQw/dQcMI-YTrXs/s320/2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Provide a description for the web part and set the Scope to "&lt;span style="color: blue;"&gt;Site&lt;/span&gt;"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_SX0lCwhJEzc/TEAY3zZn4AI/AAAAAAAAAQ4/0ziI9PpeCjY/s1600/3.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" hw="true" src="http://1.bp.blogspot.com/_SX0lCwhJEzc/TEAY3zZn4AI/AAAAAAAAAQ4/0ziI9PpeCjY/s320/3.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;In the Solution Explorer, create a LAYOUTS folder under TEMPLATES and then create 2 new folders under the LAYOUTS folder. Name the 2 new folders "SL3" and "XAPS".&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Inside the XAPS folder add an existing working Silverlight&amp;nbsp;3 application. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;(&lt;/span&gt;&lt;a href="http://johanolivier.blogspot.com/2010/07/create-simple-silverlight-application.html"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;see this tutorial to create one&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_SX0lCwhJEzc/TEAhFTu9asI/AAAAAAAAARI/8-lRh3mE1lo/s1600/4.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" hw="true" src="http://1.bp.blogspot.com/_SX0lCwhJEzc/TEAhFTu9asI/AAAAAAAAARI/8-lRh3mE1lo/s320/4.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Now we have a structure to build our web part code and we have a Silverlight application which we can display in our web part.&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Next we will add two Silverlight helper files. (which enables Web sites to create advanced Silverlight installation and instantiation experiences)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;In Windows Explorer locate the &lt;span style="color: blue;"&gt;Silverlight.js&lt;/span&gt; file from the &lt;span style="color: blue;"&gt;C:\Program Files\Microsoft SDKs\Silverlight\v3.0\Tools folder&lt;/span&gt;. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Copy this file to the SL3 folder of your project.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;(For more information on Silverligth.js please see &lt;/span&gt;&lt;a href="http://code.msdn.microsoft.com/silverlightjs"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;this site&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;.)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;In Visual Studio Solution Explorer switch-on the&amp;nbsp;"view all files" option, refresh your solution and then right click on Silverlight.js and select "Include in project". Alternatively use the "add to project" functionality.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Right Click on the SL3 folder and select "Add" --&amp;gt; "New Item"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Select Visual C# Items and Select JScript File.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Name the File SharePointSilverLightHelper.js&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_SX0lCwhJEzc/TEAjc9CB9qI/AAAAAAAAARQ/eP3xTkTRk-M/s1600/4.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" hw="true" src="http://3.bp.blogspot.com/_SX0lCwhJEzc/TEAjc9CB9qI/AAAAAAAAARQ/eP3xTkTRk-M/s320/4.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Once the file is added to your solution, open the file and add&amp;nbsp;the following script to create a Silverlight application based on the silverlight.CreateObjectEx method:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;function onSilverlightError(sender, args)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;var appSource = "";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;if (sender != null &amp;amp;&amp;amp; sender != 0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;appSource = sender.getHost().Source;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;v&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;ar errorType = args.ErrorType;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;var iErrorCode = args.ErrorCode;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;var errMsg = "Unhandled Error in Silverlight Application " + appSource &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;+ "\n" ;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;errMsg += "Code: "+ iErrorCode + " \n";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;errMsg += "Category: " + errorType + " \n";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;errMsg += "Message: " + args.ErrorMessage + " \n";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;if (errorType == "ParserError")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;errMsg += "File: " + args.xamlFile + " \n";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;errMsg += "Line: " + args.lineNumber + " \n";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;errMsg += "Position: " + args.charPosition + " \n";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;else if (errorType == "RuntimeError")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;if (args.lineNumber != 0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; errMsg += "Line: " + args.lineNumber + " \n";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; errMsg += "Position: " + args.charPosition + " \n";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;errMsg += "MethodName: " + args.methodName + " \n";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;throw new Error(errMsg);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;function createSL(divid, swidth, sheight, source, initparameters)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; var pluginid = divid + "Plugin";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; var divElement = document.getElementById(divid);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; var altHTML = divElement.innerHTML;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; if (swidth == null)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; {swidth='100%';}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; if (sheight == null)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; {sheight='750px';&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; Silverlight.createObjectEx&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;(&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;{&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; source: source,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; parentElement: divElement,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; id: pluginid,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; properties:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;width:swidth,&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; height:sheight,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; minRuntimeVersion:'2.0.31005.0'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;},&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; events:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; OnError: onSilverlightError&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; initParams: initparameters&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt; &lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;The solution file structure should look like this:&lt;/span&gt; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_SX0lCwhJEzc/TEAkWrUhKXI/AAAAAAAAARY/FFPa6L-MGwA/s1600/5.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" hw="true" src="http://2.bp.blogspot.com/_SX0lCwhJEzc/TEAkWrUhKXI/AAAAAAAAARY/FFPa6L-MGwA/s320/5.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="color: blue; font-family: Courier New;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Save the Visual Studio solution.&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Next, we will add the web part code to render the Silverlight application inside SharePoint.&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Open your web part class (in this example SharePointSilverLightWebPart1.cs) in code view and remove all the unneccesary code so that the class is nice and clean:&lt;/span&gt; &lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;using System.Runtime.InteropServices;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;using System.Web.UI;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;using System.Web.UI.WebControls.WebParts;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;using System.Web.UI.HtmlControls;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;using System.Web.UI.WebControls;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;using Microsoft.SharePoint;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;using Microsoft.SharePoint.WebControls;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;using Microsoft.SharePoint.WebPartPages;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;using System.Text;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;namespace SharePointSilverLightWebPart1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; [Guid("848d4aec-5dd2-4b7d-a512-995191a627e8")]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; public class SharePointSilverlightWebPart1 :&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Microsoft.SharePoint.WebPartPages.WebPart&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Add the following declaration inside the class: &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;private LiteralControl silverlightHost; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Add code to the OnPreRender event to register the javascript files.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: blue;"&gt;protected override void OnPreRender(EventArgs e)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Courier New;"&gt;&amp;nbsp; base.OnPreRender(e);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; ClientScriptManager cs = Page.ClientScript&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Courier New;"&gt;&amp;nbsp;&amp;nbsp;if (!cs.IsClientScriptIncludeRegistered("sl_javascript"))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cs.RegisterClientScriptInclude(this.GetType(), &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "sl_javascript", &lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;"/_LAYOUTS/SL3/Silverlight.js");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; if (!cs.IsClientScriptIncludeRegistered("spsl_javascript"))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cs.RegisterClientScriptInclude(this.GetType(),&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"spsl_javascript", &lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;/_LAYOUTS/SL3/SharePointSilverLightHelper.js");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Call the above javascript from within the CreateChildControls method: &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;protected override void CreateChildControls()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; string xaplocation = null;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; xaplocation = "_LAYOUTS/Xaps/SilverlightApplication1.xap";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; Unit height = new Unit(500);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; string slstring = string.Format("&amp;lt;script&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;type=\"text/javascript\"&amp;gt;createSL('silverlightHost', '{0}',&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; '{1}', '{2}', '{3}');&amp;lt;/script&amp;gt;", height, height, xaplocation,&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;"");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; silverlightHost = new LiteralControl(string.Format("&amp;lt;div&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; id=\"silverlightHost\" style=\"width:100%; height:100%\"&amp;gt;&amp;lt;/div&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; {0}", slstring));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; this.Controls.Add(silverlightHost);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;To test the solution, add a SharePoint site URL to the Debug settings of the project.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_SX0lCwhJEzc/TEArbRUFQAI/AAAAAAAAARg/a2OF2izz0T4/s1600/6.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="326" hw="true" src="http://1.bp.blogspot.com/_SX0lCwhJEzc/TEArbRUFQAI/AAAAAAAAARg/a2OF2izz0T4/s400/6.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Save the project. Build the project. Use WSP Builder to "Build WSP" and then to "Deploy"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Navigate to the same SharePoint site in I.E. and go to Site Settings --&amp;gt;Site Collection Features. Activate your new feature.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_SX0lCwhJEzc/TEA6GgnT0eI/AAAAAAAAAR4/CGpk5v6BXuE/s1600/7.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" hw="true" src="http://4.bp.blogspot.com/_SX0lCwhJEzc/TEA6GgnT0eI/AAAAAAAAAR4/CGpk5v6BXuE/s320/7.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Edit a web part page on your site and add the following web part:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;a href="http://2.bp.blogspot.com/_SX0lCwhJEzc/TEAsiGxjtGI/AAAAAAAAARo/pn4HcPk6eos/s1600/8.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="151" hw="true" src="http://2.bp.blogspot.com/_SX0lCwhJEzc/TEAsiGxjtGI/AAAAAAAAARo/pn4HcPk6eos/s400/8.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;See the new web part containing the Silverlight solution.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_SX0lCwhJEzc/TEAsxHr5HNI/AAAAAAAAARw/WAJX-qzgaK4/s1600/9.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="273" hw="true" src="http://4.bp.blogspot.com/_SX0lCwhJEzc/TEAsxHr5HNI/AAAAAAAAARw/WAJX-qzgaK4/s400/9.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Enjoy !!&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429025622434259152-411622325510985115?l=johanolivier.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johanolivier.blogspot.com/feeds/411622325510985115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johanolivier.blogspot.com/2010/07/silverlight-in-sharepoint-option-2.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/411622325510985115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/411622325510985115'/><link rel='alternate' type='text/html' href='http://johanolivier.blogspot.com/2010/07/silverlight-in-sharepoint-option-2.html' title='Silverlight in SharePoint - Option 2 - Custom Web Part Feature'/><author><name>Johan Olivier</name><uri>http://www.blogger.com/profile/12362783186069410694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='19' src='http://2.bp.blogspot.com/_SX0lCwhJEzc/SxYSinEvesI/AAAAAAAAAAM/YDzvQbZhOzk/S220/JohanMuggshot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_SX0lCwhJEzc/TEAXyHhdsFI/AAAAAAAAAQo/wCKpcP8cjMU/s72-c/1.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429025622434259152.post-642595444200635422</id><published>2010-07-13T21:21:00.006+02:00</published><updated>2010-08-04T14:11:02.183+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SilverLight for SharePoint 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Development'/><title type='text'>Silverlight in SharePoint Option 1 - CEWP</title><content type='html'>&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;This simple tutorial will illustrate how to embed a Silverlight application (.xap file) in SharePoint (WSS 3 or MOSS 2007) using a Content Editor&amp;nbsp;web part.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Many thanks to my friend Hassan-Mia Salie for his contributions.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp;&amp;nbsp; Silverlight 3.0 Client&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp;&amp;nbsp; SharePoint (WSS3 or MOSS)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp;&amp;nbsp; A Working Silverlight application (.xap file)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp;&amp;nbsp; (to see how to create a simple silverlight app check out &lt;a href="http://johanolivier.blogspot.com/2010/07/create-simple-silverlight-application.html"&gt;this tutorial&lt;/a&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;strong&gt;Lets Go:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Locate the web application folder of your SharePoint application.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Should be: C:\inetpub\wwwroot\wss\VirtualDirectories\1000\ ,where "1000" is the number of your SharePoint Web App IIS port.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Create a new “ClientBin” folder in the web application folder.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_SX0lCwhJEzc/TDy7hASeWbI/AAAAAAAAAQQ/uPjY1_TupgE/s1600/1.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="136" rw="true" src="http://1.bp.blogspot.com/_SX0lCwhJEzc/TDy7hASeWbI/AAAAAAAAAQQ/uPjY1_TupgE/s400/1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Open you SharePoint Web which exist within the same web application.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Edit a Page and add a CEWP.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Select to modify the shared web part and open the “Source Editor...”&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Paste the following code. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;(please note the name of your silverlight file - the file I used was called MySilverLightApp.xap.)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;param name="source" value="&lt;span style="color: red;"&gt;&lt;strong&gt;ClientBin/MySilverLightApp.xap&lt;/strong&gt;&lt;/span&gt;"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;param name="onError" value="onSilverlightError" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;param name="background" value="white" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;param name="minRuntimeVersion" value="3.0.40624.0" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;param name="autoUpgrade" value="true" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;a href="http://go.microsoft.com/fwlink/?LinkID=149156&amp;amp;v=3.0.40624.0" style="text-decoration:none"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/object&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Change the width and height from % to values.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="&lt;span style="color: red;"&gt;&lt;strong&gt;400&lt;/strong&gt;&lt;/span&gt;" height="&lt;span style="color: red;"&gt;&lt;strong&gt;400&lt;/strong&gt;&lt;/span&gt;"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;param name="source" value="&lt;span style="color: red;"&gt;&lt;strong&gt;ClientBin/MySilverLightApp.xap&lt;/strong&gt;&lt;/span&gt;"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;param name="onError" value="onSilverlightError" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;param name="background" value="white" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;param name="minRuntimeVersion" value="3.0.40624.0" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;param name="autoUpgrade" value="true" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;/object&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Save the CEWP and refresh the page.... you will see you Silverlight app in SharePoint.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_SX0lCwhJEzc/TDy8WlASVzI/AAAAAAAAAQY/bDyfKL-hj8k/s1600/2.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="277" rw="true" src="http://3.bp.blogspot.com/_SX0lCwhJEzc/TDy8WlASVzI/AAAAAAAAAQY/bDyfKL-hj8k/s400/2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Enjoy !!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/429025622434259152-642595444200635422?l=johanolivier.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johanolivier.blogspot.com/feeds/642595444200635422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johanolivier.blogspot.com/2010/07/silverlight-in-sharepoint-option-1-cewp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/642595444200635422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/429025622434259152/posts/default/642595444200635422'/><link rel='alternate' type='text/html' href='http://johanolivier.blogspot.com/2010/07/silverlight-in-sharepoint-option-1-cewp.html' title='Silverlight in SharePoint Option 1 - CEWP'/><author><name>Johan Olivier</name><uri>http://www.blogger.com/profile/12362783186069410694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='19' src='http://2.bp.blogspot.com/_SX0lCwhJEzc/SxYSinEvesI/AAAAAAAAAAM/YDzvQbZhOzk/S220/JohanMuggshot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_SX0lCwhJEzc/TDy7hASeWbI/AAAAAAAAAQQ/uPjY1_TupgE/s72-c/1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-429025622434259152.post-2091020672336350329</id><published>2010-07-13T20:49:00.007+02:00</published><updated>2010-08-04T14:11:20.727+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SilverLight for SharePoint 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Development'/><title type='text'>Create a simple SilverLight Application</title><content type='html'>&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;This tutorial will show you how to create a simple Silverlight Application.&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Many thanks to my friend Hassan-Mia Salie for his contributions.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Prerequisites&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp;&amp;nbsp; • Visual Studio 2008 SP1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp;&amp;nbsp; • Microsoft® Silverlight™ 3 Tools for Visual Studio 2008 SP1&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=9442b0f2-7465-417a-88f3-5e7b5409e9dd&amp;amp;displaylang=en"&gt;Available for download here&lt;/a&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;The package will install the following components:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Silverlight 3 developer runtime &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Silverlight 3 software development kit &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Silverlight 3 Tools for Visual Studio 2008 SP1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Create&amp;nbsp;the Silverlight Application&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;• Launch VS2008 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;• Create new project --&amp;gt; Visual C#&amp;nbsp;--&amp;gt; Silverlight&amp;nbsp;--&amp;gt; Silverlight Application&lt;/span&gt;&amp;nbsp;&lt;a href="http://4.bp.blogspot.com/_SX0lCwhJEzc/TDywi9ZGfhI/AAAAAAAAAPg/EVbQi_hwk2g/s1600/1.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="270" rw="true" src="http://4.bp.blogspot.com/_SX0lCwhJEzc/TDywi9ZGfhI/AAAAAAAAAPg/EVbQi_hwk2g/s400/1.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Select the following: &lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_SX0lCwhJEzc/TDywsatMJfI/AAAAAAAAAPo/xa2avMnAXuM/s1600/2.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="242" rw="true" src="http://4.bp.blogspot.com/_SX0lCwhJEzc/TDywsatMJfI/AAAAAAAAAPo/xa2avMnAXuM/s400/2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;The following components are automatically added to the solution.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_SX0lCwhJEzc/TDyw02kvshI/AAAAAAAAAPw/t_k9Q7kfj_g/s1600/3.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="381" rw="true" src="http://1.bp.blogspot.com/_SX0lCwhJEzc/TDyw02kvshI/AAAAAAAAAPw/t_k9Q7kfj_g/s400/3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Open MainPage.xaml in design view:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;lt;UserControl x:Class="MySilverLightApp.MainPage"&lt;/span&gt;&lt;/div&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;xmlns:d="http://schemas.microsoft.com/expression/blend/2008"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color
