<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><!--RSS generated by Windows SharePoint Services V3 RSS Generator on 11/11/2009 2:49:24 AM--><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Robin | zevenseas | SharePoint Blog</title><link>http://community.zevenseas.com/Blogs/Robin</link><description>RSS feed for the Posts list.</description><lastBuildDate>Wed, 11 Nov 2009 01:49:24 GMT</lastBuildDate><generator>SharePoint CKS:EBE</generator><ttl>60</ttl><image><title>Robin | zevenseas | SharePoint Blog</title><url>http://community.zevenseas.com/Blogs/Robin/_layouts/images/homepage.gif</url><link>http://community.zevenseas.com/Blogs/Robin</link></image><feedburner:emailServiceId>blogs_robin</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/RobinsSharepointBlog" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>IGNITE recap</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/cO1fQMoyjgw/ignite-recap.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/11/06/ignite-recap.aspx</guid><description>&lt;div class="ExternalClassCF57AEDDFC534E43ABA383B1F5BB40FE"&gt;&lt;p&gt;After a pretty exhausting but very interesting week I can say that SharePoint 2010 will be very.. awesome..  (that was pretty much THE word of the week by a particular trainer and a few attendees (amongst them were SharePoint heroes like &lt;a href="http://www.zimmergren.net/default.aspx"&gt;Tobias Zimmergren&lt;/a&gt;, &lt;a href="http://blog.mastykarz.nl/"&gt;Waldek Mastykarz&lt;/a&gt;, &lt;a href="http://jopx.blogspot.com"&gt;Joris Poelmans (AKA JOPX)&lt;/a&gt;)) &lt;/p&gt; &lt;p&gt;After seeing a lot of sessions in Vegas at the SPC09, I thought that I had seen all the cool new things that are coming but this week showed a couple more. &lt;/p&gt; &lt;p&gt;One of the biggest new things for me was the removal of .stp files and instead of those, now we have .wsp’s that are called “WebTemplates”. Because they are .wsp’s, we can make use of the upgrade functionality. Meaning that in 2010 we have UPGRADEABLE webtemplates!! &lt;/p&gt; &lt;p&gt;Once more..&lt;/p&gt; &lt;h2&gt;in 2010 we have UPGRADEABLE webtemplates!!!&lt;/h2&gt; &lt;p&gt;To give you the bigger picture .. &lt;/p&gt; &lt;ol&gt; &lt;li&gt;User can click together the layout..  &lt;li&gt;User can save the site as template  &lt;li&gt;Developer can import the WSP into VS  &lt;li&gt;Developer can upload the WSP as a farm solution  &lt;li&gt;Sites can be created based on that custom webtemplate  &lt;ol&gt; &lt;li&gt;Developer modifies the webtemplate according to new business needs  &lt;li&gt;Developer updated WSP  &lt;li&gt;WSP get’s upgraded  &lt;li&gt;Existing sites get updated using the Feature Update framework&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;(at least.. that’s the story ;))&lt;/p&gt; &lt;p&gt;Can’t believe they didn’t shout this one out as big as the ‘F5 experience’ for example. I mean.. businesses were (and are) waiting for many years to have this functionality available..&lt;/p&gt; &lt;p&gt;For now I just wanted to say.. &lt;strong&gt;thanks&lt;/strong&gt; Microsoft for making this possible, thanks &lt;a href="http://blogs.code-counsel.net/Wouter"&gt;Wouter van Vugt&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/vesku"&gt;Vesa Juvonen&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/toddca"&gt;Todd Carter&lt;/a&gt; for giving an awesome developer training and thanks &lt;a href="http://community.zevenseas.com/Blogs/Daniel"&gt;Dan&lt;/a&gt; for giving me his seat ;)&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=LG9M4p5Epos:woLu6ST26Lo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=LG9M4p5Epos:woLu6ST26Lo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=LG9M4p5Epos:woLu6ST26Lo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=LG9M4p5Epos:woLu6ST26Lo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=LG9M4p5Epos:woLu6ST26Lo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=LG9M4p5Epos:woLu6ST26Lo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/LG9M4p5Epos" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/cO1fQMoyjgw" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Fri, 06 Nov 2009 19:56:21 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/11/06/ignite-recap.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/LG9M4p5Epos/ignite-recap.aspx</feedburner:origLink></item><item><title>Quick update! ;)</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/ogg5EIKkFVQ/quick-update.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/10/02/quick-update.aspx</guid><description>&lt;div class="ExternalClassBFF8CD28670F4BF3AEF739DEE1760CBD"&gt;&lt;p&gt;Yesterday was the last day of a big project.. was a good one where I’ve build something amazing stuff but now it’s time for something else.. &lt;/p&gt; &lt;p&gt;There seems to be time left the coming weeks to pick up some smaller projects (or stuff for &lt;a href="http://www.tunnelpoint.com"&gt;TunnelPoint&lt;/a&gt;/&lt;a href="http://www.produshare.com"&gt;ProduShare&lt;/a&gt;/&lt;a href="http://demo.zevenseas.com/"&gt;Blog Central&lt;/a&gt;) but it could be nice to pickup some other stuff that is available and if anyone has an interesting project lying around (and wants me in the team) please don't hesitate to contact me on robin at zevenseas.com or send an email to hans at zevenseas.com.&lt;/p&gt; &lt;p&gt;On another note..  Vegas is coming up! Will be very good with all the SharePoint peeps around.. after Seattle and London I’m really looking forward to this conference! One big happy family :)&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;a href="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/111/Ill_be_at_SPC2_2_52E8178E.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="Ill_be_at_SPC[2]" border="0" alt="Ill_be_at_SPC[2]" src="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/111/Ill_be_at_SPC2_thumb_00D56A47.png" width="244" height="138"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=P8ODHK5EFVc:Lz59zEJ43hU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=P8ODHK5EFVc:Lz59zEJ43hU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=P8ODHK5EFVc:Lz59zEJ43hU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=P8ODHK5EFVc:Lz59zEJ43hU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=P8ODHK5EFVc:Lz59zEJ43hU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=P8ODHK5EFVc:Lz59zEJ43hU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/P8ODHK5EFVc" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/ogg5EIKkFVQ" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Fri, 02 Oct 2009 10:02:29 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/10/02/quick-update.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/P8ODHK5EFVc/quick-update.aspx</feedburner:origLink></item><item><title>Building a custom Nintex Workflow Activity : using the SitePicker</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/j_dCWj812-A/building-a-custom-nintex-workflow-activity-using-the-sitepicker.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/09/25/building-a-custom-nintex-workflow-activity-using-the-sitepicker.aspx</guid><description>&lt;div class="ExternalClass6F9BEDB6AEEE4EC29C5BDE952867A0FA"&gt;&lt;p&gt;Yes yes.. another post on how to re-use the webcontrols of Nintex in your own custom workflow activity.. this time it’s the SitePicker. Which looks like this:&lt;/p&gt; &lt;p&gt;&lt;a href="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/110/sitepicker_2_5B1F179C.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="sitepicker" border="0" alt="sitepicker" src="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/110/sitepicker_thumb_5B1F179C.jpg" width="240" height="127"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;This picker thing took me the longest time to get working since it requires (which I’m not really sure of.. just was glad that I have it working :)) a LOT of javascript. First I added this chunk of javascript for the initialization of the picker:&lt;/p&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; curSelObjID = &amp;quot;&lt;span style="color:#8b0000"&gt;&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; curSelObjIOrigDBColor = &amp;quot;&lt;span style="color:#8b0000"&gt;&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; webUrl = &amp;quot;&lt;span style="color:#8b0000"&gt;&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; webID = &amp;quot;&lt;span style="color:#8b0000"&gt;&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; folderID = &amp;quot;&lt;span style="color:#8b0000"&gt;&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; folderUrl = &amp;quot;&lt;span style="color:#8b0000"&gt;&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; siteID = &amp;quot;&lt;span style="color:#8b0000"&gt;&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; isFormLib = &lt;span style="color:#0000ff"&gt;false&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;function&lt;/span&gt; SitePickerHandleOnClick(anchorid, type, url, webid, siteid, folderid) {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;var&lt;/span&gt; anchorItem = &lt;span style="color:#0000ff"&gt;document&lt;/span&gt;.getElementById(anchorid);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (anchorItem != &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;) {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (curSelObjID != &amp;quot;&lt;span style="color:#8b0000"&gt;&lt;/span&gt;&amp;quot;) {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            &lt;span style="color:#0000ff"&gt;var&lt;/span&gt; curAnchorItem = &lt;span style="color:#0000ff"&gt;document&lt;/span&gt;.getElementById(curSelObjID);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            curAnchorItem.style.backgroundColor = curSelObjIOrigDBColor
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        curSelObjID = anchorid;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        curSelObjIOrigDBColor = anchorItem.style.backgroundColor;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        webUrl = url;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        webID = webid;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        siteID = siteid;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        folderID = folderid;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#008000"&gt;//anchorItem.style.backgroundColor = &amp;quot;#EB501C&amp;quot;; // dark Nintex color&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        anchorItem.style.backgroundColor = &amp;quot;&lt;span style="color:#8b0000"&gt;#F39B23&lt;/span&gt;&amp;quot;; &lt;span style="color:#008000"&gt;// light Nintex color&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;function&lt;/span&gt; SitePickerNeedToExpandHandler(url, webid, siteid, folderid) {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (webUrl == &amp;quot;&lt;span style="color:#8b0000"&gt;&lt;/span&gt;&amp;quot; &amp;amp;&amp;amp; webID.&lt;span style="color:#0000ff"&gt;length&lt;/span&gt; &amp;gt; 0) {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        webUrl = SitePickerGetWebURLFromGUID(siteID, webID);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#008000"&gt;//webUrl = WebIDUrl(webID);&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (folderUrl == &amp;quot;&lt;span style="color:#8b0000"&gt;&lt;/span&gt;&amp;quot; &amp;amp;&amp;amp; folderID.&lt;span style="color:#0000ff"&gt;length&lt;/span&gt;) {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        folderUrl = SitePickerGetFileURLFromGUID(siteID, webID, folderID);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; ((webUrl.substring(0, url.&lt;span style="color:#0000ff"&gt;length&lt;/span&gt;) == url) || (folderUrl.substring(0, url.&lt;span style="color:#0000ff"&gt;length&lt;/span&gt;) == url))
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff"&gt;true&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff"&gt;false&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;function&lt;/span&gt; SitePickerPostInit() {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (curSelObjID != &amp;quot;&lt;span style="color:#8b0000"&gt;&lt;/span&gt;&amp;quot;) {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;var&lt;/span&gt; selObj = &lt;span style="color:#0000ff"&gt;document&lt;/span&gt;.getElementById(curSelObjID);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (selObj != &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;) {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            &lt;span style="color:#008000"&gt;//selObj.parentElement.focus();&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            &lt;span style="color:#008000"&gt;//selObj.focus();&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;function&lt;/span&gt; GetSitePickerListBGColorHandler(anchorid, url, webid, siteid, folderid) {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (webUrl == &amp;quot;&lt;span style="color:#8b0000"&gt;&lt;/span&gt;&amp;quot; &amp;amp;&amp;amp; webID.&lt;span style="color:#0000ff"&gt;length&lt;/span&gt; &amp;gt; 0) {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        webUrl = SitePickerGetWebURLFromGUID(siteID, webID);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#008000"&gt;//webUrl = WebIDUrl(webID);&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (folderUrl == &amp;quot;&lt;span style="color:#8b0000"&gt;&lt;/span&gt;&amp;quot;) {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (siteID != &amp;quot;&lt;span style="color:#8b0000"&gt;&lt;/span&gt;&amp;quot; &amp;amp;&amp;amp; webID != &amp;quot;&lt;span style="color:#8b0000"&gt;&lt;/span&gt;&amp;quot; &amp;amp;&amp;amp; folderID != &amp;quot;&lt;span style="color:#8b0000"&gt;&lt;/span&gt;&amp;quot;)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            folderUrl = SitePickerGetFileURLFromGUID(siteID, webID, folderID);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (url == folderUrl) {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        curSelObjID = anchorid;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        curSelObjIOrigDBColor = &amp;quot;&lt;span style="color:#8b0000"&gt;&lt;/span&gt;&amp;quot;; &lt;span style="color:#008000"&gt;// default color&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; &amp;quot;&lt;span style="color:#8b0000"&gt;#F39B23&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;else&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; &amp;quot;&lt;span style="color:#8b0000"&gt;#000000&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;function&lt;/span&gt; GetSitePickerWebBGColorHandler(anchorid, url, webid, siteid, folderid) {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (webUrl == &amp;quot;&lt;span style="color:#8b0000"&gt;&lt;/span&gt;&amp;quot; &amp;amp;&amp;amp; webID.&lt;span style="color:#0000ff"&gt;length&lt;/span&gt; &amp;gt; 0) {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        webUrl = SitePickerGetWebURLFromGUID(siteID, webID);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#008000"&gt;//webUrl = WebIDUrl(webID);&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (url == webUrl &amp;amp;&amp;amp; folderID == folderid) {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        curSelObjID = anchorid;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        curSelObjIOrigDBColor = &amp;quot;&lt;span style="color:#8b0000"&gt;&lt;/span&gt;&amp;quot;; &lt;span style="color:#008000"&gt;// default color&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; &amp;quot;&lt;span style="color:#8b0000"&gt;#F39B23&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;else&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; &amp;quot;&lt;span style="color:#8b0000"&gt;#000000&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;Then to get the value of the sitepicker, this bit of javascript has to be inserted into the TPARetrieveConfig method:&lt;/p&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;function&lt;/span&gt; TPARetrieveConfig() {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    SetFilter(&lt;span style="color:#0000ff"&gt;true&lt;/span&gt;, &lt;span style="color:#0000ff"&gt;true&lt;/span&gt;, &lt;span style="color:#0000ff"&gt;true&lt;/span&gt;, &lt;span style="color:#0000ff"&gt;true&lt;/span&gt;);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    SetAllowSelectWebs(&lt;span style="color:#0000ff"&gt;false&lt;/span&gt;);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    DoInternalOnLoad('SitePicker', webUrl, webUrl + &amp;quot;&lt;span style="color:#8b0000"&gt;/_vti_bin/NintexWorkflow/Workflow.asmx&lt;/span&gt;&amp;quot;, &lt;span style="color:#0000ff"&gt;true&lt;/span&gt;);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    webID = configXml.selectSingleNode(&amp;quot;&lt;span style="color:#8b0000"&gt;//Parameters/Parameter[@Name='WebId']/PrimitiveValue/@Value&lt;/span&gt;&amp;quot;).text;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    folderID = configXml.selectSingleNode(&amp;quot;&lt;span style="color:#8b0000"&gt;//Parameters/Parameter[@Name='FolderId']/PrimitiveValue/@Value&lt;/span&gt;&amp;quot;).text;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    siteID = configXml.selectSingleNode(&amp;quot;&lt;span style="color:#8b0000"&gt;//Parameters/Parameter[@Name='SiteId']/PrimitiveValue/@Value&lt;/span&gt;&amp;quot;).text;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (configXml.selectSingleNode(&amp;quot;&lt;span style="color:#8b0000"&gt;//Parameters/Parameter[@Name='Url']&lt;/span&gt;&amp;quot;) &amp;amp;&amp;amp; configXml.selectSingleNode(&amp;quot;&lt;span style="color:#8b0000"&gt;//Parameters/Parameter[@Name='Url']/PrimitiveValue/@Value&lt;/span&gt;&amp;quot;).text != &amp;quot;&lt;span style="color:#8b0000"&gt;&lt;/span&gt;&amp;quot;) {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        translateTextAndInsertIntoRefTextField(parentUrl, configXml.selectSingleNode(&amp;quot;&lt;span style="color:#8b0000"&gt;//Parameters/Parameter[@Name='Url']/PrimitiveValue/@Value&lt;/span&gt;&amp;quot;).text);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;document&lt;/span&gt;.getElementById(rdoEnterUrl).checked = &lt;span style="color:#0000ff"&gt;true&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;document&lt;/span&gt;.getElementById(rdoChooseSite).checked = &lt;span style="color:#0000ff"&gt;false&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;document&lt;/span&gt;.getElementById(&amp;quot;&lt;span style="color:#8b0000"&gt;SitePicker&lt;/span&gt;&amp;quot;).style.display = &amp;quot;&lt;span style="color:#8b0000"&gt;none&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;document&lt;/span&gt;.getElementById(&amp;quot;&lt;span style="color:#8b0000"&gt;enterUrl&lt;/span&gt;&amp;quot;).style.display = &amp;quot;&lt;span style="color:#8b0000"&gt;block&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;else&lt;/span&gt; {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;document&lt;/span&gt;.getElementById(rdoEnterUrl).checked = &lt;span style="color:#0000ff"&gt;false&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;document&lt;/span&gt;.getElementById(rdoChooseSite).checked = &lt;span style="color:#0000ff"&gt;true&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;document&lt;/span&gt;.getElementById(&amp;quot;&lt;span style="color:#8b0000"&gt;SitePicker&lt;/span&gt;&amp;quot;).style.display = &amp;quot;&lt;span style="color:#8b0000"&gt;block&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;document&lt;/span&gt;.getElementById(&amp;quot;&lt;span style="color:#8b0000"&gt;enterUrl&lt;/span&gt;&amp;quot;).style.display = &amp;quot;&lt;span style="color:#8b0000"&gt;none&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;    }&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    SetFilter(&lt;span style="color:#0000ff"&gt;true&lt;/span&gt;, &lt;span style="color:#0000ff"&gt;true&lt;/span&gt;, &lt;span style="color:#0000ff"&gt;true&lt;/span&gt;, &lt;span style="color:#0000ff"&gt;true&lt;/span&gt;);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    SetAllowSelectWebs(&lt;span style="color:#0000ff"&gt;false&lt;/span&gt;);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    DoInternalOnLoad('SitePicker', webUrl, webUrl + &amp;quot;&lt;span style="color:#8b0000"&gt;/_vti_bin/NintexWorkflow/Workflow.asmx&lt;/span&gt;&amp;quot;, &lt;span style="color:#0000ff"&gt;true&lt;/span&gt;);&lt;/pre&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;Then to write the values back, this bit of javascript is being used in the TPAWriteConfig method:&lt;/p&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;function&lt;/span&gt; TPAWriteConfig() {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    configXml.selectSingleNode(&amp;quot;&lt;span style="color:#8b0000"&gt;//Parameters/Parameter[@Name='WebId']/PrimitiveValue/@Value&lt;/span&gt;&amp;quot;).text = &lt;span style="color:#0000ff"&gt;self&lt;/span&gt;.webID;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    configXml.selectSingleNode(&amp;quot;&lt;span style="color:#8b0000"&gt;//Parameters/Parameter[@Name='FolderId']/PrimitiveValue/@Value&lt;/span&gt;&amp;quot;).text = &lt;span style="color:#0000ff"&gt;self&lt;/span&gt;.folderID;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    configXml.selectSingleNode(&amp;quot;&lt;span style="color:#8b0000"&gt;//Parameters/Parameter[@Name='SiteId']/PrimitiveValue/@Value&lt;/span&gt;&amp;quot;).text = &lt;span style="color:#0000ff"&gt;self&lt;/span&gt;.siteID;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    EnsurePrimitiveValueNode(configXml, &amp;quot;&lt;span style="color:#8b0000"&gt;Url&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (&lt;span style="color:#0000ff"&gt;document&lt;/span&gt;.getElementById(rdoEnterUrl).checked) {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        configXml.selectSingleNode(&amp;quot;&lt;span style="color:#8b0000"&gt;//Parameters/Parameter[@Name='Url']/PrimitiveValue/@Value&lt;/span&gt;&amp;quot;).text = getStringFromRefTextField(parentUrl);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;else&lt;/span&gt; {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        configXml.selectSingleNode(&amp;quot;&lt;span style="color:#8b0000"&gt;//Parameters/Parameter[@Name='Url']/PrimitiveValue/@Value&lt;/span&gt;&amp;quot;).text = &amp;quot;&lt;span style="color:#8b0000"&gt;&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff"&gt;true&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;And to make sure the SitePicker is loaded, this bit has to be referenced:&lt;/p&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;script&lt;/span&gt; &lt;span style="color:#ff0000"&gt;src&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;/_layouts/NintexWorkflow/SitePicker.js?Version=&amp;lt;%=Nintex.Workflow.Licensing.License.VersionInfo %&amp;gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;type&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;language&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;javascript&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000"&gt;script&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;You can see in the variables there are two ways to store the selected List (or web/site/folder) namely:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Option 1: &lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;ListUrl&lt;/li&gt;&lt;/ul&gt;
&lt;li&gt;Option 2:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;SiteId&lt;/li&gt;
&lt;li&gt;WebId&lt;/li&gt;
&lt;li&gt;FolderId&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;
&lt;p&gt;In the codebehind we can use the following piece of code to get to the desired selected location:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;Guid SiteGuid = &lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.SiteId;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;Guid WebGuid = &lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.WebId;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;Guid ListGuid = &lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.FolderId;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.SiteId == Guid.Empty &amp;amp;&amp;amp; (!&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;.IsNullOrEmpty(&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.Url)))
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    Utility.GetIdsFromSharePointUrl(&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.Url, &lt;span style="color:#0000ff"&gt;out&lt;/span&gt; SiteGuid, &lt;span style="color:#0000ff"&gt;out&lt;/span&gt; WebGuid, &lt;span style="color:#0000ff"&gt;out&lt;/span&gt; ListGuid);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;So it doesn’t matter what path is chosen, in both ways we get all the GUID’s we want to navigate to the desired location by making use of the Utility Class that is supplied with the Nintex.Workflow.dll ;)&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c18fe31e-8649-41d0-8923-be7643e0566b" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SharePoint" rel="tag"&gt;SharePoint&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Nintex" rel="tag"&gt;Nintex&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Workflow" rel="tag"&gt;Workflow&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=SJX8pggy3a0:WPpsw2gs9p0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=SJX8pggy3a0:WPpsw2gs9p0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=SJX8pggy3a0:WPpsw2gs9p0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=SJX8pggy3a0:WPpsw2gs9p0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=SJX8pggy3a0:WPpsw2gs9p0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=SJX8pggy3a0:WPpsw2gs9p0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/SJX8pggy3a0" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/j_dCWj812-A" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Fri, 25 Sep 2009 16:44:18 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/09/25/building-a-custom-nintex-workflow-activity-using-the-sitepicker.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/SJX8pggy3a0/building-a-custom-nintex-workflow-activity-using-the-sitepicker.aspx</feedburner:origLink></item><item><title>Building a custom Nintex Workflow Activity : using the CredentialPicker</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/MZ_4FkElHxA/building-a-custom-nintex-workflow-activity-using-the-credentialpicker.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/09/25/building-a-custom-nintex-workflow-activity-using-the-credentialpicker.aspx</guid><description>&lt;div class="ExternalClass0CDE8E3CE79842E2937C25ED144E54C5"&gt;&lt;p&gt;In my previous post I mentioned that I also wanted to use the CredentialPicker from Nintex to include in my own custom activity and since of this week I finally managed to achieve this! ;)&lt;/p&gt; &lt;p&gt;What is the CredentialPicker? This picker allows you to set an username and password combination so that an activity can be ran using those credentials. But you can also use a lookup to a workflow constant credential that can be defined on web / site / web application level. So it’s like the SPSecurity.RunWithElevatedPriviliges method but then in a workflow activity. So I think you can see the potential of this control.. In an activity it looks like this :&lt;/p&gt; &lt;p&gt;&lt;a href="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/109/credentialpicker_2_5B18EEB9.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="credentialpicker" border="0" alt="credentialpicker" src="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/109/credentialpicker_thumb_5B18EEB9.jpg" width="240" height="62"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Doesn’t look that spectacular eh? But.. it’s very powerful.. very..  &lt;/p&gt; &lt;p&gt;So how do we get this awesome little control in our dialog page?&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Add the UserControl declarative in the header of the page&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="background-color:#ffff00;color:black"&gt;&amp;lt;%@ Register TagPrefix=&amp;quot;Nintex&amp;quot; TagName=&amp;quot;CredentialControl&amp;quot; Src=&amp;quot;~/_layouts/NintexWorkflow/CredentialControl.ascx&amp;quot; %&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;li&gt;Add the javascript code to retrieve the current set values using the TPARetrieveConfig method&lt;br&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;function&lt;/span&gt; TPARetrieveConfig() {           
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (configXml.selectSingleNode(&amp;quot;&lt;span style="color:#8b0000"&gt;/NWActionConfig/Parameters/Parameter[@Name='Username']&lt;/span&gt;&amp;quot;) &amp;amp;&amp;amp; configXml.selectSingleNode(&amp;quot;&lt;span style="color:#8b0000"&gt;/NWActionConfig/Parameters/Parameter[@Name='Password']&lt;/span&gt;&amp;quot;)) {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        cc_setUsername(&amp;quot;&lt;span style="color:#8b0000"&gt;&amp;lt;%= credentialPicker.ClientID %&amp;gt;&lt;/span&gt;&amp;quot;, configXml.selectSingleNode(&amp;quot;&lt;span style="color:#8b0000"&gt;/NWActionConfig/Parameters/Parameter[@Name='Username']/PrimitiveValue/@Value&lt;/span&gt;&amp;quot;).text);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        cc_setPassword(&amp;quot;&lt;span style="color:#8b0000"&gt;&amp;lt;%= credentialPicker.ClientID %&amp;gt;&lt;/span&gt;&amp;quot;, configXml.selectSingleNode(&amp;quot;&lt;span style="color:#8b0000"&gt;/NWActionConfig/Parameters/Parameter[@Name='Password']/PrimitiveValue/@Value&lt;/span&gt;&amp;quot;).text);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}&lt;/pre&gt;&lt;/pre&gt;
&lt;li&gt;Add the javacsript to write the current value set using the TPAWriteConfig method&lt;br&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;function&lt;/span&gt; TPAWriteConfig() {          
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    EnsurePrimitiveValueNode(configXml, &amp;quot;&lt;span style="color:#8b0000"&gt;Username&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    EnsurePrimitiveValueNode(configXml, &amp;quot;&lt;span style="color:#8b0000"&gt;Password&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    configXml.selectSingleNode(&amp;quot;&lt;span style="color:#8b0000"&gt;/NWActionConfig/Parameters/Parameter[@Name='Username']/PrimitiveValue/@Value&lt;/span&gt;&amp;quot;).text = cc_getUsername(&amp;quot;&lt;span style="color:#8b0000"&gt;&amp;lt;%= credentialPicker.ClientID %&amp;gt;&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    configXml.selectSingleNode(&amp;quot;&lt;span style="color:#8b0000"&gt;/NWActionConfig/Parameters/Parameter[@Name='Password']/PrimitiveValue/@Value&lt;/span&gt;&amp;quot;).text = cc_getPassword(&amp;quot;&lt;span style="color:#8b0000"&gt;&amp;lt;%= credentialPicker.ClientID %&amp;gt;&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff"&gt;true&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}&lt;/pre&gt;&lt;/pre&gt;
&lt;li&gt;And then we add the UserControl in the ContentPlaceHolder&lt;br&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt; &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#c71585"&gt;Nintex&lt;/span&gt;:&lt;span style="color:#800000"&gt;CredentialControl&lt;/span&gt; &lt;span style="color:#ff0000"&gt;RequiredField&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;DisplayMode&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;dialog&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;CssClass&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;ms-input&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#ff0000"&gt;Width&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;170px&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;id&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;credentialPicker&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#c71585"&gt;Nintex&lt;/span&gt;:&lt;span style="color:#800000"&gt;CredentialControl&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;li&gt;To get the credentials in codebehind in the CodeActivity use this&lt;/li&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;string&lt;/span&gt; runtimeUsername = &lt;span style="color:#0000ff"&gt;string&lt;/span&gt;.Empty;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;string&lt;/span&gt; runtimePassword = &lt;span style="color:#0000ff"&gt;string&lt;/span&gt;.Empty;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;CredentialValue.DetermineRuntimeCredentials(
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.Username, &lt;span style="color:#008000"&gt;//UserName Property&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.Password,  &lt;span style="color:#008000"&gt;//Password Property&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;out&lt;/span&gt; runtimeUsername, 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;out&lt;/span&gt; runtimePassword, 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;ctx.Web.ID, 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;ctx.Web.Site.ID);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;NetworkCredential credentials = &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (runtimeUsername.Contains(@&amp;quot;&lt;span style="color:#8b0000"&gt;\&lt;/span&gt;&amp;quot;))
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   &lt;span style="color:#0000ff"&gt;string&lt;/span&gt;[] strArray = 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        runtimeUsername.Split(&lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#0000ff"&gt;char&lt;/span&gt;[] { '\\' });
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   credentials = 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; NetworkCredential(strArray[1], runtimePassword, strArray[0]);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;else&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   credentials = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; NetworkCredential(runtimeUsername, runtimePassword);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}&lt;/pre&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ol&gt;&lt;pre&gt; &lt;/pre&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:84ca7149-af29-4965-84fd-60b86a5768b7" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SharePoint" rel="tag"&gt;SharePoint&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Nintex" rel="tag"&gt;Nintex&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Workflow" rel="tag"&gt;Workflow&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=itL1R1OxPm4:5e_csdfBjwo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=itL1R1OxPm4:5e_csdfBjwo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=itL1R1OxPm4:5e_csdfBjwo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=itL1R1OxPm4:5e_csdfBjwo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=itL1R1OxPm4:5e_csdfBjwo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=itL1R1OxPm4:5e_csdfBjwo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/itL1R1OxPm4" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/MZ_4FkElHxA" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Fri, 25 Sep 2009 15:04:04 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/09/25/building-a-custom-nintex-workflow-activity-using-the-credentialpicker.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/itL1R1OxPm4/building-a-custom-nintex-workflow-activity-using-the-credentialpicker.aspx</feedburner:origLink></item><item><title>Building a custom Nintex Workflow Activity</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/IRsZ5MX7kbw/building-a-custom-nintex-workflow-activity.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/09/16/building-a-custom-nintex-workflow-activity.aspx</guid><description>&lt;div class="ExternalClass25354E4BC197484DADA8184B349DE4C1"&gt;&lt;p&gt;In the past I’ve created custom workflow activities for SPD (&lt;a title="SPD Workflow activity - Copying a listItem accros a site" href="http://glorix.blogspot.com/2007/03/spd-workflow-activity-copying-listitem.html"&gt;SPD Workflow activity - Copying a listItem accros a site&lt;/a&gt; &amp;amp; &lt;a title="SPD Workflow activity - Creating a document library" href="http://glorix.blogspot.com/2007/03/spd-workflow-activity-creating-document.html"&gt;SPD Workflow activity - Creating a document library&lt;/a&gt;) and now the time came to develop some activities for Nintex Workflow! Basically it’s just the same as building a activity for SPD only with Nintex you also need to include some other things like&lt;/p&gt; &lt;ul&gt; &lt;li&gt;UI page, so that users can configure your activity.  &lt;li&gt;GenericRenderingAdapter, this sits between the UI page and the Activity itself.&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;To get all the details about this I can recommend to download the &lt;a href="http://connect.nintex.com/files/folders/sdk/entry122.aspx"&gt;Nintex SDK&lt;/a&gt; and find out for yourself how this all works. This post is about what I couldn’t find in the SDK ;) &lt;/p&gt; &lt;p&gt;The activity will &lt;strong&gt;set an alert to a specific list for a specific user. &lt;/strong&gt;So to do this I need two controls, a dropdown that holds all the lists from the current web and a PeoplePicker.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Dropdown &amp;lt;asp:DropDownList ID=&amp;quot;uxLists&amp;quot; runat=&amp;quot;server” /&amp;gt;  &lt;li&gt;PeoplePicker &amp;lt;Nintex:UserChooserWebControl id=&amp;quot;uxUser&amp;quot; multiselect=&amp;quot;false&amp;quot; SelectionSet=&amp;quot;User&amp;quot; AllowExternalEmailAddresses=&amp;quot;False&amp;quot; runat=&amp;quot;server&amp;quot; /&amp;gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The first thing to keep in mind, is the getting and setting of the properties of your activity is done using javascript. In general, every Nintex page has the following two javascript functions where you get and set the values of the controls on the page : “TPARetrieveConfig” and “TPAWriteConfig” . &lt;/p&gt; &lt;p&gt;Here is how the “TPARetrieveConfig” looks like:&lt;/p&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;function&lt;/span&gt; TPARetrieveConfig() {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#008000"&gt;//Get the selected item from the Config Store&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;var&lt;/span&gt; listNameOrId = configXml.selectSingleNode(&amp;quot;&lt;span style="color:#8b0000"&gt;/NWActionConfig/Parameters/Parameter[@Name='ListGuid']/PrimitiveValue/@Value&lt;/span&gt;&amp;quot;).text;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#008000"&gt;//Get a reference to the DropDownList&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;var&lt;/span&gt; uxLists = &lt;span style="color:#0000ff"&gt;document&lt;/span&gt;.getElementById(&amp;quot;&lt;span style="color:#8b0000"&gt;&amp;lt;%= uxLists.ClientID %&amp;gt;&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#008000"&gt;//Set the DropDownList 'selected' item to the stored value&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    uxLists.value = listNameOrId;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (uxLists.selectedIndex == -1) {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#008000"&gt;// its a newer action where the title instead of the id is stored&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;for&lt;/span&gt; (&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; x = 0; x &amp;lt; uxLists.options.&lt;span style="color:#0000ff"&gt;length&lt;/span&gt;; x++) {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (uxLists.options[x].text == listNameOrId) {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                uxLists.selectedIndex = x;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                &lt;span style="color:#0000ff"&gt;break&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#008000"&gt;//Defining a new function to retrieve the stored value and setting the PeoplePicker&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;var&lt;/span&gt; getUsers = &lt;span style="color:#0000ff"&gt;function&lt;/span&gt;() {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (configXml.selectSingleNode(&amp;quot;&lt;span style="color:#8b0000"&gt;/NWActionConfig/Parameters/Parameter[@Name='PrimaryUser']/PrimitiveValue/@Value&lt;/span&gt;&amp;quot;) != &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;) {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            setPeopleEditorDisplayText(&amp;quot;&lt;span style="color:#8b0000"&gt;&amp;lt;%= uxUser.ClientID %&amp;gt;&lt;/span&gt;&amp;quot;, 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            configXml.selectSingleNode(&amp;quot;&lt;span style="color:#8b0000"&gt;/NWActionConfig/Parameters/Parameter[@Name='PrimaryUser']/PrimitiveValue/@Value&lt;/span&gt;&amp;quot;).text);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#008000"&gt;//This bit is very important, if you don't do this the value of the control will be empty&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;window&lt;/span&gt;.attachEvent(&amp;quot;&lt;span style="color:#8b0000"&gt;onload&lt;/span&gt;&amp;quot;, getUsers);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;And here is how the “TPAWriteConfig” looks like :&lt;/p&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;function&lt;/span&gt; TPAWriteConfig() {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#008000"&gt;//Setting the ConfigStore with the selectedItem of the DropDownList&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    configXml.selectSingleNode(&amp;quot;&lt;span style="color:#8b0000"&gt;/NWActionConfig/Parameters/Parameter[@Name='ListGuid']/PrimitiveValue/@Value&lt;/span&gt;&amp;quot;).text = &lt;span style="color:#0000ff"&gt;document&lt;/span&gt;.getElementById(&amp;quot;&lt;span style="color:#8b0000"&gt;&amp;lt;%= uxLists.ClientID %&amp;gt;&lt;/span&gt;&amp;quot;).value;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#008000"&gt;//Setting the ConfigStore with the selected and validated user&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    EnsurePrimitiveValueNode(configXml, &amp;quot;&lt;span style="color:#8b0000"&gt;PrimaryUser&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    peopleEditorCheckNames(&amp;quot;&lt;span style="color:#8b0000"&gt;&amp;lt;%=uxUser.ClientID %&amp;gt;&lt;/span&gt;&amp;quot;)
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    configXml.selectSingleNode(&amp;quot;&lt;span style="color:#8b0000"&gt;/NWActionConfig/Parameters/Parameter[@Name='PrimaryUser']/PrimitiveValue/@Value&lt;/span&gt;&amp;quot;).text = getUsersFromPeopleEditor(&amp;quot;&lt;span style="color:#8b0000"&gt;&amp;lt;%=uxUser.ClientID %&amp;gt;&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff"&gt;true&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;With this markup it will be rendered as if it was a out-of-the-box Nintex Activity ;)&lt;/p&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#c71585"&gt;asp&lt;/span&gt;:&lt;span style="color:#800000"&gt;Content&lt;/span&gt; &lt;span style="color:#ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;ContentBody&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;ContentPlaceHolderID&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;NintexPropertyPlaceHolder&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;Server&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;     &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;div&lt;/span&gt; &lt;span style="color:#ff0000"&gt;class&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;RowBlue&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;table&lt;/span&gt; &lt;span style="color:#ff0000"&gt;border&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;cellspacing&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;cellpadding&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;0&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;tr&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;td&lt;/span&gt; &lt;span style="color:#ff0000"&gt;valign&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;top&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;span&lt;/span&gt; &lt;span style="color:#ff0000"&gt;class&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;label req&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                        Select List
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                    &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000"&gt;span&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000"&gt;td&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;td&lt;/span&gt; &lt;span style="color:#ff0000"&gt;valign&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;top&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;class&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;inputWidth&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;style&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;width: 340px;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#c71585"&gt;asp&lt;/span&gt;:&lt;span style="color:#800000"&gt;DropDownList&lt;/span&gt; &lt;span style="color:#ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;uxLists&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000"&gt;td&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000"&gt;tr&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000"&gt;table&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000"&gt;div&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;div&lt;/span&gt; &lt;span style="color:#ff0000"&gt;class&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;RowBlue&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;table&lt;/span&gt; &lt;span style="color:#ff0000"&gt;border&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;cellspacing&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;cellpadding&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;0&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;tr&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;td&lt;/span&gt; &lt;span style="color:#ff0000"&gt;valign&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;top&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;span&lt;/span&gt; &lt;span style="color:#ff0000"&gt;class&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;label req&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                        Primary Owner
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                    &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000"&gt;span&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000"&gt;td&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;td&lt;/span&gt; &lt;span style="color:#ff0000"&gt;valign&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;top&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;class&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;inputWidth&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;style&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;width: 340px;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                	&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#c71585"&gt;Nintex&lt;/span&gt;:&lt;span style="color:#800000"&gt;UserChooserWebControl&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                	    &lt;span style="color:#ff0000"&gt;id&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;uxUser&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                	    &lt;span style="color:#ff0000"&gt;multiselect&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                	    &lt;span style="color:#ff0000"&gt;SelectionSet&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;User&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                	    &lt;span style="color:#ff0000"&gt;AllowExternalEmailAddresses&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;False&amp;quot;&lt;/span&gt;                  	    
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                	    &lt;span style="color:#ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;/&amp;gt;&lt;/span&gt;                	             
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000"&gt;td&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000"&gt;tr&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000"&gt;table&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000"&gt;div&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;    
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#c71585"&gt;asp&lt;/span&gt;:&lt;span style="color:#800000"&gt;Content&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;That’s it.. and for me, to get and set the values of the controls on the dialog page actually was the hardest part. &lt;/p&gt;
&lt;p&gt;I’m currently investigating how to re-use the CredentialControl to create activities that can be used with ‘elevated’ permissions, that would be nice eh? ;)&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7d4979d5-a4f6-4f7e-a4e6-07ac15eb6733" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SharePoint" rel="tag"&gt;SharePoint&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Nintex" rel="tag"&gt;Nintex&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Workflow" rel="tag"&gt;Workflow&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=MEczs-iojV8:A7hjOZr4M9s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=MEczs-iojV8:A7hjOZr4M9s:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=MEczs-iojV8:A7hjOZr4M9s:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=MEczs-iojV8:A7hjOZr4M9s:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=MEczs-iojV8:A7hjOZr4M9s:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=MEczs-iojV8:A7hjOZr4M9s:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/MEczs-iojV8" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/IRsZ5MX7kbw" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Wed, 16 Sep 2009 13:47:22 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/09/16/building-a-custom-nintex-workflow-activity.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/MEczs-iojV8/building-a-custom-nintex-workflow-activity.aspx</feedburner:origLink></item><item><title>Little blackbox called WebConfigModifications</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/Asn_tUK33ec/little-blackbox-called-webconfigmodifications.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/09/02/little-blackbox-called-webconfigmodifications.aspx</guid><description>&lt;div class="ExternalClass365887A4453240CBA2E6C885A36EDAEA"&gt;&lt;p&gt;Some things in SharePoint are pretty hard to gain insight on, especially while doing support, and in my opinion the WebConfigModifications is really one of them. &lt;/p&gt; &lt;p&gt;Why? Well.. if something is not right in there it could crash your WebApplication and there is not much you (as an admin) can do about it right? &lt;/p&gt; &lt;p&gt;Even we as developers have a hard time of getting this right. So that’s why I’ve developed YAAP (Yet Another Application Page) that displays per WebApplication what all the WebConfigModifications are and the best thing is.. you can delete a modification as well (bet you didn’t see that one coming ;) !&lt;/p&gt; &lt;p&gt;Here’s how it looks like :&lt;/p&gt; &lt;p&gt;&lt;a href="http://community.zevenseas.com/Blogs/Robin/Lists/Photos/webconfigmodifications.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="webconfigmodifications" border="0" alt="webconfigmodifications" src="http://community.zevenseas.com/Blogs/Robin/Lists/Photos/webconfigmodifications.png" width="640" height="159"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;And here’s the code &lt;/p&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;class&lt;/span&gt; Settings : ApplicationsManagementPage
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;protected&lt;/span&gt; SPGridView gridView;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;protected&lt;/span&gt; WebApplicationSelector webApplicationSelector;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; CreateChildControls()
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (webApplicationSelector != &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;)
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            SPWebApplication webApplication = webApplicationSelector.CurrentItem;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            gridView.DataSource = GetAllWebConfigModifications();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            gridView.DataBind();
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        }            
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;base&lt;/span&gt;.CreateChildControls();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;           
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; DeleteLink(&lt;span style="color:#0000ff"&gt;object&lt;/span&gt; sender, EventArgs e)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;foreach&lt;/span&gt; (&lt;span style="color:#0000ff"&gt;string&lt;/span&gt; modificationid &lt;span style="color:#0000ff"&gt;in&lt;/span&gt; RetrieveIDs())
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (!&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;.IsNullOrEmpty(modificationid))
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                DeleteModification(&lt;span style="color:#0000ff"&gt;int&lt;/span&gt;.Parse(modificationid));
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt;[] RetrieveIDs()
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;string&lt;/span&gt;[] modificationIds = &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;p&gt;        &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (((&lt;span style="color:#0000ff"&gt;base&lt;/span&gt;.Request != &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;) &amp;amp;&amp;amp; (&lt;span style="color:#0000ff"&gt;base&lt;/span&gt;.Request[&amp;quot;&lt;span style="color:#8b0000"&gt;ctl00$PlaceHolderMain$HiddenSiteSelections&lt;/span&gt;&amp;quot;] != &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;)) &lt;/p&gt;&lt;p&gt;              &amp;amp;&amp;amp; !&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;.IsNullOrEmpty(&lt;span style="color:#0000ff"&gt;base&lt;/span&gt;.Request[&amp;quot;&lt;span style="color:#8b0000"&gt;ctl00$PlaceHolderMain$HiddenSiteSelections&lt;/span&gt;&amp;quot;]))
&lt;/p&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;p&gt;            modificationIds = &lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;         &lt;span style="color:#0000ff"&gt;base&lt;/span&gt;.Request[&amp;quot;&lt;span style="color:#8b0000"&gt;ctl00$PlaceHolderMain$HiddenSiteSelections&lt;/span&gt;&amp;quot;].ToString().Split(&lt;span style="color:#0000ff"&gt;new&lt;/span&gt; Char[] { '#' });
&lt;/p&gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; modificationIds;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;private&lt;/span&gt; DataTable GetAllWebConfigModifications()
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#008000"&gt;//I make use of a DataTable to add an indexer to each SPWebConfigModification object, &lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#008000"&gt;//by making use of an indexer I make sure that whenever there are multiple entries that &lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#008000"&gt;//are the same I remove the right one&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        DataTable dataTable = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; DataTable();
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        dataTable.Columns.Add(&amp;quot;&lt;span style="color:#8b0000"&gt;Id&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        dataTable.Columns.Add(&amp;quot;&lt;span style="color:#8b0000"&gt;Name&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        dataTable.Columns.Add(&amp;quot;&lt;span style="color:#8b0000"&gt;Path&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        dataTable.Columns.Add(&amp;quot;&lt;span style="color:#8b0000"&gt;Owner&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        dataTable.Columns.Add(&amp;quot;&lt;span style="color:#8b0000"&gt;Sequence&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        dataTable.Columns.Add(&amp;quot;&lt;span style="color:#8b0000"&gt;Type&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        dataTable.Columns.Add(&amp;quot;&lt;span style="color:#8b0000"&gt;Value&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;int&lt;/span&gt; webConfigModificationId = 1;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;foreach&lt;/span&gt; (SPWebConfigModification modification &lt;span style="color:#0000ff"&gt;in&lt;/span&gt; webApplicationSelector.CurrentItem.WebConfigModifications)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        {                
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            DataRow row = dataTable.NewRow();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            row[&amp;quot;&lt;span style="color:#8b0000"&gt;Id&lt;/span&gt;&amp;quot;] = webConfigModificationId.ToString();
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            row[&amp;quot;&lt;span style="color:#8b0000"&gt;Name&lt;/span&gt;&amp;quot;] = modification.Name;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            row[&amp;quot;&lt;span style="color:#8b0000"&gt;Path&lt;/span&gt;&amp;quot;] = modification.Path;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            row[&amp;quot;&lt;span style="color:#8b0000"&gt;Owner&lt;/span&gt;&amp;quot;] = modification.Owner;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            row[&amp;quot;&lt;span style="color:#8b0000"&gt;Sequence&lt;/span&gt;&amp;quot;] = modification.Sequence;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            row[&amp;quot;&lt;span style="color:#8b0000"&gt;Type&lt;/span&gt;&amp;quot;] = modification.Type;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            row[&amp;quot;&lt;span style="color:#8b0000"&gt;Value&lt;/span&gt;&amp;quot;] = modification.Value;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            dataTable.Rows.Add(row);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            webConfigModificationId++;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; dataTable;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; DeleteModification(&lt;span style="color:#0000ff"&gt;int&lt;/span&gt; modificationId)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        DataTable modifications = GetAllWebConfigModifications();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        SPWebApplication webApplication = webApplicationSelector.CurrentItem;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        webApplication.WebConfigModifications.RemoveAt(modificationId);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        webApplication.Update();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        webApplication.Farm.Services.GetValue&amp;lt;SPWebService&amp;gt;().ApplyWebConfigModifications(); 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;And that’s it! Hopefully this will help someone out ;) &lt;/p&gt;
&lt;p&gt;Will put the solution up on CodePlex this week so you can download it and see for yourself what all the modifications are in for your WebApplications!&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=Osqv_s4H3n8:FIt8_6sx1lg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=Osqv_s4H3n8:FIt8_6sx1lg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=Osqv_s4H3n8:FIt8_6sx1lg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=Osqv_s4H3n8:FIt8_6sx1lg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=Osqv_s4H3n8:FIt8_6sx1lg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=Osqv_s4H3n8:FIt8_6sx1lg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/Osqv_s4H3n8" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/Asn_tUK33ec" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Wed, 02 Sep 2009 09:00:20 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/09/02/little-blackbox-called-webconfigmodifications.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/Osqv_s4H3n8/little-blackbox-called-webconfigmodifications.aspx</feedburner:origLink></item><item><title>zsThemes explained!</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/K9qbfhYYxnk/zsthemes-explained.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/08/24/zsthemes-explained.aspx</guid><description>&lt;div class="ExternalClassD542AE6268FA4802B281A2CDCCB71C5D"&gt;&lt;p&gt;This post is about how the solution as described in a previous post called &lt;a title="Adding Themes the supported way!" href="http://community.zevenseas.com/Blogs/Robin/archive/2009/08/03/adding-themes-the-supported-way.aspx"&gt;Adding Themes the supported way!&lt;/a&gt; actually works.&lt;/p&gt; &lt;p&gt;First of all, I wanted to get themes per WebApplication. To achieve this, I created three extension methods for the SPWebApplication class that do the following:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;GetDefaultThemes, this method retrieves all the Themes that are defined in the SPThemes.xml  &lt;ul&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;static&lt;/span&gt; DataView GetDefault()
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; filePath = String.Format(&amp;quot;&lt;span style="color:#8b0000"&gt;{0}\\LAYOUTS\\1033\\SPThemes.xml&lt;/span&gt;&amp;quot;, SPUtility.GetGenericSetupPath(&amp;quot;&lt;span style="color:#8b0000"&gt;TEMPLATE&lt;/span&gt;&amp;quot;));
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    SPThemes spThemes = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; SPThemes();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    spThemes.DataSetName = &amp;quot;&lt;span style="color:#8b0000"&gt;SPThemes&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    spThemes.Locale = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; CultureInfo(&amp;quot;&lt;span style="color:#8b0000"&gt;en-US&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    spThemes.Namespace = &amp;quot;&lt;span style="color:#8b0000"&gt;http://tempuri.org/SPThemes.xsd&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    spThemes.ReadXml(filePath);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    DataView view = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; DataView(spThemes.Tables[0]);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    view.Sort = &amp;quot;&lt;span style="color:#8b0000"&gt;DisplayName&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; view;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}&lt;/pre&gt;&lt;/pre&gt;&lt;/ul&gt;
&lt;li&gt;GetCustomThemes, this method retrieves all the custom themes 
&lt;ul&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;static&lt;/span&gt; DataView GetCustom(SPWebApplication webApplication)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    List&amp;lt;&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;&amp;gt; filePaths = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; List&amp;lt;&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;&amp;gt;();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    filePaths = GetOtherXmlDefinitions(webApplication);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    DataTable dataTable = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; DataTable();
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    dataTable = ProcessOtherXmlDefinitions(filePaths);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; DataView(dataTable);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;static&lt;/span&gt; List&amp;lt;&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;&amp;gt; GetOtherXmlDefinitions(SPWebApplication webApplication)
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    List&amp;lt;&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;&amp;gt; filePaths = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; List&amp;lt;&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;&amp;gt;();
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    ThemesXmlFileLocations themeFileLocations = webApplication.GetChild&amp;lt;ThemesXmlFileLocations&amp;gt;(&amp;quot;&lt;span style="color:#8b0000"&gt;ThemesXmlFileLocations&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (themeFileLocations != &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    {                
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        filePaths = themeFileLocations.FilePaths;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; filePaths;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;static&lt;/span&gt; DataTable ProcessOtherXmlDefinitions(List&amp;lt;&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;&amp;gt; filePaths)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    DataTable dataTable = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; DataTable();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;foreach&lt;/span&gt; (&lt;span style="color:#0000ff"&gt;string&lt;/span&gt; filePath &lt;span style="color:#0000ff"&gt;in&lt;/span&gt; filePaths)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (!&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;.IsNullOrEmpty(filePath))
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; customFilePath = SPUtility.GetGenericSetupPath(filePath);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            SPThemes spThemes = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; SPThemes();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            spThemes.DataSetName = &amp;quot;&lt;span style="color:#8b0000"&gt;SPThemes&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            spThemes.Locale = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; CultureInfo(&amp;quot;&lt;span style="color:#8b0000"&gt;en-US&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            spThemes.Namespace = &amp;quot;&lt;span style="color:#8b0000"&gt;http://tempuri.org/SPThemes.xsd&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            spThemes.ReadXml(customFilePath);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            dataTable = spThemes.Tables[0].Clone();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            &lt;span style="color:#0000ff"&gt;foreach&lt;/span&gt; (DataRow row &lt;span style="color:#0000ff"&gt;in&lt;/span&gt; spThemes.Tables[0].Rows)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                DataRow customThemeRow = dataTable.NewRow();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                customThemeRow.ItemArray = row.ItemArray;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                dataTable.Rows.Add(customThemeRow);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; dataTable;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}&lt;/pre&gt;&lt;/pre&gt;&lt;/ul&gt;
&lt;li&gt;GetAllThemes, as the name suggests, this method gets all the Themes and merges the above.&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Secondly I needed to add custom themes without touching the SPThemes.xml file.  As you may have noticed I make use of a custom persistent object called “ThemeXmlFileLocations”. This object only has one field which is a generic list of strings. This list holds all the filelocations which are added. So with each filelocation, I look in the custom .xml file and add the custom themes to the datatable as you can see in the “ProcessOtherXmlDefinitions” method above. This is, basically, &lt;strong&gt;the&lt;/strong&gt; trick to add themes without touching the core SPThemes.xml file. So here below is the persistence class:&lt;/p&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;class&lt;/span&gt; ThemesXmlFileLocations : SPPersistedObject
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    [Persisted]
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; List&amp;lt;&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;&amp;gt; FilePaths;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; ThemesXmlFileLocations() { }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; ThemesXmlFileLocations(&lt;span style="color:#0000ff"&gt;string&lt;/span&gt; name, SPPersistedObject parent, Guid id) : &lt;span style="color:#0000ff"&gt;base&lt;/span&gt;(name, parent, id) { }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;I don’t it’s really necessary to put the code up here to show you how you can add a filelocation string to the list of the class eh? :)&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Thirdly I needed to create a custom ThemeSelection page so all the other themes are also presented to the user. To do that, I copied the out-of-the-box page and in the codebehind put some more logic to &lt;/p&gt;
&lt;p&gt;a) Get all the themes that are installed in the current WebApplication by making use of my extension methods&lt;/p&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;DataTable allThemesTable = 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;p&gt;SPContext.Current.Site.WebApplication.GetAllThemes().ToTable();&lt;/p&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;br&gt;
&lt;p&gt;b) Filter the themes if they are blocked by an administrator&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;I also want to note and be clear about is that adding themes this way and choosing them only works by making use of a &lt;strong&gt;custom&lt;/strong&gt; application page that replaces the out-of-the-box themeselection page. Meaning that users can still navigate to the out-of-the-box one and miss out on the custom and/or blocked themes. &lt;/p&gt;
&lt;p&gt;So I hope the code makes more sense..  as said before, the code is available &lt;a href="http://zsthemes.codeplex.com/"&gt;CodePlex&lt;/a&gt; for you to check out! ;)&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=QhRGB4T8Mnc:vN3cDXmy8zI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=QhRGB4T8Mnc:vN3cDXmy8zI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=QhRGB4T8Mnc:vN3cDXmy8zI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=QhRGB4T8Mnc:vN3cDXmy8zI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=QhRGB4T8Mnc:vN3cDXmy8zI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=QhRGB4T8Mnc:vN3cDXmy8zI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/QhRGB4T8Mnc" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/K9qbfhYYxnk" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Mon, 24 Aug 2009 14:20:09 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/08/24/zsthemes-explained.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/QhRGB4T8Mnc/zsthemes-explained.aspx</feedburner:origLink></item><item><title>Using the PageViewerWebPart to show a list or document library as a ListViewWebPart</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/yQSwnfU7v3w/using-the-pageviewerwebpart-to-show-a-list-or-document-library-as-a-listviewwebpart.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/08/24/using-the-pageviewerwebpart-to-show-a-list-or-document-library-as-a-listviewwebpart.aspx</guid><description>&lt;div class="ExternalClass39AD1D6D274E43C1B13572E1C375E8DF"&gt;&lt;p&gt;@brianreeves was wondering how my buddy &lt;a href="http://www.bariswanschers.com"&gt;Baris&lt;/a&gt; had used a PageViewer WebPart to display a List/DocumentLibrary like a ListViewWebPart in his &lt;a href="http://www.bariswanschers.com/automatically-resizing-sharepoint-page-viewer-web-part-its-content"&gt;Automatically resizing Sharepoint Page Viewer Web Part to its content&lt;/a&gt; post. The idea behind this solution was to show a list or document library from a collaboration environment on a publishing environment. &lt;/p&gt; &lt;p&gt;So by giving the Url of a view of a list/documentlibrary the PageViewerWP displays the contents of that view. But when giving the Url you only want to see the contents as a ListViewWebPart and not the complete page right? &lt;/p&gt; &lt;p&gt;To achieve this I created a solution that does the following :&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Added custom action to lists and document libraries that makes a copy of a selected View&lt;/li&gt; &lt;ol&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;private&lt;/span&gt; Guid CreatePublishingView(SPWeb web, Guid listGuid, Guid viewGuid)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;{            
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    SPList list = web.Lists[listGuid];
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    SPView originalView = list.Views[viewGuid];
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    SPView publishingView = originalView.Clone(&amp;quot;&lt;span style="color:#8b0000"&gt;Publishing&lt;/span&gt;&amp;quot; + originalView.Title, originalView.RowLimit, originalView.Paged, &lt;span style="color:#0000ff"&gt;false&lt;/span&gt;);                     
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    publishingView.Update();
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    list.Update();
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; publishingView.ID;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}      &lt;/pre&gt;&lt;/pre&gt;&lt;/ol&gt;
&lt;li&gt;While making the copy, I open up the .aspx page that is created and replace the referenced masterpage&lt;/li&gt;
&lt;ol&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; EditViewPage(SPWeb web, Guid listGuid, Guid publishingViewGuid)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#008000"&gt;//Get a reference to the list and the choosen view&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    SPList list = web.Lists[listGuid];            
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    SPView publishingView = list.Views[publishingViewGuid];
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#008000"&gt;//Get a reference to the actual .aspx page of the view&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    SPFile file = web.GetFile(publishingView.ServerRelativeUrl);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#008000"&gt;//Opening the .aspx&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    System.IO.StreamReader streamReader = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; System.IO.StreamReader(file.OpenBinaryStream());
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; fileInStream = streamReader.ReadToEnd();
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    streamReader.Close();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#008000"&gt;//doing a string replacement of the masterpage&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; oldMasterPage = &amp;quot;&lt;span style="color:#8b0000"&gt;MasterPageFile=\&amp;quot;~masterurl/default.master\&amp;quot;&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; newMasterPage = &amp;quot;&lt;span style="color:#8b0000"&gt;MasterPageFile=\&amp;quot;~site/empty.master\&amp;quot;&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#008000"&gt;//saving the .aspx back to the file object and perform an update&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    fileInStream = fileInStream.Replace(oldMasterPage, newMasterPage);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    ASCIIEncoding asciiEncoder = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; ASCIIEncoding();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    file.SaveBinary(asciiEncoder.GetBytes(fileInStream));
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    file.Update();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}&lt;/pre&gt;&lt;/pre&gt;&lt;/ol&gt;
&lt;li&gt;Copying the empty.master file to the Web where the List or Document Library is at&lt;/li&gt;
&lt;ol&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; AddPageToFormLibrary(SPWeb web, Guid listGuid, SPFolder folder, &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; fileName)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;try&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#008000"&gt;//Getting the folder where the custom .browser file is&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; filePath = String.Format(&amp;quot;&lt;span style="color:#8b0000"&gt;{0}\\FEATURES\\{1}\\{2}&lt;/span&gt;&amp;quot;, SPUtility.GetGenericSetupPath(&amp;quot;&lt;span style="color:#8b0000"&gt;Template&lt;/span&gt;&amp;quot;), featureName, fileName);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        FileInfo fi = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; FileInfo(filePath);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;byte&lt;/span&gt;[] byt = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#0000ff"&gt;byte&lt;/span&gt;[Convert.ToInt32(fi.Length)];
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        FileStream strm = fi.OpenRead();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        strm.Read(byt, 0, Convert.ToInt32(fi.Length));
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        strm.Close();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        folder.Files.Add(fi.Name, byt, &lt;span style="color:#0000ff"&gt;true&lt;/span&gt;);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;catch&lt;/span&gt; (Exception error)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        SPUtility.TransferToErrorPage(&amp;quot;&lt;span style="color:#8b0000"&gt;Adding Page to Library failed due to :&lt;/span&gt;&amp;quot; + error.Message.ToString());
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;} &lt;/pre&gt;&lt;/pre&gt;&lt;/ol&gt;
&lt;li&gt;And that’s it! Now we have a View that looks like a ListViewWebPart so we only have copy the Url of this view and use it in a PageViewerWebPart and we’re done! So the beauty of this is the user is able to modify the view just as a .. a view.. ;)&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;I hope this makes sense and I have to admit that it looks a bit hacky.. Let me know if you want to see how the empty.master looks like!&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=bo0LGJ1tDXY:p82Hw9yCmRY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=bo0LGJ1tDXY:p82Hw9yCmRY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=bo0LGJ1tDXY:p82Hw9yCmRY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=bo0LGJ1tDXY:p82Hw9yCmRY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=bo0LGJ1tDXY:p82Hw9yCmRY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=bo0LGJ1tDXY:p82Hw9yCmRY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/bo0LGJ1tDXY" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/yQSwnfU7v3w" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Mon, 24 Aug 2009 08:48:22 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/08/24/using-the-pageviewerwebpart-to-show-a-list-or-document-library-as-a-listviewwebpart.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/bo0LGJ1tDXY/using-the-pageviewerwebpart-to-show-a-list-or-document-library-as-a-listviewwebpart.aspx</feedburner:origLink></item><item><title>Troubleshooting : An unexpected error occurred while connecting to the report server. Verify that the report server is available and configured for SharePoint integrated mode.</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/PSTZ-AyWZ00/troubleshooting-an-unexpected-error-occurred-while-connecting-to-the-report-server-verify-that-the-report-server-is-available-and-configured-for-sharepoint-integrated-mode-.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/08/07/troubleshooting-an-unexpected-error-occurred-while-connecting-to-the-report-server-verify-that-the-report-server-is-available-and-configured-for-sharepoint-integrated-mode-.aspx</guid><description>&lt;div class="ExternalClassDCF1289E5448423D8E90DA239FD18658"&gt;&lt;p&gt;At a customer we were faced with this error and very quickly we found out it was only certain WFE’s which were causing the issue. So given the following scenario&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Server A : WFE  &lt;li&gt;Server B : WFE  &lt;li&gt;Server C : WFE + Index + Central Admin&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;It was working like a charm when were accessing the SharePoint environment using Server C (by manually editing the host file of our client desktop) and it failed to work if we pointed to Server A and Server B. That was quite weird.. it seemed, while looking at the error, that the WFE’s couldn’t connect to the ReportServer. So while logged on remotely on Server A and Server B, the ReportServer was working and was accessible through each WFE. &lt;/p&gt; &lt;p&gt;Then we thought.. wait a minute.. what’s so different between Server A &amp;amp; B and Server C? Well.. it’s also the Index server, meaning that SharePoint modifies the host file of the Index server so it can crawl locally. So we tried browsing, while logged on Server A and B remotely, to the SharePoint sites and we got 404’s. So it looked like that locally, SharePoint wasn’t working. We modified the hosts file each server and voila.. SharePoint worked locally on each server.&lt;/p&gt; &lt;p&gt;And guess what.. after doing this, the Reporting Services stuff started working as well! :) &lt;/p&gt; &lt;p&gt;Question of course is.. why did it work when SharePoint started working locally on the servers.. So I used Reflector to see what’s going on behind the scenes and apparently what is happening is that the RS integration stuff is using it’s local webservices to get a connection to the ReportServer. And then when the SharePoint is not accessible locally, the webservices cannot be contacted and thus there is no connection to the ReportServer. So the error is telling the truth.. in a way… :)&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=2W4mJdxONYU:TRJFz8L70cs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=2W4mJdxONYU:TRJFz8L70cs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=2W4mJdxONYU:TRJFz8L70cs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=2W4mJdxONYU:TRJFz8L70cs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=2W4mJdxONYU:TRJFz8L70cs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=2W4mJdxONYU:TRJFz8L70cs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/2W4mJdxONYU" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/PSTZ-AyWZ00" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Fri, 07 Aug 2009 09:33:00 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/08/07/troubleshooting-an-unexpected-error-occurred-while-connecting-to-the-report-server-verify-that-the-report-server-is-available-and-configured-for-sharepoint-integrated-mode-.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/2W4mJdxONYU/troubleshooting-an-unexpected-error-occurred-while-connecting-to-the-report-server-verify-that-the-report-server-is-available-and-configured-for-sharepoint-integrated-mode-.aspx</feedburner:origLink></item><item><title>Adding Themes the supported way!</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/k5Ublvy5dKY/adding-themes-the-supported-way.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/08/03/adding-themes-the-supported-way.aspx</guid><description>&lt;div class="ExternalClass71F3D89EB2C54B46B23879BE0C5E9F0A"&gt;&lt;div class="ExternalClass197DD4D86B9141E19695AE4D2B142524"&gt; &lt;p&gt;Yes! I’ve created a solution that allows you to add a theme the supported way, meaning that you don’t have to overwrite the default SPThemes.XML that resides in the LAYOUTS folder. The only thing you have to do is add the Theme to the THEMES folder and add your own custom SPThemes.XML somewhere in the 12 hive (a folder in the FEATURES folder could be a good example) and add this path to my solution and you’re done ;)&lt;/p&gt; &lt;p&gt;You might wonder how I’m achieving this.. Well I’ve created a custom .aspx page that lets you choose a theme, based on the out-of-the-box one but unlike the out-of-the-box one that only loads the SPThemes.XML file. I’ve chosen to load several XML files. Yes.. the themeweb.aspx page only loads a XML file.. it’s not getting the collection of themes out of the SPFarm or SPWebApplication object like I thought it was stored in SharePoint. The class SPThemes is just a DataSet.&lt;/p&gt; &lt;p&gt;So with a simple HideCustomAction and CustomAction element in my feature elements file. I can hide the original link to the theme select page and display my own theme selector page.&lt;/p&gt; &lt;p&gt;To add those XML files, I’ve created YAAP (Yet Another Application Page) in Central Administration to define the paths like so:&lt;/p&gt; &lt;p&gt;&lt;a href="http://community.zevenseas.com/Blogs/Robin/Lists/Photos/themepath.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://community.zevenseas.com/Blogs/Robin/Lists/Photos/themepath.png" width="640" height="390"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Then, next to adding custom themes, there’s also an option to hide certain themes from a particular WebApplication (just like my &lt;a href="http://community.zevenseas.com/blogs/robin/archive/2009/01/13/want-to-prevent-users-from-activating-certain-features.aspx"&gt;FeatureBlocker&lt;/a&gt; tool does with Features)&lt;/p&gt; &lt;p&gt;&lt;a href="http://community.zevenseas.com/Blogs/Robin/Lists/Photos/themehide.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://community.zevenseas.com/Blogs/Robin/Lists/Photos/themehide.png" width="640" height="473"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;So when opening the Theme Selection page on a web or a site it looks like this: (compare the available themes with the screenshot above)&lt;/p&gt; &lt;p&gt;&lt;a href="http://community.zevenseas.com/Blogs/Robin/Lists/Photos/themeselection.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://community.zevenseas.com/Blogs/Robin/Lists/Photos/themeselection.png" width="640" height="383"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Pretty cool eh? ;)&lt;/p&gt; &lt;p&gt;So how does it look like behind the scenes? Well, I’ve used the same source as much as possible that MS used to created the page and added a couple and replaced a couple of things.&lt;/p&gt; &lt;p&gt;To get all the XML files, instead of loading just one I’ve used this&lt;/p&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;string&lt;/span&gt; filePath = String.Format(&amp;quot;&lt;span style="color:#8b0000"&gt;{0}\\LAYOUTS\\{1}\\SPThemes.xml&lt;/span&gt;&amp;quot;, 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    SPUtility.GetGenericSetupPath(&amp;quot;&lt;span style="color:#8b0000"&gt;TEMPLATE&lt;/span&gt;&amp;quot;), 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;base&lt;/span&gt;.Web.Language.ToString(CultureInfo.InvariantCulture));
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.dsSPThemes = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; SPThemes();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.dsSPThemes.DataSetName = &amp;quot;&lt;span style="color:#8b0000"&gt;SPThemes&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.dsSPThemes.Locale = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; CultureInfo(&amp;quot;&lt;span style="color:#8b0000"&gt;en-US&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.dsSPThemes.Namespace = &amp;quot;&lt;span style="color:#8b0000"&gt;http://tempuri.org/SPThemes.xsd&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.dsSPThemes.ReadXml(filePath);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;DataView view = FilterThemes(&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.dsSPThemes.Tables[0]);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;view.Sort = &amp;quot;&lt;span style="color:#8b0000"&gt;DisplayName&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.lstTemplates.DataSource = view;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.lstTemplates.DataBind();&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;private&lt;/span&gt; DataView FilterThemes(DataTable dataTable)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    DataTable themesTable = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; DataTable();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    themesTable = dataTable.Clone();
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#008000"&gt;//Getting the custom .xml themes and load them&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    filePaths = GetOtherXmlDefinitions();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    themesTable = ProcessOtherXmlDefinitions(themesTable);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#008000"&gt;//Getting the blocked themes&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    List&amp;lt;&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;&amp;gt; templateIds = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; List&amp;lt;&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;&amp;gt;();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;p&gt;    SPWebApplication webApplication = &lt;/p&gt;&lt;p&gt;       SPWebApplication.Lookup(SPContext.Current.Site.WebApplication.GetResponseUri(SPUrlZone.Default));
&lt;/p&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    Themes themeCollection = webApplication.GetChild&amp;lt;Themes&amp;gt;(&amp;quot;&lt;span style="color:#8b0000"&gt;ThemeCollection&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (themeCollection != &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        templateIds = themeCollection.TemplateIDs;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;foreach&lt;/span&gt; (DataRow row &lt;span style="color:#0000ff"&gt;in&lt;/span&gt; dataTable.Rows)
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;bool&lt;/span&gt; isBlocked = &lt;span style="color:#0000ff"&gt;false&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;foreach&lt;/span&gt; (&lt;span style="color:#0000ff"&gt;string&lt;/span&gt; templateId &lt;span style="color:#0000ff"&gt;in&lt;/span&gt; templateIds)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (row[&amp;quot;&lt;span style="color:#8b0000"&gt;TemplateID&lt;/span&gt;&amp;quot;].ToString() == templateId)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                isBlocked = &lt;span style="color:#0000ff"&gt;true&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                &lt;span style="color:#0000ff"&gt;break&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (!isBlocked)
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            DataRow themeRow = themesTable.NewRow();
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            themeRow.ItemArray = row.ItemArray;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            themesTable.Rows.Add(themeRow);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        }                
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; (&lt;span style="color:#0000ff"&gt;new&lt;/span&gt; DataView(themesTable));
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}&lt;/pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;private&lt;/span&gt; List&amp;lt;&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;&amp;gt; GetOtherXmlDefinitions()
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    SPFarm farm = SPFarm.Local;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;p&gt;    ThemesXmlFileLocations themeFileLocations = &lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;farm.GetChild&amp;lt;ThemesXmlFileLocations&amp;gt;(&amp;quot;&lt;span style="color:#8b0000"&gt;ThemesXmlFileLocations&lt;/span&gt;&amp;quot;);
&lt;/p&gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (themeFileLocations != &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        filePaths = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; List&amp;lt;&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;&amp;gt;();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        filePaths = themeFileLocations.FilePaths;                
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; filePaths;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;private&lt;/span&gt; DataTable ProcessOtherXmlDefinitions(DataTable dataTable)
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (filePaths.Count &amp;gt; 0)
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;foreach&lt;/span&gt; (&lt;span style="color:#0000ff"&gt;string&lt;/span&gt; filePath &lt;span style="color:#0000ff"&gt;in&lt;/span&gt; filePaths)
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (!&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;.IsNullOrEmpty(filePath))
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; customFilePath = SPUtility.GetGenericSetupPath(filePath);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                SPThemes spThemes = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; SPThemes();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                spThemes.DataSetName = &amp;quot;&lt;span style="color:#8b0000"&gt;SPThemes&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                spThemes.Locale = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; CultureInfo(&amp;quot;&lt;span style="color:#8b0000"&gt;en-US&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                spThemes.Namespace = &amp;quot;&lt;span style="color:#8b0000"&gt;http://tempuri.org/SPThemes.xsd&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                spThemes.ReadXml(customFilePath);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                &lt;span style="color:#0000ff"&gt;foreach&lt;/span&gt; (DataRow row &lt;span style="color:#0000ff"&gt;in&lt;/span&gt; spThemes.Tables[0].Rows)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                    DataRow customThemeRow = dataTable.NewRow();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                    customThemeRow.ItemArray = row.ItemArray;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                    dataTable.Rows.Add(customThemeRow);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; dataTable;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;And there you have it.. let me know what you think! &lt;strike&gt;And yes.. It will be on CodePlex very shortly ;)&lt;/strike&gt;  Get it from CodePlex &lt;a href="http://zsthemes.codeplex.com"&gt;here&lt;/a&gt;! &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f10ac38a-340f-42cc-97ae-9861a20d31f6" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SharePoint" rel="tag"&gt;SharePoint&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=Zy4lQFJDHBY:wlZjytR8140:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=Zy4lQFJDHBY:wlZjytR8140:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=Zy4lQFJDHBY:wlZjytR8140:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=Zy4lQFJDHBY:wlZjytR8140:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=Zy4lQFJDHBY:wlZjytR8140:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=Zy4lQFJDHBY:wlZjytR8140:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/Zy4lQFJDHBY" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/k5Ublvy5dKY" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Mon, 03 Aug 2009 08:16:00 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/08/03/adding-themes-the-supported-way.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/Zy4lQFJDHBY/adding-themes-the-supported-way.aspx</feedburner:origLink></item><item><title>Publishing Page creation bug</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/FFE1rLuaoVU/publishing-page-creation-bug.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/07/30/publishing-page-creation-bug.aspx</guid><description>&lt;div class="ExternalClass5CD61CE12E13410B9D3975EF478F5C9F"&gt;&lt;p&gt;&lt;strong&gt;Overview&lt;/strong&gt;  &lt;p&gt;This post describes an issue with creating pages in a publishing environment using the UI.  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;  &lt;p&gt;&lt;strong&gt;Cause&lt;/strong&gt;  &lt;p&gt;Given the following scenario :  &lt;ul&gt; &lt;li&gt;RootWeb with some PageLayouts.  &lt;li&gt;Several subsites with unique permissions  &lt;ul&gt; &lt;li&gt;User A has contribute permissions on a subsite and has read/limited access on the Portal&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;User A tries to create a new page based on a Page Layout which is a Site ContentType and not yet ‘installed’ on the Pages Library. During creation the user gets the following error:  &lt;p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt; &lt;p&gt;&lt;i&gt;Object reference not set to an instance of an object. at Microsoft.SharePoint.Publishing.PublishingPage.SetContentType(SPContentType listContentType) at Microsoft.SharePoint.Publishing.PublishingPageCollection. &lt;br&gt;&amp;lt;&amp;gt;c__DisplayClass5.&amp;lt;Add&amp;gt;b__0() at Microsoft.Office.Server.Diagnostics.FirstChanceHandler.ExceptionFilter(Boolean fRethrowException, TryBlock tryBlock, FilterBlock filter, CatchBlock catchBlock, FinallyBlock finallyBlock) at Microsoft.Office.Server.Diagnostics.ULS.SendWatsonOnExceptionTag(ULSTagID tagID, ULSCat categoryID, String output, Boolean fRethrowException, TryBlock tryBlock, CatchBlock catchBlock, FinallyBlock finallyBlock) at Microsoft.SharePoint.Publishing.PublishingPageCollection.Add(String name, PageLayout layout) …&lt;/i&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;If the user tries to create the page again (by pressing F5 in the error screen), the page is successfully created. &lt;/p&gt; &lt;p&gt;If the PageLayout is already installed on the Pages Library there is no error at all and the page is created immediately.  &lt;/p&gt; &lt;p&gt;&lt;br&gt;So it seems that the error is raised when SharePoint tries to add the ContentType of the PageLayout during the creation of the page. I’ve tried to mimic these behavior using a console application with the following code :&lt;/p&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; Main(&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;[] args)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;using&lt;/span&gt; (SPSite site = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; SPSite(&amp;quot;&lt;span style="color:#8b0000"&gt;http://test/a/c/d/e&lt;/span&gt;&amp;quot;))
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    {   
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;using&lt;/span&gt; (SPWeb web = site.OpenWeb())
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            SPContentType cType = web.Site.RootWeb.ContentTypes[&amp;quot;&lt;span style="color:#8b0000"&gt;Link&lt;/span&gt;&amp;quot;];
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            SPList list = web.Lists[&amp;quot;&lt;span style="color:#8b0000"&gt;Shared Documents&lt;/span&gt;&amp;quot;];             
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            SetContentType(cType, list);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; SetContentType(SPContentType contentType, SPList list)
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    list.ContentTypes.Add(contentType);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    list.Update();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;The code breaks on the .Add of the ContentType, prompting me with the following error “Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))”  but when executing the code again I get the following message “A duplicate name &amp;quot;Contact&amp;quot; was found.” Indicating the ContentType is installed the first time when it threw the Access Denied exception. That confirms that when an user tries to create a page based on a PageLayout that was not already installed on the Pages Library the first time, the PageLayout is correctly installed the second time and thus the page get’s created. 
&lt;p&gt;  &lt;p&gt;When I change the permissions of User A to Full Control I get no error at all and everything works smoothly. 
&lt;p&gt;  &lt;p&gt;So what actually is happening, is that the PublishingPageCollection.Add method tries to add the ContentType using the current context and does not check if the user has sufficient permissions to add the ContentType to the Pages Library. 
&lt;p&gt;  &lt;p&gt;Googling on the subject gave me this &lt;a href="http://rickenberg.dk/blog/?p=52"&gt;blogpost&lt;/a&gt; by &lt;a href="http://rickenberg.dk"&gt;Bernd&lt;/a&gt; who also came across this weird behavior..   &lt;p&gt;  &lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt; 
&lt;p&gt;  &lt;p&gt;&lt;em&gt;Preventive &lt;/em&gt;  &lt;p&gt;A solution can be to add all the (relevant) PageLayouts to each Pages Library using a featurereceiver and/or a stapler to prevent the action (the add action of the ContentType by SharePoint during the creation of the Page) from happening. 
&lt;p&gt;&lt;em&gt;&lt;/em&gt;  &lt;p&gt;&lt;em&gt;Reactive&lt;/em&gt;   &lt;p&gt;A console application / timerjob / page with longoperation method that loops through every publishingWeb and adds the PageLayouts from the publishingSite to the Pages Library. 
&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=t3gxjttpfFs:dFz6JrWulJc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=t3gxjttpfFs:dFz6JrWulJc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=t3gxjttpfFs:dFz6JrWulJc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=t3gxjttpfFs:dFz6JrWulJc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=t3gxjttpfFs:dFz6JrWulJc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=t3gxjttpfFs:dFz6JrWulJc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/t3gxjttpfFs" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/FFE1rLuaoVU" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Thu, 30 Jul 2009 16:07:16 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/07/30/publishing-page-creation-bug.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/t3gxjttpfFs/publishing-page-creation-bug.aspx</feedburner:origLink></item><item><title>OperationsPage &amp; ApplicationsManagementPage</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/0SM_HqZjP84/operationspage-amp-applicationsmanagementpage.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/07/27/operationspage-amp-applicationsmanagementpage.aspx</guid><description>&lt;div class="ExternalClassAA500FDDFC0E4483884B874A33A4FE15"&gt;&lt;p&gt;One of the new things I learned when I created the &lt;a href="http://community.zevenseas.com/Blogs/Robin/archive/2009/07/24/want-to-configure-timer-jobs.aspx"&gt;TimerJobOverview&lt;/a&gt; solution was to make use of the OperationsPage class.. remember that I talked about creating ApplicationPages and that you should inherit from the LayoutsPageBase or UnsecuredLayoutsPageBase? Well in the case you are developing application pages that will only be available in the Central Admin webapp you have two more choices to choose from :&lt;/p&gt; &lt;ul&gt; &lt;li&gt;OperationsPage&lt;/li&gt; &lt;li&gt;ApplicationsManagementPage&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;I googled on this pages and found the following interesting blogpost from &lt;a href="http://blog.sharepointalist.com"&gt;Paul Shkurikhin&lt;/a&gt; called : &lt;a href="http://blog.sharepointalist.com/2009/03/moss-central-admin-application-pages-p1.html"&gt;Creating and customizing SharePoint 2007/MOSS Central Administration Application Pages&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;“.. Both &lt;i&gt;OperationsPage&lt;/i&gt; and &lt;i&gt;ApplicationsManagementPage&lt;/i&gt; classes overrides just one &lt;i&gt;PageToRedirectOnCancel&lt;/i&gt; property from &lt;i&gt;GlobalAdminPageBase&lt;/i&gt;…”&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;I was wondering when I first created my Application Pages how pages in the Application Management and Operations tab knew where to redirect to when you clicked on Cancel and this explains why.. ;) &lt;br&gt;Next to that you also get some nice properties you can set as well: &lt;ul&gt; &lt;li&gt;AccessibleBySharePointAdminGroup&lt;/li&gt; &lt;li&gt;DefaultContentDatabaseName&lt;/li&gt; &lt;li&gt;PageToRedirectOnMissingPageParameter&lt;/li&gt; &lt;li&gt;RequiredPageParameters&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;And these methods&lt;/p&gt; &lt;ul&gt; &lt;li&gt;RedirectToApplicationManagementPage&lt;/li&gt; &lt;li&gt;RedirectToOperationsPage&lt;/li&gt; &lt;li&gt;RedirectToErrorPage&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;So if you are going to create Application Pages that will reside within ApplicationManagement or the Operations tab I should recommend on using these pages and make use of the cool properties and methods that are in there!  &lt;p&gt; &lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:69796713-e198-42cf-8ee0-e23a2a0185da" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SharePoint" rel="tag"&gt;SharePoint&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=Rr5XOCge9Og:g4SFhbKJ0Kg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=Rr5XOCge9Og:g4SFhbKJ0Kg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=Rr5XOCge9Og:g4SFhbKJ0Kg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=Rr5XOCge9Og:g4SFhbKJ0Kg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=Rr5XOCge9Og:g4SFhbKJ0Kg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=Rr5XOCge9Og:g4SFhbKJ0Kg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/Rr5XOCge9Og" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/0SM_HqZjP84" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Mon, 27 Jul 2009 08:11:47 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/07/27/operationspage-amp-applicationsmanagementpage.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/Rr5XOCge9Og/operationspage-amp-applicationsmanagementpage.aspx</feedburner:origLink></item><item><title>Want to configure Timer Jobs ? ;)</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/k1OpyzzQHho/want-to-configure-timer-jobs.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/07/24/want-to-configure-timer-jobs.aspx</guid><description>&lt;div class="ExternalClass4E92820DE4B4424593317BAF7DD4DE2D"&gt;&lt;p&gt;As you might have noticed I’ve been blogging a lot about Application Pages and TimerJob related stuff in the last few months and this post is about those two same things! So apologies for that.. But you might get a smile on your face when you see the following screenshot:&lt;/p&gt; &lt;p&gt;&lt;a href="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/99/timerjobconfigurator_2_6EE70783.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="timerjobconfigurator" border="0" alt="timerjobconfigurator" src="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/99/timerjobconfigurator_thumb_6EE70783.png" width="640" height="390"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt; &lt;p&gt;What have I done and what do you see? &lt;/p&gt; &lt;p&gt;Well, I’ve created yet another application page (YAAP, cool acronym ;) that displays all the current timer job definitions and furthermore it showes for each timer job it’s status. So basically I’ve combined the Timer Job Status page and the Timer Job definitions page. But that wasn’t my main concern to build these pages.. the main concern was to have some more insight in the current defined jobs. Things like, when are they scheduled exactly (when is ‘hourly’ or ‘daily’) and give the administrators the choice to disable and/or delete timerjobs or change the schedule of each one. &lt;/p&gt; &lt;p&gt;Why did I add the option of mass deletion of timerjobs? I’ve seen some farms that when they are using Content Deployment, this service creates a lot of OneTime scheduled timerjobs. When these fail, they are not being deleted properly so it could be that the Timer Job definitions list can be flooded with those OneTime scheduled jobs. So you might want to remove these timerjobs to clean up the definitions list eh? Especially if the Timer service get’s restarted (after a WSP installation for example) then all those one timed jobs are being executed again and will fail again and will stay in the list again..&lt;/p&gt; &lt;p&gt;Why did I add the option of changing the schedule of timerjobs? I’ve seen some farms that had custom timerjobs installed on them but no interface for administrators to change the schedule or to disable the timerjob at all (other then deactivating the feature which came with the solution). &lt;/p&gt; &lt;p&gt;&lt;a href="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/99/timerjobedit_2_6EE70783.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="timerjobedit" border="0" alt="timerjobedit" src="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/99/timerjobedit_thumb_6EE70783.png" width="640" height="390"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I also wanted to incorporate a feature that would let you create a new OneTime schedule to kick off a timerjob. Since you cannot change the schedule of a existing timerjob to OneTime schedule (you receive a nice error that tells you, you can’t change the schedule:), I have to create a new instance of that particular timerjob and give that one the OneTime schedule to run. And that ‘creating a new instance of that particular job’ is still a work in progress :)&lt;/p&gt; &lt;p&gt;&amp;lt;Update&amp;gt;&lt;/p&gt; &lt;p&gt;&lt;strike&gt;It’s going to be on Codeplex.. but currently I’m getting this message on Codeplex : “Unable to save the release. The TFS server is not available”.. so .. sorry ;)&lt;/strike&gt;&lt;/p&gt; &lt;p&gt;&lt;strike&gt;Meanwhile I’ve uploaded the installer &lt;/strike&gt;&lt;a href="http://community.zevenseas.com/blogs/robin/Lists/Photos/solution.rar"&gt;&lt;strike&gt;here&lt;/strike&gt;&lt;/a&gt;&lt;strike&gt; for you to download and play around with ;)&lt;/strike&gt;&lt;/p&gt; &lt;p&gt;Get it from CodePlex right &lt;a href="http://zstimerjob.codeplex.com/"&gt;here&lt;/a&gt; !&lt;/p&gt; &lt;p&gt;&amp;lt;/Update&amp;gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0035e91b-483b-457a-91f3-188917da434c" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SharePoint" rel="tag"&gt;SharePoint&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=Wa4oTXzHVAk:Ut-3yX8tnlw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=Wa4oTXzHVAk:Ut-3yX8tnlw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=Wa4oTXzHVAk:Ut-3yX8tnlw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=Wa4oTXzHVAk:Ut-3yX8tnlw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=Wa4oTXzHVAk:Ut-3yX8tnlw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=Wa4oTXzHVAk:Ut-3yX8tnlw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/Wa4oTXzHVAk" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/k1OpyzzQHho" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Fri, 24 Jul 2009 16:58:59 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/07/24/want-to-configure-timer-jobs.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/Wa4oTXzHVAk/want-to-configure-timer-jobs.aspx</feedburner:origLink></item><item><title>New MOSS SP2 bug .. continued and problem solved!</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/4tQ5KT0yqo0/new-moss-sp2-bug-continued-and-problem-solved.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/07/17/new-moss-sp2-bug-continued-and-problem-solved.aspx</guid><description>&lt;div class="ExternalClass9F589F37150341E9A8AD526C77C0B6B2"&gt;&lt;p&gt;Remember that I blogged about problem that I had (&lt;a title="New MOSS SP2 bug-" href="http://community.zevenseas.com/Blogs/Robin/archive/2009/05/29/new-moss-sp2-bug.aspx"&gt;New MOSS SP2 bug&lt;/a&gt;) where suddenly my SharePoint environment died and was giving me the error in the event viewer :&lt;/p&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;The schema version (3.1.10.0) of the database SharePoint_AdminContent_5e188b87-c7a8-4e0a-a488-b21a4a89e941 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;on mosswin2k3 is not consistent with the expected database schema version (3.1.3.0) on mosswin2k3.  
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;Connections to this database from this server have been blocked to avoid data loss.  
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;Upgrade the web front end or the content database to ensure that these versions match.&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;Well.. I had pinpointed the problem to the fact I was using a function of &lt;a href="http://www.codeplex.com/wspbuilder"&gt;WSPBuilder&lt;/a&gt; called “Copy to GAC”. Now this function copies all the .dll’s from the debug/release folder of your project into the GAC. I worked on a solution which I had worked on my local machine before I took into my VPC to develop on. During that time I had copied all the SharePoint dll’s locally in my project (eg. ‘Copy Local’ of the references were set to True) so I could develop against the SharePoint API. &lt;/p&gt;
&lt;p&gt;So you can guess what happens if the “Copy to GAC” function copies old versions of the SharePoint .dll’s in the GAC right? ;) Yes, SharePoint was now dealing with old dll’s in the GAC while the databases were running on a higher version. When I copied the .dll’s back from the ISAPI folder in the 12 hive into the GAC, everything worked again! w00h00w!&lt;/p&gt;
&lt;p&gt;Concluding that the schema version error was absolutely right and it made sense that the PSConfig could not find the new types that were introduced with SP2 and thus failed. So I wasn’t a bug but merely a stupid action on my account where I didn’t pay attention to the output window of the WSPBuilder of which .dll’s were copied during the “Copy to GAC” function.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Want to thanks &lt;a href="http://sharepoint.microsoft.com/blogs/fromthefield/default.aspx"&gt;Neil Hodgkinson&lt;/a&gt; as well for his valuable time in supporting me with this issue ;)&lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:eeb05c1e-a2ca-454d-98b1-1851e855b1ee" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SharePoint" rel="tag"&gt;SharePoint&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=PqjNln-IGZM:3y2dKXIowbY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=PqjNln-IGZM:3y2dKXIowbY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=PqjNln-IGZM:3y2dKXIowbY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=PqjNln-IGZM:3y2dKXIowbY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=PqjNln-IGZM:3y2dKXIowbY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=PqjNln-IGZM:3y2dKXIowbY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/PqjNln-IGZM" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/4tQ5KT0yqo0" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Fri, 17 Jul 2009 13:51:11 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/07/17/new-moss-sp2-bug-continued-and-problem-solved.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/PqjNln-IGZM/new-moss-sp2-bug-continued-and-problem-solved.aspx</feedburner:origLink></item><item><title>Item-level permissions for Document Libraries</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/Uev9E-BaXL4/item-level-permissions-for-document-libraries.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/07/13/item-level-permissions-for-document-libraries.aspx</guid><description>&lt;div class="ExternalClassEBF43655E66E4D6ABBE28A3947F6D227"&gt;&lt;p&gt;Do you want the same item-level settings on document libraries like there is on lists?.. Confused what I’m talking about? Well it’s basically having this on document libraries as well:&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.chakkaradeep.com/image.axd?picture=image_6.png"&gt; &lt;/p&gt; &lt;p&gt;&lt;a href="http://www.chakkaradeep.com/author/chakkaradeep.aspx"&gt;Chakkaradeep&lt;/a&gt; wanted it as well and created a solution called the “&lt;strong&gt;ILP:Item level permission library”&lt;/strong&gt;, head over to his blogpost &lt;a title="Item Level Permission for Document Libraries-BETA Release" href="http://www.chakkaradeep.com/post/2009/07/13/item-level-permissions-for-document-libraries.aspx"&gt;Item Level Permission for Document Libraries-BETA Release&lt;/a&gt;, download it, use it and give your feedback!&lt;/p&gt; &lt;p&gt;Great stuff Chak! ;)&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=-9nYqxKdtgk:Z_BaMlBKQ6E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=-9nYqxKdtgk:Z_BaMlBKQ6E:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=-9nYqxKdtgk:Z_BaMlBKQ6E:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=-9nYqxKdtgk:Z_BaMlBKQ6E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=-9nYqxKdtgk:Z_BaMlBKQ6E:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=-9nYqxKdtgk:Z_BaMlBKQ6E:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/-9nYqxKdtgk" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/Uev9E-BaXL4" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Mon, 13 Jul 2009 09:16:58 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/07/13/item-level-permissions-for-document-libraries.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/-9nYqxKdtgk/item-level-permissions-for-document-libraries.aspx</feedburner:origLink></item><item><title>Re-using SharePoint controls</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/3-MieuYFRwI/re-using-sharepoint-controls.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/07/03/re-using-sharepoint-controls.aspx</guid><description>&lt;div class="ExternalClass7F5524D8FB0D4A4A9370AD5DF16E52CA"&gt;&lt;p&gt;This post is going to be a summary of some of some the SharePoint controls I regularly use in my solutions. Cool thing about re-using the controls that are already out there is, that saves time in re-inventing the wheel and you don’t have to worry about keeping the look&amp;amp;feel consistent ;)&lt;/p&gt; &lt;p&gt;First, check out the following blog posts for more information on re-using the out-of-the-box controls of SharePoint&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Basically every page in the &lt;a href="http://karinebosch.wordpress.com/sharepoint-controls/"&gt;SharePoint controls&lt;/a&gt; section by &lt;a href="http://karinebosch.wordpress.com/"&gt;Karine Bosch&lt;/a&gt; (really, really, really good stuff!)  &lt;li&gt;&lt;a href="http://blogs.devhorizon.com/reza/?p=645"&gt;Selector Controls Rock!&lt;/a&gt; by &lt;a href="http://blogs.devhorizon.com/reza/"&gt;Reza Alirezaei&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.devhorizon.com/reza/?p=670"&gt;Web part with Toolbar (Part 2)&lt;/a&gt;  by &lt;a href="http://blogs.devhorizon.com/reza/"&gt;Reza Alirezaei&lt;/a&gt; &amp;amp; &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.repeatedcontrols.aspx"&gt;RepeatedControls&lt;/a&gt; to get a ToolBar look&amp;amp;feel without using the ToolBar control.  &lt;li&gt;&lt;a title="Great controls to be aware of when building SharePoint sites" href="http://www.sharepointnutsandbolts.com/2008/03/great-controls-to-be-aware-of-when.html"&gt;Great controls to be aware of when building SharePoint sites&lt;/a&gt; by &lt;a href="http://www.sharepointnutsandbolts.com/"&gt;Chris O'Brien&lt;/a&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;Now some controls are already covered by the links that are stated above, so this is really just a quick summary on the things I like to use most ;)&lt;/p&gt; &lt;p&gt;I’ve given each control a table, in the first row there is a screenshot (if applicable) how to control looks like when it’s rendered by SharePoint,&lt;br&gt;in the second row there is the declarative way of using the control,&lt;br&gt;in the third row there is (also, if applicable) some codebehind logic on how to  use the control and it’s value.&lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.webapplicationselector.aspx"&gt;&lt;strong&gt;WebApplicationSelector&lt;/strong&gt;&lt;/a&gt; &lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="570"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="568"&gt;&lt;a href="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/96/webapplicationselector_2_08096A49.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="webapplicationselector" border="0" alt="webapplicationselector" src="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/96/webapplicationselector_thumb_08096A49.png" width="240" height="48"&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="568"&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#c71585"&gt;SharePoint&lt;/span&gt;:&lt;span style="color:#800000"&gt;WebApplicationSelector&lt;/span&gt; &lt;span style="color:#ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;webApplicationSelector&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="568"&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;protected&lt;/span&gt; WebApplicationSelector webApplicationSelector;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;..
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;SPWebApplication webApplication = webApplicationSelector.CurrentItem;&lt;/pre&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.siteadministrationselector.aspx"&gt;&lt;strong&gt;SiteAdministrationSelector&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/p&gt;
&lt;table border="1" cellspacing="0" cellpadding="2" width="556"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="554"&gt;&lt;a href="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/96/siteadministrationSelector_2_08096A49.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="siteadministrationSelector" border="0" alt="siteadministrationSelector" src="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/96/siteadministrationSelector_thumb_08096A49.png" width="240" height="34"&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="554"&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#c71585"&gt;SharePoint&lt;/span&gt;:&lt;span style="color:#800000"&gt;SiteAdministrationSelector&lt;/span&gt; &lt;span style="color:#ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;server&lt;/span&gt; &lt;span style="color:#ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;siteadminselector&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="554"&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;protected&lt;/span&gt; SiteAdministrationSelector siteAdministrationSelector;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;..
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;SPSiteAdministration siteAdmin = siteAdministrationSelector.CurrentItem;&lt;/pre&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.schedulepicker.aspx"&gt;&lt;strong&gt;SchedulePicker&lt;/strong&gt;&lt;/a&gt; , for more info on this one and when &amp;amp; why you should use this please read “&lt;a title="Using the SchedulePicker" href="http://community.zevenseas.com/blogs/robin/archive/2009/01/18/using-the-schedulepicker.aspx"&gt;Using the SchedulePicker&lt;/a&gt;” ;) &lt;/p&gt;
&lt;table border="1" cellspacing="0" cellpadding="2" width="500"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="500"&gt;&lt;a href="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/96/schedulepicker2_2_08096A49.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="schedulepicker (2)" border="0" alt="schedulepicker (2)" src="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/96/schedulepicker2_thumb_08096A49.png" width="240" height="93"&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="500"&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;p&gt;&lt;span style="background-color:#ffff00;color:black"&gt;&amp;lt;%@ Register TagPrefix=&amp;quot;wssuc&amp;quot; TagName=&amp;quot;SchedulePicker&amp;quot; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="background-color:#ffff00;color:black"&gt;src=&amp;quot;~/_controltemplates/SchedulePicker.ascx&amp;quot; %&amp;gt;&lt;/span&gt;
&lt;/p&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;p&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#c71585"&gt;wssuc&lt;/span&gt;:&lt;span style="color:#800000"&gt;SchedulePicker&lt;/span&gt; &lt;span style="color:#ff0000"&gt;id&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;schedulePicker&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000"&gt;Hourly&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;True&amp;quot;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="color:#ff0000"&gt;Weekly&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;True&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;Monthly&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;True&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;Enabled&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;True&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;EnableStateView&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;True&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;/&amp;gt;&lt;/span&gt;  &lt;/p&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="500"&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;protected&lt;/span&gt; SchedulePicker schedulePicker;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;..
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#008000"&gt;//Getting a schedule from the picker&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;SPSchedule schedule = schedulePicker.Schedule;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#008000"&gt;//Setting the schedule of the picker&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;schedulePicker.ScheduleString = schedule.ToString();&lt;/pre&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.spdatepickercontrol.aspx"&gt;&lt;strong&gt;SPDatePickerControl&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/p&gt;
&lt;table border="1" cellspacing="0" cellpadding="2" width="500"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="500"&gt;&lt;a href="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/96/spDatePickerControl_2_35F6BD01.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="spDatePickerControl" border="0" alt="spDatePickerControl" src="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/96/spDatePickerControl_thumb_35F6BD01.png" width="367" height="199"&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="500"&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;script&lt;/span&gt; &lt;span style="color:#ff0000"&gt;type&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#ff0000"&gt;src&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;/_layouts/datepicker.js&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000"&gt;script&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#c71585"&gt;SharePoint&lt;/span&gt;:&lt;span style="color:#800000"&gt;SPDatePickerControl&lt;/span&gt; &lt;span style="color:#ff0000"&gt;id&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;datePickerControl&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   &lt;span style="color:#ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.buttonsection.aspx"&gt;&lt;strong&gt;ButtonSection&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;table border="1" cellspacing="0" cellpadding="2" width="500"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="500"&gt;&lt;a href="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/96/buttonsection_2_35F6BD01.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="buttonsection" border="0" alt="buttonsection" src="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/96/buttonsection_thumb_35F6BD01.png" width="240" height="59"&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="500"&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="background-color:#ffff00;color:black"&gt;&amp;lt;%@ Register TagPrefix=&amp;quot;wssuc&amp;quot; TagName=&amp;quot;ButtonSection&amp;quot; 
&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;src=&amp;quot;~/_controltemplates/ButtonSection.ascx&amp;quot; %&amp;gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#c71585"&gt;wssuc&lt;/span&gt;:&lt;span style="color:#800000"&gt;ButtonSection&lt;/span&gt; &lt;span style="color:#ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;Template&lt;/span&gt;&lt;span style="color:#ff0000"&gt;_Buttons&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#c71585"&gt;asp&lt;/span&gt;:&lt;span style="color:#800000"&gt;Button&lt;/span&gt; &lt;span style="color:#ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;class&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;ms-ButtonHeightWidth&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#ff0000"&gt;OnClick&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;OnClickOK&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;Text&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;&amp;lt;%$Resources:wss,multipages_okbutton_text%&amp;gt;&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#ff0000"&gt;id&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;btnOk&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;accesskey&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;&amp;lt;%$Resources:wss,okbutton_accesskey%&amp;gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000"&gt;Template&lt;/span&gt;_Buttons&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#c71585"&gt;wssuc&lt;/span&gt;:&lt;span style="color:#800000"&gt;ButtonSection&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="500"&gt;When making use of the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.layoutspagebase.aspx"&gt;LayoutsPageBase&lt;/a&gt; in your codebehind, you can define the URL of the Cancel button by using this snippet:&lt;br&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; PageToRedirectOnCancel
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#008000"&gt;//return base.PageToRedirectOnCancel;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; &amp;quot;&lt;span style="color:#8b0000"&gt;/_layouts/settings.aspx&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;}&lt;/pre&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.inputformsection.aspx"&gt;&lt;strong&gt;InputFormSection&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; &amp;amp; &lt;/strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.inputformcontrol.aspx"&gt;&lt;strong&gt;InputFormControl&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;table border="1" cellspacing="0" cellpadding="2" width="500"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="500"&gt;&lt;a href="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/96/inputformsectionandcontrol_2_35F6BD01.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="inputformsectionandcontrol" border="0" alt="inputformsectionandcontrol" src="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/96/inputformsectionandcontrol_thumb_35F6BD01.png" width="560" height="70"&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="500"&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="background-color:#ffff00;color:black"&gt;&amp;lt;%@ Register TagPrefix=&amp;quot;wssuc&amp;quot; 
&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;TagName=&amp;quot;InputFormSection&amp;quot; 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;src=&amp;quot;~/_controltemplates/InputFormSection.ascx&amp;quot; %&amp;gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="background-color:#ffff00;color:black"&gt;&amp;lt;%@ Register TagPrefix=&amp;quot;wssuc&amp;quot; 
&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;TagName=&amp;quot;InputFormControl&amp;quot; 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;src=&amp;quot;~/_controltemplates/InputFormControl.ascx&amp;quot; %&amp;gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#c71585"&gt;wssuc&lt;/span&gt;:&lt;span style="color:#800000"&gt;InputFormSection&lt;/span&gt; &lt;span style="color:#ff0000"&gt;Title&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;InputFormSection&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#ff0000"&gt;Description&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;InputFormSection Description&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;		
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;template&lt;/span&gt;&lt;span style="color:#ff0000"&gt;_inputformcontrols&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;            
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#c71585"&gt;wssuc&lt;/span&gt;:&lt;span style="color:#800000"&gt;InputFormControl&lt;/span&gt; &lt;span style="color:#ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;LabelText&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;InputFormControl Text&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;            &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;Template&lt;/span&gt;&lt;span style="color:#ff0000"&gt;_Control&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                &lt;span style="background-color:#ffff00;color:black"&gt;&amp;lt;%&lt;/span&gt;--Put a control here--&lt;span style="background-color:#ffff00;color:black"&gt;%&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;                &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000"&gt;Template&lt;/span&gt;_Control&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#c71585"&gt;wssuc&lt;/span&gt;:&lt;span style="color:#800000"&gt;InputFormControl&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000"&gt;template&lt;/span&gt;_inputformcontrols&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#c71585"&gt;wssuc&lt;/span&gt;:&lt;span style="color:#800000"&gt;InputFormSection&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.inputformtextbox.aspx"&gt;&lt;strong&gt;InputFormTextBox&lt;/strong&gt;&lt;/a&gt;, notice there are two InputFormTextBoxes shown here. One with the RichTexT property set to true and the other set to false. So with a simple property change you can get the nicely and shiny FullHTML textbox.&lt;/p&gt;
&lt;table border="1" cellspacing="0" cellpadding="2" width="500"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="500"&gt;&lt;a href="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/96/inputformtextbox1_2_35F6BD01.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="inputformtextbox1" border="0" alt="inputformtextbox1" src="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/96/inputformtextbox1_thumb_35F6BD01.png" width="240" height="231"&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="500"&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;p&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#c71585"&gt;SharePoint&lt;/span&gt;:&lt;span style="color:#800000"&gt;InputFormTextBox&lt;/span&gt; &lt;span style="color:#ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;ApproveMailSubject&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;RichText&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="color:#ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;Width&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;100%&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;/&amp;gt;&lt;/span&gt;
&lt;/p&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#c71585"&gt;SharePoint&lt;/span&gt;:&lt;span style="color:#800000"&gt;InputFormTextBox&lt;/span&gt; &lt;span style="color:#ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;ApproveMailContent&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;RichText&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;	&lt;span style="color:#ff0000"&gt;RichTextMode&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;FullHtml&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;	&lt;span style="color:#ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;	&lt;span style="color:#ff0000"&gt;TextMode&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;MultiLine&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#ff0000"&gt;Rows&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;20&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.portal.webcontrols.inputformrequiredfieldvalidator.aspx"&gt;&lt;strong&gt;InputFormRequiredFieldValidator&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;table border="1" cellspacing="0" cellpadding="2" width="500"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="500"&gt;&lt;a href="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/96/inputformrequiredvalidator_2_35F6BD01.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="inputformrequiredvalidator" border="0" alt="inputformrequiredvalidator" src="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/96/inputformrequiredvalidator_thumb_35F6BD01.png" width="481" height="80"&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="500"&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#c71585"&gt;wssawc&lt;/span&gt;:&lt;span style="color:#800000"&gt;InputFormTextBox&lt;/span&gt; &lt;span style="color:#ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;uxFirstName&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;RichText&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#ff0000"&gt;TextMode&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;Singleline&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;Width&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;100%&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;/&amp;gt;&lt;/span&gt;	
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#c71585"&gt;wssawc&lt;/span&gt;:&lt;span style="color:#800000"&gt;InputFormRequiredFieldValidator&lt;/span&gt; &lt;span style="color:#ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;uxFirstNameValidator&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#ff0000"&gt;ControlToValidate&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;uxFirstName&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;Text&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;Error&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#ff0000"&gt;ErrorMessage&lt;/span&gt; =&lt;span style="color:#0000ff"&gt;&amp;quot;First name is required&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#ff0000"&gt;EnableClientScript&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;Display&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;Dynamic&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#c71585"&gt;wssawc&lt;/span&gt;:&lt;span style="color:#800000"&gt;InputFormRequiredFieldValidator&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;pre&gt; &lt;/pre&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.inputformrangevalidator.aspx"&gt;&lt;strong&gt;InputFormRangeValidator&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;table border="1" cellspacing="0" cellpadding="2" width="500"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="500"&gt;&lt;a href="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/96/inputformrangevalidator_2_63E40FB9.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="inputformrangevalidator" border="0" alt="inputformrangevalidator" src="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/96/inputformrangevalidator_thumb_63E40FB9.png" width="221" height="64"&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="500"&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#c71585"&gt;wssawc&lt;/span&gt;:&lt;span style="color:#800000"&gt;InputFormRangeValidator&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;inputFormRangeVal&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#ff0000"&gt;Type&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;Integer&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;MinimumValue&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;MaximumValue&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;30&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#ff0000"&gt;ControlToValidate&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;uxNumberOfDays&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#ff0000"&gt;ErrorMessage&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;Value must between 1 and 30&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    &lt;span style="color:#ff0000"&gt;Runat&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.toolbar.aspx"&gt;&lt;strong&gt;ToolBar&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; &amp;amp; &lt;/strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.toolbarbutton.aspx"&gt;&lt;strong&gt;ToolBarButton&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;table border="1" cellspacing="0" cellpadding="2" width="500"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="500"&gt;&lt;a href="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/96/toolbar_2_63E40FB9.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="toolbar" border="0" alt="toolbar" src="http://community.zevenseas.com/blogs/robin/Lists/Posts/Attachments/96/toolbar_thumb_63E40FB9.png" width="576" height="24"&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="500"&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="background-color:#ffff00;color:black"&gt;&amp;lt;%@ Register TagPrefix=&amp;quot;wssuc&amp;quot; TagName=&amp;quot;ToolBar&amp;quot; 
&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;src=&amp;quot;~/_controltemplates/ToolBar.ascx&amp;quot; %&amp;gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="background-color:#ffff00;color:black"&gt;&amp;lt;%@ Register TagPrefix=&amp;quot;wssuc&amp;quot; TagName=&amp;quot;ToolBarButton&amp;quot; 
&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;src=&amp;quot;~/_controltemplates/ToolBarButton.ascx&amp;quot; %&amp;gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#c71585"&gt;wssuc&lt;/span&gt;:&lt;span style="color:#800000"&gt;ToolBar&lt;/span&gt; &lt;span style="color:#ff0000"&gt;id&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;Toolbar&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;	&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;template&lt;/span&gt;&lt;span style="color:#ff0000"&gt;_buttons&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;		&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#c71585"&gt;wssuc&lt;/span&gt;:&lt;span style="color:#800000"&gt;ToolBarButton&lt;/span&gt; &lt;span style="color:#ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;			&lt;span style="color:#ff0000"&gt;id&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;ViewSites&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;			&lt;span style="color:#ff0000"&gt;Text&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;View Sites&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;			&lt;span style="color:#ff0000"&gt;ToolTip&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;			&lt;span style="color:#ff0000"&gt;OnClick&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;ViewSites_Link&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;			&lt;span style="color:#ff0000"&gt;ImageUrl&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;/_layouts/images/newitem.gif&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;			&lt;span style="color:#ff0000"&gt;Padding&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;2px&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;			&lt;span style="color:#ff0000"&gt;AccessKey&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;V&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff"&gt;/&amp;gt;&lt;/span&gt;			
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;	&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000"&gt;template&lt;/span&gt;_buttons&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;	&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;template&lt;/span&gt;&lt;span style="color:#ff0000"&gt;_rightbuttons&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;p&gt;		&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#c71585"&gt;SharePoint&lt;/span&gt;:&lt;span style="color:#800000"&gt;WebApplicationSelector&lt;/span&gt; &lt;span style="color:#ff0000"&gt;id&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;Selector&amp;quot;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="color:#ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color:#0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;/&amp;gt;&lt;/span&gt;
&lt;/p&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;	&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000"&gt;template&lt;/span&gt;_rightbuttons&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#c71585"&gt;wssuc&lt;/span&gt;:&lt;span style="color:#800000"&gt;ToolBar&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="500"&gt;To use the ToolBar in your WebPart you can load the UserControls and reference them using this:&lt;br&gt;&lt;br&gt;&lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;protected&lt;/span&gt; ToolBarButton ToolBarButton;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;protected&lt;/span&gt; ToolBar ToolBar;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;..
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#008000"&gt;//Adding a ToolBarButton&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;ToolBarButton = 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    (ToolBarButton)Page.LoadControl(&amp;quot;&lt;span style="color:#8b0000"&gt;/_controltemplates/ToolBarButton.ascx&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;ToolBarButton.Click += &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; EventHandler(ToolBarButton_Click);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;ToolBarButton.Text = &amp;quot;&lt;span style="color:#8b0000"&gt;Complete selected tasks&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;ToolBarButton.ImageUrl = &amp;quot;&lt;span style="color:#8b0000"&gt;/_layouts/images/CheckNames.gif&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#008000"&gt;//Adding the ToolBar&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;ToolBar = 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    (ToolBar)Page.LoadControl(&amp;quot;&lt;span style="color:#8b0000"&gt;/_controltemplates/ToolBar.ascx&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;ToolBar.Buttons.Controls.Add(ToolBarButton);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.Controls.Add(ToolBar);&lt;/pre&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=UVt6U8eRC38:T1-WQm7IIVk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=UVt6U8eRC38:T1-WQm7IIVk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=UVt6U8eRC38:T1-WQm7IIVk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=UVt6U8eRC38:T1-WQm7IIVk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=UVt6U8eRC38:T1-WQm7IIVk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=UVt6U8eRC38:T1-WQm7IIVk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/UVt6U8eRC38" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/3-MieuYFRwI" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Fri, 03 Jul 2009 14:36:22 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/07/03/re-using-sharepoint-controls.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/UVt6U8eRC38/re-using-sharepoint-controls.aspx</feedburner:origLink></item><item><title>Why are PortalSiteMapProvider properties defined in the web.config?</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/uUWyhWnnnvc/why-are-portalsitemapprovider-properties-defined-in-the-web-config.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/06/04/why-are-portalsitemapprovider-properties-defined-in-the-web-config.aspx</guid><description>&lt;div class="ExternalClassB39149261F384359B7117083A6BE0301"&gt;&lt;p&gt;FYI, this post is a rant on a MOSS specific component called PortalSiteMapProvider.. ;)&lt;/p&gt; &lt;p&gt;I was asked by a the customer where I’m currently working for if it was possible to display more than 50 items on a fly-out in the global navigation. Being the SharePoint guru that I am, I started googling on how to adjust this.. Quickly I found the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.publishing.navigation.portalsitemapprovider.dynamicchildlimit.aspx"&gt;DynamicChildLimit&lt;/a&gt; property on the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.publishing.navigation.portalsitemapprovider.aspx"&gt;PortalSiteMapProvider&lt;/a&gt; class in the Microsoft.SharePoint.Publishing.Navigation namespace! &lt;/p&gt; &lt;p&gt;But then I quickly found out that I needed to modify the web.config to set this property?! &lt;strong&gt;WHY?!?!&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;Why did the team decide to put this type of parameters in the web.config? Why not create an application page in the Central Administration where you can view and set all those parameters..  I mean.. it’s not just &lt;strong&gt;one&lt;/strong&gt; parameter like the DynamicChildLimit in the web.config. But, out of the box, there are several properties defined which you can set like:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;NavigationType&lt;/li&gt; &lt;li&gt;EncodeOutput&lt;/li&gt; &lt;li&gt;IncludePages &lt;/li&gt; &lt;li&gt;IncludeHeadings&lt;/li&gt; &lt;li&gt;IncludeAuthoredLinks&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;I can understand that you need to register all the SiteMap providers in the web.config, but I don’t understand why the properties of the providers are set in the web.config. I know it’s a ASP.NET component, but since it’s part of the Microsoft.SharePoint.Publishing.Navigation namespace and they override initialization method I would have figured they would get the parameters from somewhere else..&lt;/p&gt;&lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:650px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;  &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (config[&amp;quot;&lt;span style="color:#8b0000"&gt;DynamicChildLimit&lt;/span&gt;&amp;quot;] != null)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;        this.DynamicChildLimit = int.Parse(config[&amp;quot;&lt;span style="color:#8b0000"&gt;DynamicChildLimit&lt;/span&gt;&amp;quot;]);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br&gt;If someone knows why it’s implemented like this.. please let me know because I would love to know it! :)&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:952ac2ec-c8b9-441e-b633-ee98990a7bd7" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SharePoint" rel="tag"&gt;SharePoint&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MOSS" rel="tag"&gt;MOSS&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=NalzRG6ycCc:TV9-qYJaWSM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=NalzRG6ycCc:TV9-qYJaWSM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=NalzRG6ycCc:TV9-qYJaWSM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=NalzRG6ycCc:TV9-qYJaWSM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=NalzRG6ycCc:TV9-qYJaWSM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=NalzRG6ycCc:TV9-qYJaWSM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/NalzRG6ycCc" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/uUWyhWnnnvc" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Thu, 04 Jun 2009 09:40:01 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/06/04/why-are-portalsitemapprovider-properties-defined-in-the-web-config.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/NalzRG6ycCc/why-are-portalsitemapprovider-properties-defined-in-the-web-config.aspx</feedburner:origLink></item><item><title>Speaking at the SDN Event on 26th of June</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/narbsigyiCE/speaking-at-the-sdn-event-on-26th-of-june.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/06/01/speaking-at-the-sdn-event-on-26th-of-june.aspx</guid><description>&lt;div class="ExternalClass6F58B715A7AD4251B3F0F9C337C1755B"&gt;&lt;p&gt;Together with SharePoint legends &lt;a href="http://www.spfoxhole.com/Blog/default.aspx"&gt;Box Fox&lt;/a&gt; and &lt;a href="http://www.harbar.net"&gt;Spence Harbar&lt;/a&gt;, I have the privilege to also host a session at the &lt;strong&gt;S&lt;/strong&gt;oftware &lt;strong&gt;D&lt;/strong&gt;evelopment &lt;strong&gt;N&lt;/strong&gt;etwork in Houten (the Netherlands) on the 26th of June! While Bob and Spence are covering the following topics&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.sdn.nl/SDN/SDNEvent/SDNEventjuni2009/Sessies/tabid/126/CodecampId/5/SessionId/43/Default.aspx"&gt;Best Practices for Virtualization with Hyper V and SharePoint&lt;/a&gt; (Bob)  &lt;li&gt;&lt;strong&gt;&lt;a href="http://www.sdn.nl/SDN/SDNEvent/SDNEventjuni2009/Sessies/tabid/126/CodecampId/5/SessionId/39/Default.aspx"&gt;Mythbusters – debunking common SharePoint Farm Misconceptions&lt;/a&gt;&lt;/strong&gt;  (Spence)  &lt;li&gt;&lt;a href="http://www.sdn.nl/SDN/SDNEvent/SDNEventjuni2009/Sessies/tabid/126/CodecampId/5/SessionId/51/Default.aspx"&gt;Kerberos Part 1: no ticket touting here. Does SharePoint add another head?&lt;/a&gt; (Bob &amp;amp; Spence)  &lt;li&gt;&lt;a href="http://www.sdn.nl/SDN/SDNEvent/SDNEventjuni2009/Sessies/tabid/126/CodecampId/5/SessionId/64/Default.aspx"&gt;Kerberos Part 2: Advanced Scenarios and additional considerations.&lt;/a&gt; (Bob &amp;amp; Spence)&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;I will be talking about SharePoint Application Pages.. &lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;When you are developing custom solutions on top of SharePoint you often need a page (or maybe even more) in Central Admin where you can configure your solution. And of course you want to this page to look like a SharePoint page and probably you also want to use the SharePoint controls because, if you are like me, you are a lazy developer and don’t want to reinvent the wheel over and over gain. Aside to settings the configuration you are also interested in how to store your configuration.  &lt;p&gt;My session will be about creating those fancy application pages and can be summarized into the following bullets :  &lt;ul&gt; &lt;li&gt;What is an Application Page?  &lt;li&gt;What SharePoint controls are there for me to re-use?  &lt;li&gt;How do I store my configuration?  &lt;li&gt;The things I’ve learned with custom timer jobs &lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt; &lt;p&gt;For more information, check out the &lt;a title="SDN site" href="http://www.sdn.nl/SDN/SDNEvent/SDNEventjuni2009/tabid/124/Default.aspx"&gt;SDN site&lt;/a&gt; and register! ;)&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=zHjmntMXAj0:wRQ8Z0cH68A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=zHjmntMXAj0:wRQ8Z0cH68A:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=zHjmntMXAj0:wRQ8Z0cH68A:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=zHjmntMXAj0:wRQ8Z0cH68A:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=zHjmntMXAj0:wRQ8Z0cH68A:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=zHjmntMXAj0:wRQ8Z0cH68A:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/zHjmntMXAj0" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/narbsigyiCE" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Mon, 01 Jun 2009 17:39:06 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/06/01/speaking-at-the-sdn-event-on-26th-of-june.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/zHjmntMXAj0/speaking-at-the-sdn-event-on-26th-of-june.aspx</feedburner:origLink></item><item><title>New MOSS SP2 bug?</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/kh8gkBbuVMQ/new-moss-sp2-bug.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/05/29/new-moss-sp2-bug.aspx</guid><description>&lt;div class="ExternalClassB6C72677A2FF4517BD070EABE21899C7"&gt;&lt;p&gt;&amp;lt;Update 17-7-2009&amp;gt;&lt;/p&gt; &lt;p&gt;Did an update on this post at &lt;a title="New MOSS SP2 bug .. continued and problem solved!" href="http://community.zevenseas.com/Blogs/Robin/archive/2009/07/17/new-moss-sp2-bug-continued-and-problem-solved.aspx"&gt;New MOSS SP2 bug .. continued and problem solved!&lt;/a&gt; &lt;/p&gt; &lt;p&gt;In short, I was copying old dll’s in the GAC using WSPBuilder. In my project I had old references to SharePoint .dll’s copied locally in my project folder. So while executing the “Copy to GAC” method of WSPBuilder, the ‘old’ .dl’s were copied into the GAC. By doing that it caused my WFE thinking that it was running an old version while the database was thinking it was running a new version.&lt;/p&gt; &lt;p&gt;&amp;lt;/Update&amp;gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;I twittered about this problem two weeks ago I merely thought that it’s possibly my own fault because of the development work I was doing.. So recreated my environment by reinstalling SharePoint and everything was fine (though it’s quite irritating that when you attach your ‘old’ contentdatabases to your new farm it starts indexing everything from scratch and the mssearch/msddmn and sqlserver starts consuming all resources.. and that’t not funny on a VPC ;) but after a clean SharePoint (with SP2) install everything was fine again..’Till now!  I got the same error back again. &lt;/p&gt; &lt;p&gt;First it starts with this when navigating to a SharePoint site in my browser.. &lt;/p&gt;&lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:650px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;[SPUpgradeException: An error has occurred on the server.http://go.microsoft.com/fwlink?LinkID=96177]
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   Microsoft.SharePoint.Administration.SPContentDatabase.ValidateDatabaseSchemaCompatibility() +1805
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   Microsoft.SharePoint.SPSite.PreinitializeServer(SPRequest request) +61
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   Microsoft.SharePoint.SPWeb.InitializeSPRequest() +290
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   Microsoft.SharePoint.SPWeb.EnsureSPRequest() +58
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   Microsoft.SharePoint.SPWeb.get_Request() +54
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   Microsoft.SharePoint.SPWeb.GetWebPartPageContent(Uri pageUrl, PageView requestedView, HttpContext context, Boolean forRender, Boolean includeHidden, Boolean mainFileRequest, Boolean fetchDependencyInformation, Boolean&amp;amp; ghostedPage, Byte&amp;amp; verGhostedPage, String&amp;amp; siteRoot, Guid&amp;amp; siteId, Int64&amp;amp; bytes, Guid&amp;amp; docId, UInt32&amp;amp; docVersion, String&amp;amp; timeLastModified, Byte&amp;amp; level, Object&amp;amp; buildDependencySetData, UInt32&amp;amp; dependencyCount, Object&amp;amp; buildDependencies, SPWebPartCollectionInitialState&amp;amp; initialState, Object&amp;amp; oMultipleMeetingDoclibRootFolders, String&amp;amp; redirectUrl, Boolean&amp;amp; ObjectIsList, Guid&amp;amp; listId) +1492
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   Microsoft.SharePoint.ApplicationRuntime.SPRequestModuleData.FetchWebPartPageInformationForInit(HttpContext context, SPWeb spweb, Boolean mainFileRequest, String path, Boolean impersonate, Boolean&amp;amp; fGhostedPage, Byte&amp;amp; verGhostedPage, Guid&amp;amp; docId, UInt32&amp;amp; docVersion, String&amp;amp; timeLastModified, SPFileLevel&amp;amp; spLevel, String&amp;amp; masterPageUrl, String&amp;amp; customMasterPageUrl, String&amp;amp; webUrl, String&amp;amp; siteUrl, Guid&amp;amp; siteId, Object&amp;amp; buildDependencySetData, SPWebPartCollectionInitialState&amp;amp; initialState, String&amp;amp; siteRoot, String&amp;amp; redirectUrl, Object&amp;amp; oMultipleMeetingDoclibRootFolders, Boolean&amp;amp; objectIsList, Guid&amp;amp; listId, Int64&amp;amp; bytes) +718
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   Microsoft.SharePoint.ApplicationRuntime.SPRequestModuleData.GetFileForRequest(HttpContext context, SPWeb web, Boolean exclusion, String virtualPath) +232
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.InitContextWeb(HttpContext context, SPWeb web) +104
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   Microsoft.SharePoint.WebControls.SPControl.SPWebEnsureSPControl(HttpContext context) +395
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   Microsoft.SharePoint.WebControls.SPControl.GetContextWeb(HttpContext context) +31
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.PostResolveRequestCacheHandler(Object oSender, EventArgs ea) +383
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&amp;amp; completedSynchronously) +75
&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;And the EventViewer showed this error:&lt;/p&gt;&lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:650px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;The schema version (3.1.8.0) of the database SharePoint_AdminContent_3b1b1115-48b5-40d1-afe3-142692142cd6 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;on dev is not consistent with the expected database schema version (3.1.3.0) on dev.  
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;Connections to this database from this server have been blocked to avoid data loss.  
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;Upgrade the web front end or the content database to ensure that these versions match.
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;For more information, see Help and Support Center at &lt;a href="http://go.microsoft.com/fwlink/events.asp"&gt;http://go.microsoft.com/fwlink/events.asp&lt;/a&gt;.&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;Looks quite scary since the SharePoint_AdminContent database is the contentdatabase of the Central Administration WebApplication. But it makes sense for me, since I’m using this Web Application extensively in my solutions. On the other hand I find it quite strange because it’s not the first time that I’m doing this and did not do anything that obscure or scary.&lt;/p&gt;
&lt;p&gt;So of course, I tried to do an upgrade using the STSADM –o upgrade –url &amp;lt;centraladmin&amp;gt; –inplace.. When I checked in the Upgrade.log I found this error&lt;/p&gt;&lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:650px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;[SPDelegateManager] [DEBUG] [5/29/2009 11:54:04 AM]: No assembly manifest found.
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;[SPDelegateManager] [ERROR] [5/29/2009 11:54:04 AM]: Failed to call GetTypes()
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;[SPDelegateManager] [ERROR] [5/29/2009 11:54:04 AM]: Could not load type 'Microsoft.Office.Server.Administration.Health.SPHealthAnalysisRule' from assembly 'Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'.
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;[SPDelegateManager] [ERROR] [5/29/2009 11:54:04 AM]: Failed to call GetTypes()
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;[SPDelegateManager] [ERROR] [5/29/2009 11:54:04 AM]: Could not load type 'Microsoft.Office.Server.Administration.Health.SPHealthAnalysisRule' from assembly 'Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'.
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;[SPManager] [ERROR] [5/29/2009 11:54:04 AM]: CanUpgrade [SPFarm Name=SharePoint_Config] failed.&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;Now if I’m not mistaken, the Health class is added to the Microsoft.Office.Administration namespace since SP2 right?&lt;/p&gt;
&lt;p&gt;Next thing was to try do an upgrade using the PSConfig tool.. and I got an Access Denied error&lt;/p&gt;&lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:650px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;An exception of type System.Security.SecurityException was thrown.  Additional exception information: Access denied.
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;System.Security.SecurityException: Access denied.
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   at Microsoft.SharePoint.Administration.SPPersistedObject.Update()
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   at Microsoft.SharePoint.Administration.SPService.Update()
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   at Microsoft.SharePoint.Administration.SPPersistedObject.Update(Boolean ensure)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   at Microsoft.SharePoint.PostSetupConfiguration.ServicesTask.InstallServiceInConfigDB(Boolean provisionTheServiceToo, String serviceRegistryKeyName)
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   at Microsoft.SharePoint.PostSetupConfiguration.ServicesTask.InstallServices(Boolean provisionTheServicesToo)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   at Microsoft.SharePoint.PostSetupConfiguration.ServicesTask.Run()
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;   at Microsoft.SharePoint.PostSetupConfiguration.TaskThread.ExecuteTask()
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;The Zone of the assembly that failed was:
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;MyComputer&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;So I think the error about the “Could not load type..” and the SecurityException are linked to each other. &lt;/p&gt;
&lt;p&gt;I tried the ‘execadmsvcjobs’ command to see if that give me any errors.. it didn’t..  but the ‘sync’ command did throw an error and in the ULS it showed this :&lt;/p&gt;&lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:650px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;05/29/2009 13:47:02.21 	STSADM.EXE (0x17E0)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;0x0C44	1597  6y3d	Exception	 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;System.Security.SecurityException: Access denied.     
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;at Microsoft.SharePoint.Administration.SPPersistedObject.Update()     
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;at Microsoft.SharePoint.Administration.SPJobDefinition.Update()     
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;at Microsoft.Office.Server.CommandLine.SyncCommands.ProcessScheduleParams(
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;String&lt;/span&gt; multipleWebAppUrls, SPSchedule sweepSchedule, SPSchedule syncSchedule)     
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;at Microsoft.Office.Server.CommandLine.SyncCommands.Execute()  
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;The Zone &lt;span style="color:#0000ff"&gt;of&lt;/span&gt; the assembly that failed was:  MyComputer&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;Some background information on what I was doing when this happened,  I was working on a custom timer job and restarted the Timer service a lot of times.. And ‘suddenly' the environment was down. When it happened a couple of weeks ago I did a solution install and during an installation of a solution package the Timer Service is also restarted. And when a Timer service restarts, a lot of timer jobs are also being executed right? Maybe the upgrade timer job was still busy trying to update the content database of my Central Administration but never got the chance or something.. &lt;/p&gt;
&lt;p&gt;&amp;lt;Update&amp;gt;&lt;/p&gt;
&lt;p&gt;Found some blogposts that describe the problem after applying a hotfix and servicepacks&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/joelo/archive/2007/09/26/hotfixes-service-packs-and-password-resets.aspx"&gt;Hotfixes, service packs, and password resets&lt;/a&gt; by &lt;a href="http://sharepointjoel.com"&gt;Joel&lt;/a&gt; 
&lt;li&gt;&lt;a title="Sharepoint Hotfix 936867 renders Sharepoint unuseable - FG" href="http://cs.grossmann.com/blogs/fg/archive/2007/08/23/sharepoint-hotfix-936867-renders-sharepoint-unuseable.aspx"&gt;Sharepoint Hotfix 936867 renders Sharepoint unuseable – FG&lt;/a&gt; &lt;/li&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Only ‘weird’ thing is that this didn’t happen to me after a the service pack update but after two weeks after applying the service pack. So I’m still convinced it’s a timer job issue.. &lt;/p&gt;
&lt;p&gt;&amp;lt;/Update&amp;gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Up to this point I don’t have a solution for this problem, but if I do I will update this post.. or if you have the solution.. let me know! ;) &lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=5bN0SVIXQcs:lxuZU_fUS6E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=5bN0SVIXQcs:lxuZU_fUS6E:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=5bN0SVIXQcs:lxuZU_fUS6E:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=5bN0SVIXQcs:lxuZU_fUS6E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=5bN0SVIXQcs:lxuZU_fUS6E:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=5bN0SVIXQcs:lxuZU_fUS6E:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/5bN0SVIXQcs" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/kh8gkBbuVMQ" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Fri, 29 May 2009 14:09:21 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/05/29/new-moss-sp2-bug.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/5bN0SVIXQcs/new-moss-sp2-bug.aspx</feedburner:origLink></item><item><title>TunnelPoint and ProduShare</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/EsfaolCQ7fE/tunnelpoint-and-produshare.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/05/28/tunnelpoint-and-produshare.aspx</guid><description>&lt;div class="ExternalClass44900041A6784B749AA9C2B4059D0514"&gt;&lt;p&gt;I don’t know if you have been following the posts from &lt;a href="http://community.zevenseas.com/Blogs/Hans"&gt;Hans&lt;/a&gt; and &lt;a href="http://community.zevenseas.com/Blogs/Daniel"&gt;Daniel&lt;/a&gt; about &lt;a href="http://www.tunnelpoint.com"&gt;TunnelPoint&lt;/a&gt; and (the assembly free solution store called) &lt;a href="http://www.produshare.com/"&gt;ProduShare&lt;/a&gt; but I wanted to express my feelings about the products we have launched.. Though I was a bit skeptical at first  when we started months ago.. but now as both products have launched I’m really proud and have much believe that the product will be a succes :) &lt;/p&gt; &lt;p&gt;Why? Well.. well hopefully because we are the first ones who took the path of (the more popular getting) talking to SharePoint without using the Object Model and taking the next step.. &lt;/p&gt; &lt;p&gt;Just to show you that the clientside ‘development’ is getting more popular, check out these posts: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Almost every entry in &lt;a href="http://www.endusersharepoint.com/"&gt;EndUserSharePoint&lt;/a&gt; &lt;li&gt;&lt;a title="Cool Navigation in SharePoint 2007 using jQuery – Teaser!" href="http://weblogs.asp.net/jan/archive/2008/11/24/cool-navigation-in-sharepoint-2007-using-jquery-teaser.aspx"&gt;Cool Navigation in SharePoint 2007 using jQuery – Teaser!&lt;/a&gt; by &lt;a href="http://weblogs.asp.net/jan"&gt;Jan Tielens&lt;/a&gt;  &lt;li&gt;&lt;a title="Querying SharePoint List Items using jQuery" href="http://weblogs.asp.net/jan/archive/2009/05/06/querying-sharepoint-list-items-using-jquery.aspx"&gt;Querying SharePoint List Items using jQuery&lt;/a&gt; by &lt;a href="http://weblogs.asp.net/jan"&gt;Jan Tielens&lt;/a&gt;  &lt;li&gt;&lt;a title="JQuery - A Fresh Look at What YOU Can Do On SharePoint Without Server Code" href="http://feedproxy.google.com/~r/JoelsSharepointLand/~3/yUWHPIaPaPU/ViewPost.aspx"&gt;JQuery - A Fresh Look at What YOU Can Do On SharePoint Without Server Code&lt;/a&gt; by &lt;a href="http://www.sharepointjoel.com"&gt;Joel Oleson&lt;/a&gt;  &lt;li&gt;&lt;a title="Permanent Link to Calling SharePoint web services using jQuery" href="http://blog.nvise.com/2008/10/calling-sharepoint-web-services-using-jquery/"&gt;Calling SharePoint web services using jQuery&lt;/a&gt; by &lt;a href="http://blog.nvise.com"&gt;Catalin DICU&lt;/a&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;I bet you are probably asking yourself “so what do TunnelPoint and ProduShare” have to do with this? Well.. let me tell you..&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TunnelPoint&lt;/strong&gt;, this is basically “the BDC in the cloud” (copyright by Daniel). What it does it connects a SharePoint list with a webservice that is available in the cloud, so it’s actually a broker between SharePoint and the cloud. So instead of a webpart that is showing stockqoutes in your site, we push stockqoutes in your SharePoint list. Meaning that &lt;strong&gt;it is&lt;/strong&gt; SharePoint data.. and you know what that means.. it means that you can act on it and use it using out-of-the-box SharePoint functionality like alerts, workflow, views with totals, max, sum’s that creates a much more richer experience than a simple webpart does that shows data that is and stays external.. Imagine that with the availability of hundreds of webservices/api’s that provide some sort of value that you want to have &lt;strong&gt;in&lt;/strong&gt; SharePoint.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;ProduShare&lt;/strong&gt;, we all know the fantastic 40 templates right? We all know custom themes right and masterpages right? What is the downside of these things right now? They require server access to be installed (well maybe not the masterpages (but that’s detail ;)).. so what if you have a SharePoint environment where you cannot touch your server, like SharePoint online for example. Or you are a power-user and your IT department won’t let you use SharePoint Designer to customize your site. Well now, if your SharePoint environment is accessible via the internet, you can customize with a single click using ProduShare! ;) Just think of it as the Appstore for the IPhone but then for SharePoint.. &lt;/p&gt; &lt;p&gt;Please note, this post probably sounds very commercial but it’s really not my intention.. though of course I’m very biased about this whole thing since it’s our own product ;)&lt;/p&gt; &lt;p&gt;If you are interested in what some folks of the community thought about TunnelPoint check out the following posts :&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a title="Jaap Vossers' SharePoint Blog » TunnelPoint review" href="http://blog.vossers.com/index.php/2009/04/10/tunnelpoint-review/"&gt;TunnelPoint review&lt;/a&gt; by &lt;a href="http://blog.vossers.com/"&gt;Jaap Vossers&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a title="Permanent Link to Tunnelpoint SharePoint Services" href="http://www.marcvalk.net/2009/05/tunnelpoint-sharepoint-services/"&gt;Tunnelpoint SharePoint Services&lt;/a&gt; by &lt;a href="http://www.marcvalk.net/"&gt;Marc Valk&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;And if you want to be informed with all the things that are currently going on with these products or you want to try it out and give us feedback, tune into &lt;a href="http://community.zevenseas.com/Blogs/Hans"&gt;Hans’s blog&lt;/a&gt;! :)&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6338b87f-9997-46f9-a945-0bb35b522b31" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SharePoint" rel="tag"&gt;SharePoint&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TunnelPoint" rel="tag"&gt;TunnelPoint&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Assembly+free+solutions" rel="tag"&gt;Assembly free solutions&lt;/a&gt;,&lt;a href="http://technorati.com/tags/BPOS" rel="tag"&gt;BPOS&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=cOMdrZvxlDM:04Jtm0dNCU0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=cOMdrZvxlDM:04Jtm0dNCU0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=cOMdrZvxlDM:04Jtm0dNCU0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=cOMdrZvxlDM:04Jtm0dNCU0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=cOMdrZvxlDM:04Jtm0dNCU0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=cOMdrZvxlDM:04Jtm0dNCU0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/cOMdrZvxlDM" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/EsfaolCQ7fE" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Thu, 28 May 2009 20:16:59 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/05/28/tunnelpoint-and-produshare.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/cOMdrZvxlDM/tunnelpoint-and-produshare.aspx</feedburner:origLink></item><item><title>UpdateListItems vs ProcessBatchData to create Folders</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/w2EN_SK34js/updatelistitems-vs-processbatchdata-to-create-folders.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/05/11/updatelistitems-vs-processbatchdata-to-create-folders.aspx</guid><description>&lt;div class="ExternalClass4798DCBB6CB94135B7853858A05AE294"&gt;&lt;p&gt;Currently I’m busy in creating huge amounts of folders and I want to have the best performance doing so. So.. I know about the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.processbatchdata.aspx"&gt;ProcessBatchData&lt;/a&gt; method on the SPWeb object that is designed to do ‘batch’ stuff in a very optimized way. Only problem was that I never created folders by using this method.&lt;/p&gt; &lt;p&gt;I thought “hey.. a folder is just a list item with it’s content type set to Folder right?” So by defining the ContentType, the folders were created!! Yeah!! But… SharePoint now was treating this ListItem as a File so it uses the “Name” column instead of the “Title” column to display the Title. So every folder looked like this :&lt;/p&gt; &lt;p&gt;&lt;a href="http://community.zevenseas.com/Blogs/Robin/Lists/Photos/folders_notitle.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="folders_notitle[1]" border="0" alt="folders_notitle[1]" src="http://community.zevenseas.com/Blogs/Robin/Lists/Photos/folders_notitle.png" width="211" height="115"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;To fix this I tried the adding following fields : &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;BaseName&lt;/strong&gt;, generating error “Bad parameter passed to Web Server Extensions.  Check the information you entered and try again”  &lt;li&gt;&lt;strong&gt;Name&lt;/strong&gt;, generating error “One or more field types are not installed properly. Go to the list settings page to delete these fields”&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;in combination with the “urn:schemas-microsoft-com:office:office” schema and without but all the same result. &lt;/p&gt; &lt;p&gt;Here is the xml snippet which I use if you are interested ;)&lt;/p&gt;&lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:650px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;string&lt;/span&gt; methodFormat = &amp;quot;&lt;span style="color:#8b0000"&gt;&amp;lt;Method ID=\&amp;quot;{0}\&amp;quot;&amp;gt;&lt;/span&gt;&amp;quot; +
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&amp;quot;&lt;span style="color:#8b0000"&gt;&amp;lt;SetList&amp;gt;{1}&amp;lt;/SetList&amp;gt;&lt;/span&gt;&amp;quot; +
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&amp;quot;&lt;span style="color:#8b0000"&gt;&amp;lt;SetVar Name=\&amp;quot;ID\&amp;quot;&amp;gt;New&amp;lt;/SetVar&amp;gt;&lt;/span&gt;&amp;quot; +
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&amp;quot;&lt;span style="color:#8b0000"&gt;&amp;lt;SetVar Name=\&amp;quot;Cmd\&amp;quot;&amp;gt;Save&amp;lt;/SetVar&amp;gt;&lt;/span&gt;&amp;quot; +
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&amp;quot;&lt;span style="color:#8b0000"&gt;&amp;lt;SetVar Name=\&amp;quot;urn:schemas-microsoft-com:office:office#Title\&amp;quot;&amp;gt;{2}&amp;lt;/SetVar&amp;gt;&lt;/span&gt;&amp;quot; +                
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&amp;quot;&lt;span style="color:#8b0000"&gt;&amp;lt;SetVar Name=\&amp;quot;urn:schemas-microsoft-com:office:office#ContentType\&amp;quot;&amp;gt;Folder&amp;lt;/SetVar&amp;gt;&lt;/span&gt;&amp;quot; +
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&amp;quot;&lt;span style="color:#8b0000"&gt;&amp;lt;/Method&amp;gt;&lt;/span&gt;&amp;quot;;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;I found the &lt;a href="http://msdn.microsoft.com/en-us/library/ms455433.aspx"&gt;Save Method (RPC)&lt;/a&gt; page on MSDN which explains a lot of this mysterious CAML and tried a lot of different things but didn’t get any further. Maybe that was a good thing as well since it states that “&lt;em&gt;This method is deprecated and may not be supported in future releases. Instead, use the following Web service method: &lt;/em&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/lists.lists.updatelistitems.aspx"&gt;&lt;em&gt;UpdateListItems&lt;/em&gt;&lt;/a&gt;&lt;em&gt; Web service method&lt;/em&gt;.” So I went there and to my suprise (and delight) the method also accepts a ‘batch’ string. So by using the following snippet I managed to create all the folders I wanted :&lt;/p&gt;&lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:650px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;string&lt;/span&gt; methodFormatListItem = &amp;quot;&lt;span style="color:#8b0000"&gt;&amp;lt;Method ID='{0}' Cmd='New'&amp;gt; &lt;/span&gt;&amp;quot; +
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&amp;quot;&lt;span style="color:#8b0000"&gt;&amp;lt;Field Name='FSObjType'&amp;gt;1&amp;lt;/Field&amp;gt;&lt;/span&gt;&amp;quot; +
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&amp;quot;&lt;span style="color:#8b0000"&gt;&amp;lt;Field Name='BaseName'&amp;gt;{1}&amp;lt;/Field&amp;gt;&lt;/span&gt;&amp;quot; +
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px"&gt;&amp;quot;&lt;span style="color:#8b0000"&gt;&amp;lt;Field Name='ID'&amp;gt;New&amp;lt;/Field&amp;gt;&amp;lt;/Method&amp;gt;&lt;/span&gt;&amp;quot;;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;Only thing that keeps me worried is ‘ &lt;em&gt;how bad is the performance when using the webservice instead of the ProcessBatchData? &lt;/em&gt;’ By doing a test that creates 100 folders 9 times in a row I came up with the following results table (each number is the time measured in milliseconds) :&lt;/p&gt;
&lt;table border="0" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="117"&gt;ProcessBatchData&lt;/td&gt;
&lt;td width="109"&gt;UpdateListItems&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1916&lt;/td&gt;
&lt;td&gt;3236&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;874&lt;/td&gt;
&lt;td&gt;963&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1058&lt;/td&gt;
&lt;td&gt;846&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1310&lt;/td&gt;
&lt;td&gt;967&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;682&lt;/td&gt;
&lt;td&gt;1042&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;824&lt;/td&gt;
&lt;td&gt;1128&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;674&lt;/td&gt;
&lt;td&gt;1012&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;721&lt;/td&gt;
&lt;td&gt;1424&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;648&lt;/td&gt;
&lt;td&gt;1077&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;br&gt;And in a graph it looks like this:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://community.zevenseas.com/Blogs/Robin/Lists/Photos/webserviceprocessbatchdata.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="webserviceprocessbatchdata[1]" border="0" alt="webserviceprocessbatchdata[1]" src="http://community.zevenseas.com/Blogs/Robin/Lists/Photos/webserviceprocessbatchdata.png" width="475" height="286"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;So actually only the first hit is the most expensive one but after the first one, it becomes quite reasonable in my opinion. Of course the ProcessBatchData is the better performing one but the webservice wasn’t that bad as I thought it would be.&lt;/p&gt;
&lt;p&gt;Useful references:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/cc404818.aspx" href="http://msdn.microsoft.com/en-us/library/cc404818.aspx"&gt;Batch Updating List Items in Windows SharePoint Services 3.0&lt;/a&gt; 
&lt;li&gt;&lt;a title="http://www.sharepointblogs.com/smc750/archive/2008/04/03/spweb-processbatchdata-a-list-is-a-list-is-a-list.aspx" href="http://www.sharepointblogs.com/smc750/archive/2008/04/03/spweb-processbatchdata-a-list-is-a-list-is-a-list.aspx"&gt;SPWeb.ProcessBatchData. A list is a list is a list?&lt;/a&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9d5db360-ac74-424c-b65d-7747f9384e81" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SharePoint" rel="tag"&gt;SharePoint&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=Y-Wwut9ZS9M:RBJZPCKIwcg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=Y-Wwut9ZS9M:RBJZPCKIwcg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=Y-Wwut9ZS9M:RBJZPCKIwcg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=Y-Wwut9ZS9M:RBJZPCKIwcg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=Y-Wwut9ZS9M:RBJZPCKIwcg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=Y-Wwut9ZS9M:RBJZPCKIwcg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/Y-Wwut9ZS9M" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/w2EN_SK34js" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Mon, 11 May 2009 13:24:23 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/05/11/updatelistitems-vs-processbatchdata-to-create-folders.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/Y-Wwut9ZS9M/updatelistitems-vs-processbatchdata-to-create-folders.aspx</feedburner:origLink></item><item><title>zevenseas FeatureBlocker updated</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/PKcL3M_wE1I/zevenseas-featureblocker-updated.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/05/08/zevenseas-featureblocker-updated.aspx</guid><description>&lt;div class="ExternalClassE62BB67445B64BA5BC17565D856DA007"&gt;&lt;div class="ExternalClass66D5528EAD424328A2B3C38164A14D9F"&gt; &lt;p&gt;Just to let you know, I’ve updated my &lt;a href="http://community.zevenseas.com/Blogs/Robin/archive/2009/01/21/feature-blocker.aspx"&gt;FeatureBlocker&lt;/a&gt; solution. Now, next to disabling the activate/deactivate button, I’ve added the following ‘features’ :&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Hide the entire feature (row), this is great if you have an environment that has a lot of features and you want to hide those from your users.  &lt;li&gt;Redirect the users to another url once they click on the activate button  &lt;li&gt;Exclude farm administrators from having this ‘restrictions’ in place. &lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Here is a screenie how it looks in the application page in Central Admin ;)&lt;/p&gt; &lt;p&gt;&lt;a href="http://community.zevenseas.com/Blogs/Robin/Lists/Photos/featureblockerupdated.png"&gt;&lt;img src="http://community.zevenseas.com/Blogs/Robin/Lists/Photos/featureblockerupdated.png" width="640" height="127"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;So.. what are you waiting for? Grab it from codeplex &lt;a href="http://zsfeatureblocker.codeplex.com/"&gt;here&lt;/a&gt; ! ;) And let me know what you think!&lt;/p&gt;&lt;/div&gt; &lt;p&gt; &lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f1dfd171-539d-491b-89f5-75e53576c9c6" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SharePoint" rel="tag"&gt;SharePoint&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=2pauDpwfla0:f_e7h6TkJq0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=2pauDpwfla0:f_e7h6TkJq0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=2pauDpwfla0:f_e7h6TkJq0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=2pauDpwfla0:f_e7h6TkJq0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=2pauDpwfla0:f_e7h6TkJq0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=2pauDpwfla0:f_e7h6TkJq0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/2pauDpwfla0" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/PKcL3M_wE1I" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Fri, 08 May 2009 10:38:51 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/05/08/zevenseas-featureblocker-updated.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/2pauDpwfla0/zevenseas-featureblocker-updated.aspx</feedburner:origLink></item><item><title>Why I love twitter</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/f-4V_RI6nk0/why-i-love-twitter.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/05/04/why-i-love-twitter.aspx</guid><description>&lt;div class="ExternalClass05B0995657D143118CB16B30CC5F2C46"&gt;&lt;p&gt;This morning I had some troubles with my VPC.. for some weird reason, some webapplications kept prompting to authenticate while working locally on my VPC. But when accessing them remotely I had no problems at all. And I had the same problem last week, but then a simple reboot did the trick.. it didn’t do the trick this morning so I asked in twitter the following question :&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;quick #SharePoint question : wondering why all of a sudden certain webapps on my vpc keep asking for credentials.. resulting in 401.1's&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;And literally within minutes I had this result to solve my problem!! ;)&lt;/p&gt;  &lt;p&gt;&lt;img src="http://community.zevenseas.com/Blogs/Robin/Lists/Photos/whyilovetwitter.png"&gt; &lt;/p&gt;  &lt;p&gt;This truly, for me, makes twitter such a powerful social tool to have! So thanks all!&lt;/p&gt;  &lt;p&gt;FYI : if you want to know the solution, go to &lt;a title="http://support.microsoft.com/kb/896861" href="http://support.microsoft.com/kb/896861"&gt;http://support.microsoft.com/kb/896861&lt;/a&gt; and check method 2. That did the trick for me ;)&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=gQban_L6i5c:DzMxQIv03PI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=gQban_L6i5c:DzMxQIv03PI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=gQban_L6i5c:DzMxQIv03PI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=gQban_L6i5c:DzMxQIv03PI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=gQban_L6i5c:DzMxQIv03PI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=gQban_L6i5c:DzMxQIv03PI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/gQban_L6i5c" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/f-4V_RI6nk0" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Mon, 04 May 2009 13:51:26 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/05/04/why-i-love-twitter.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/gQban_L6i5c/why-i-love-twitter.aspx</feedburner:origLink></item><item><title>Assembly free Twitter-like solution for SharePoint</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/AueMFQytNLE/assembly-free-twitter-like-solution-for-sharepoint.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/04/29/assembly-free-twitter-like-solution-for-sharepoint.aspx</guid><description>&lt;div class="ExternalClass05DAAAC0C3964A6F925C08D822F8D69B"&gt;&lt;p&gt;I’m really impressed with the work that &lt;a href="http://community.zevenseas.com/Blogs/Daniel/default.aspx"&gt;Daniel&lt;/a&gt; is being doing lately with all the assembly free stuff.. and now he created a &lt;a href="http://community.zevenseas.com/Blogs/Daniel/archive/2009/04/28/taking-assembly-free-solutions-to-the-next-next-level-team-status-site-twitter.aspx"&gt;twitter like solution&lt;/a&gt; that is completely assembly free! And as Daniel says :&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;To be clear, this is &lt;strong&gt;simply&lt;/strong&gt; a Site Template. Nothing more, nothing less&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You obviously want to know how it looks right? Well here’s a screenshot..&lt;/p&gt;  &lt;p&gt;&lt;img src="http://community.zevenseas.com/blogs/daniel/Lists/Posts/Attachments/94/image_thumb_6009A02A.png"&gt; &lt;/p&gt;  &lt;p&gt;and if you are not really convinced you can try it out here on our &lt;a href="http://demo.zevenseas.com/sites/AssemblyFreeDemos/TeamStatus/default.aspx"&gt;demo page&lt;/a&gt; and use the following accounts to play with :&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Usernames: ZSHOSTED\teamstatus, ZSHOSTED\teamstatus2, ZSHOSTED\teamstatus3     &lt;br&gt;Passwords: (passwords are the same as username, eg. teamstatus, teamstatus2, teamstatus3&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Or if you want to download it (since it’s nothing more than a site template) you can grab it &lt;a href="http://www.zevenseas.com/go.aspx?TeamStatus=Download"&gt;here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Let us know what you think of it ! ;)&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=XHs_5255lIA:vhfEu2DpdXU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=XHs_5255lIA:vhfEu2DpdXU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=XHs_5255lIA:vhfEu2DpdXU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=XHs_5255lIA:vhfEu2DpdXU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=XHs_5255lIA:vhfEu2DpdXU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=XHs_5255lIA:vhfEu2DpdXU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/XHs_5255lIA" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/AueMFQytNLE" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Wed, 29 Apr 2009 08:56:59 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/04/29/assembly-free-twitter-like-solution-for-sharepoint.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/XHs_5255lIA/assembly-free-twitter-like-solution-for-sharepoint.aspx</feedburner:origLink></item><item><title>About custom Timer Jobs and SPJobLockTypes</title><link>http://feedproxy.google.com/~r/RobinsSharepointBlog/~3/BoHMX66ps6w/about-custom-timer-jobs-and-spjoblocktypes.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/04/24/about-custom-timer-jobs-and-spjoblocktypes.aspx</guid><description>&lt;div class="ExternalClassC5AE21744C3F430A857307EECA76E70F"&gt;&lt;p&gt;If you are just starting with creating your own custom timer jobs, you probably run into the posts of AC (&lt;a title="Creating Custom SharePoint Timer Jobs" href="http://www.andrewconnell.com/blog/articles/CreatingCustomSharePointTimerJobs.aspx"&gt;Creating Custom SharePoint Timer Jobs&lt;/a&gt; , &lt;a title="MOSS Timer Jobs - Create Your Own!" href="http://www.andrewconnell.com/blog/archive/2007/01/10/5704.aspx"&gt;MOSS Timer Jobs - Create Your Own!&lt;/a&gt;) and his MSDN article &lt;a title="Creating Custom Timer Jobs in Windows SharePoint Services 3.0" href="http://msdn.microsoft.com/en-us/library/cc406686.aspx"&gt;Creating Custom Timer Jobs in Windows SharePoint Services 3.0&lt;/a&gt; and you start using the examples provided and build your very own first timer job right? (I know I did .. and if it wasn’t for his posts and articles in the first place, this post wouldn’t exist ;)&lt;/p&gt;  &lt;p&gt;So what is this post about then? Well.. in all the examples provided you will see when defining the timer job the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spjoblocktype.aspx"&gt;SPJobLockType&lt;/a&gt; is set to “ContentDatabase”.&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; SharePointWarmupJob (SPWebApplication webApp)
      : &lt;span class="kwrd"&gt;base&lt;/span&gt;(Globals.JobName, webApp, &lt;span class="kwrd"&gt;null&lt;/span&gt;, SPJobLockType.ContentDatabase) {
      &lt;span class="kwrd"&gt;this&lt;/span&gt;.Title = Globals.JobName;&lt;/pre&gt;

&lt;p&gt;And when referring to the SDK for explanation this is what it says :&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;-&lt;/strong&gt; SPJobLockType.ContentDatabase   Locks the content database associated with the job 

    &lt;br&gt;&lt;strong&gt;-&lt;/strong&gt; SPJobLockType.Job   Locks the job to prevent multiple instances of the job from running on a single server 

    &lt;br&gt;&lt;strong&gt;-&lt;/strong&gt; SPJobLockType.None   No locking.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There is another post called &lt;a href="http://scothillier.spaces.live.com/blog/cns!8F5DEA8AEA9E6FBB!169.entry"&gt;Where is My Timer Job?&lt;/a&gt; by &lt;a href="http://scothillier.spaces.live.com/default.aspx"&gt;Scot Hillier&lt;/a&gt; where he tests what the real difference is between the &lt;strong&gt;Job &lt;/strong&gt;and the &lt;strong&gt;None&lt;/strong&gt; LockTypes and he discovers when setting these timerjobs in a multi server farm that the &lt;strong&gt;Job&lt;/strong&gt; LockType ensures that it only runs on one server. And the &lt;strong&gt;None&lt;/strong&gt; ensures that the job runs on every server. &lt;/p&gt;

&lt;p&gt;But Scot doesn’t mention what happens if you use the &lt;strong&gt;ContentDatabase&lt;/strong&gt; LockType.. in short, it’s almost the same as the Job one, meaning that it only runs one server.. &lt;strong&gt;BUT&lt;/strong&gt;..  as &lt;a href="http://peterkt.wordpress.com"&gt;Peter&lt;/a&gt; find out at &lt;a title="Permalink to Help needed with custom timerjob in SharePoint 2007" href="http://peterkt.wordpress.com/2009/04/22/help-needed-with-custom-timerjob-in-sharepoint-2007/"&gt;Help needed with custom timerjob in SharePoint 2007&lt;/a&gt; , the job runs &lt;strong&gt;for each&lt;/strong&gt; ContentDatabase that the WebApplication is associated with. Another (quite annoying) fact is that it is not that predictable &lt;strong&gt;when&lt;/strong&gt; it will run on the next content database.&lt;/p&gt;

&lt;p&gt;This usually is being discovered when the timer job is already in production (it’s pretty safe to assume that most developers don’t have multiple content databases associated with their WebApplications..) and at that time you don’t have a clue why it’s displaying this kind of behavior. &lt;/p&gt;

&lt;p&gt;So if you are not doing stuff that is bound to a specific ContentDatabase (like moving or backing up sitecollections (since sitecollections are stored per contentdatabase)) you are most of the time better of using the &lt;strong&gt;Job&lt;/strong&gt; SPLockType.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d21bf147-f3dc-4dfe-b69b-690bb3f6523b" style="padding-right:0px;display:inline;padding-left:0px;float:none;padding-bottom:0px;margin:0px;padding-top:0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SharePoint" rel="tag"&gt;SharePoint&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TimerJobs" rel="tag"&gt;TimerJobs&lt;/a&gt;&lt;/div&gt;
&lt;style&gt;
.ExternalClassC5AE21744C3F430A857307EECA76E70F .csharpcode, .ExternalClassC5AE21744C3F430A857307EECA76E70F .csharpcode pre
{font-size:small;color:black;font-family:consolas, &amp;quot;Courier New&amp;quot;, courier, monospace;background-color:#ffffff;}
.ExternalClassC5AE21744C3F430A857307EECA76E70F .csharpcode pre
{margin:0em;}
.ExternalClassC5AE21744C3F430A857307EECA76E70F .csharpcode .rem
{color:#008000;}
.ExternalClassC5AE21744C3F430A857307EECA76E70F .csharpcode .kwrd
{color:#0000ff;}
.ExternalClassC5AE21744C3F430A857307EECA76E70F .csharpcode .str
{color:#006080;}
.ExternalClassC5AE21744C3F430A857307EECA76E70F .csharpcode .op
{color:#0000c0;}
.ExternalClassC5AE21744C3F430A857307EECA76E70F .csharpcode .preproc
{color:#cc6633;}
.ExternalClassC5AE21744C3F430A857307EECA76E70F .csharpcode .asp
{background-color:#ffff00;}
.ExternalClassC5AE21744C3F430A857307EECA76E70F .csharpcode .html
{color:#800000;}
.ExternalClassC5AE21744C3F430A857307EECA76E70F .csharpcode .attr
{color:#ff0000;}
.ExternalClassC5AE21744C3F430A857307EECA76E70F .csharpcode .alt
{background-color:#f4f4f4;width:100%;margin:0em;}
.ExternalClassC5AE21744C3F430A857307EECA76E70F .csharpcode .lnum
{color:#606060;}
&lt;/style&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=xltuWgClYpg:h-l8NwEzUu8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=xltuWgClYpg:h-l8NwEzUu8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=xltuWgClYpg:h-l8NwEzUu8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=xltuWgClYpg:h-l8NwEzUu8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=xltuWgClYpg:h-l8NwEzUu8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=xltuWgClYpg:h-l8NwEzUu8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/xltuWgClYpg" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/RobinsSharepointBlog/~4/BoHMX66ps6w" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Fri, 24 Apr 2009 10:20:23 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/04/24/about-custom-timer-jobs-and-spjoblocktypes.aspx</feedburner:origLink><feedburner:origLink>http://feeds.zevenseas.com/~r/blogs_robin/~3/xltuWgClYpg/about-custom-timer-jobs-and-spjoblocktypes.aspx</feedburner:origLink></item></channel></rss>
