<?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.zevenseas.com/~d/styles/itemcontent.css"?><!--RSS generated by Windows SharePoint Services V3 RSS Generator on 7/11/2009 2:31:50 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>Sat, 11 Jul 2009 00:31:50 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><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.zevenseas.com/blogs_robin" type="application/rss+xml" /><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="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Re-using SharePoint controls</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/UVt6U8eRC38/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;</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></item><item><title>Why are PortalSiteMapProvider properties defined in the web.config?</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/NalzRG6ycCc/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;</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></item><item><title>Speaking at the SDN Event on 26th of June</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/zHjmntMXAj0/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;</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></item><item><title>New MOSS SP2 bug?</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/5bN0SVIXQcs/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="ExternalClass4A58DFE3BF874C59BFE71D219B4E7558"&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;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;/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;</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></item><item><title>TunnelPoint and ProduShare</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/cOMdrZvxlDM/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;</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></item><item><title>UpdateListItems vs ProcessBatchData to create Folders</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/Y-Wwut9ZS9M/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;</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></item><item><title>zevenseas FeatureBlocker updated</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/2pauDpwfla0/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;</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></item><item><title>Why I love twitter</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/gQban_L6i5c/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;</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></item><item><title>Assembly free Twitter-like solution for SharePoint</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/XHs_5255lIA/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;</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></item><item><title>About custom Timer Jobs and SPJobLockTypes</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/xltuWgClYpg/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;</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></item><item><title>DEVDAYS09 : SharePoint Application Pages.. what good are they and why should you use them?</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/4kKeIC7Ihj0/devdays09-sharepoint-application-pages-what-good-are-they-and-why-should-you-use-them.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/04/20/devdays09-sharepoint-application-pages-what-good-are-they-and-why-should-you-use-them.aspx</guid><description>&lt;div class="ExternalClass15C08C3AD9984197AA729E1FCDB46880"&gt;&lt;p&gt;  &lt;p&gt;  &lt;p&gt;There is a pretty cool thing going on at the dutch Micorosoft DevDays when it comes to getting speakers for the event.. Basically they are searching for speakers to cover the wildcard sessions. To apply for such a wildcard session they are going to aggregate blogs and search for the tag ‘Devdays’ and then show the results at &lt;a href="http://www.devdays.nl"&gt;www.devdays.nl&lt;/a&gt; and people can vote which session would be the most interesting one. &lt;/p&gt;  &lt;p&gt;Pretty neat eh? :) &lt;/p&gt;  &lt;p&gt;So here is my abstract on the session I want to do :&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Abstract&lt;/strong&gt;&lt;/p&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. And maybe you even want to store your configuration where SharePoint stores it configurations. .. ;) &lt;/p&gt;  &lt;p&gt;So my session will be about creating those fancy application pages and can be summarized into the following bullets :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;What is an Application Page? &lt;/li&gt;    &lt;li&gt;What SharePoint controls are there for me to re-use? &lt;/li&gt;    &lt;li&gt;How do I store my configuration? &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;#devdays09&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=4kKeIC7Ihj0:tbUzMRB5BIc: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=4kKeIC7Ihj0:tbUzMRB5BIc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=4kKeIC7Ihj0:tbUzMRB5BIc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=4kKeIC7Ihj0:tbUzMRB5BIc: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=4kKeIC7Ihj0:tbUzMRB5BIc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=4kKeIC7Ihj0:tbUzMRB5BIc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/4kKeIC7Ihj0" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Mon, 20 Apr 2009 21:13:16 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/04/20/devdays09-sharepoint-application-pages-what-good-are-they-and-why-should-you-use-them.aspx</feedburner:origLink></item><item><title>This form was customized not working with attachment – Solved!</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/r4_MrUEistA/this-form-was-customized-not-working-with-attachment-–-solved.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/03/31/this-form-was-customized-not-working-with-attachment-–-solved.aspx</guid><description>&lt;div class="ExternalClass828627227D08493F8332B67F1600A45E"&gt;&lt;p&gt;Remember the ‘&lt;a href="http://glorix.blogspot.com/2007/05/this-form-was-customized-not-working.html"&gt;This form was customized not working with attachment’&lt;/a&gt; error when you tried adding an attachment to your custom editform/newform which was built using SharePoint Designer? Well, while reading &lt;a href="http://spinsiders.com/laurar/"&gt;Laura Rogers’'s&lt;/a&gt; blog, I came across her &lt;a href="http://spinsiders.com/laurar/2009/02/18/fix-for-the-custom-form-attachments-issue/"&gt;post&lt;/a&gt; indicating that Microsoft finally released a hotfix for this issue! ;)&lt;/p&gt;  &lt;p&gt;Head over to &lt;a title="http://support.microsoft.com/kb/960311" href="http://support.microsoft.com/kb/960311"&gt;http://support.microsoft.com/kb/960311&lt;/a&gt; , download the hotfix and update your copy of SPD to create custom forms &lt;strong&gt;while&lt;/strong&gt; maintaining the attachment functionality!&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;ps. Pretty funny to see that when googling on ‘This form was customized not working with attachment’, the first hit is the post on my old &lt;a&gt;blog&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=r4_MrUEistA:Vi78OxHjoKg: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=r4_MrUEistA:Vi78OxHjoKg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=r4_MrUEistA:Vi78OxHjoKg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=r4_MrUEistA:Vi78OxHjoKg: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=r4_MrUEistA:Vi78OxHjoKg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=r4_MrUEistA:Vi78OxHjoKg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/r4_MrUEistA" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Tue, 31 Mar 2009 15:40:00 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/03/31/this-form-was-customized-not-working-with-attachment-–-solved.aspx</feedburner:origLink></item><item><title>A dutch SharePint this upcoming friday..</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/pZ7Z4ytz-7k/a-dutch-sharepint-this-upcoming-friday-.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/03/31/a-dutch-sharepint-this-upcoming-friday-.aspx</guid><description>&lt;div class="ExternalClassF725E57ADAF24C1E9CDEA2384DE8175D"&gt;&lt;p&gt;&lt;img src="http://www.21apps.com/wp-content/uploads/2009/01/sparepintlargeblack.png"&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you like &lt;strong&gt;beers&lt;/strong&gt; (or any other beverage) and like &lt;strong&gt;SharePoint &lt;/strong&gt;then you most likely like &lt;strong&gt;SharePint&lt;/strong&gt;! Come and join us this friday evening in Amsterdam! Together with &lt;a href="http://www.sharepointjoel.com/"&gt;Joel&lt;/a&gt;, &lt;a href="http://www.sharepointmadscientist.com/default.aspx"&gt;Mike&lt;/a&gt;, &lt;a href="http://blog.mastykarz.nl/"&gt;Waldek&lt;/a&gt;, &lt;a href="http://blogs.microsoft.nl/blogs/mhoekstra"&gt;Matthijs&lt;/a&gt;, &lt;a href="http://www.tonstegeman.com/Blog/default.aspx"&gt;Ton&lt;/a&gt;, the whole zevenseas team and many others, we’ll be drinking beers and gossiping about the SharePoint community and maybe (just maybe…) we’re even going to talk about SharePoint ;)&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Where and when?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Starting around 19h..  @ De Veranda (&lt;a href="http://www.deveranda.nl"&gt;http://www.deveranda.nl&lt;/a&gt;)    &lt;br&gt;Amstelveenseweg 764     &lt;br&gt;Amsterdam     &lt;br&gt;&lt;/p&gt;  &lt;p&gt;See you there! :)&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=pZ7Z4ytz-7k:Z_0d2rKkHJg: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=pZ7Z4ytz-7k:Z_0d2rKkHJg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=pZ7Z4ytz-7k:Z_0d2rKkHJg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=pZ7Z4ytz-7k:Z_0d2rKkHJg: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=pZ7Z4ytz-7k:Z_0d2rKkHJg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=pZ7Z4ytz-7k:Z_0d2rKkHJg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/pZ7Z4ytz-7k" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Tue, 31 Mar 2009 14:11:05 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/03/31/a-dutch-sharepint-this-upcoming-friday-.aspx</feedburner:origLink></item><item><title>Application Pages and choosing the right master page</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/0g96gS8L-0M/application-pages-and-choosing-the-right-master-page.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/03/30/application-pages-and-choosing-the-right-master-page.aspx</guid><description>&lt;div class="ExternalClass91D58B604CED4175A89622AC35BB6F8E"&gt;&lt;p&gt;In the past few months I’ve gained some experience in building custom application pages. And I wanted to share some things I’ve come across while building those pages.    &lt;br&gt;First of all when provisioning these pages, you have two choices of folders to put them in.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;ADMIN folder, use this folder when your application pages should be accessed &lt;strong&gt;only &lt;/strong&gt;via the Central Admin. &lt;/li&gt;    &lt;li&gt;LAYOUTS folder, use this folder when developing application pages that can be accessed by every web or site. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Next to those two folder options you also have the choice of which masterpage to use. When creating Application Pages that end up in the&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;ADMIN&lt;/strong&gt; folder (12hive/Templates/ADMIN) attach the following masterpage: &lt;/li&gt; &lt;/ul&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="asp"&gt;&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; MasterPageFile=&amp;quot;~/_admin/admin.master&amp;quot; Inherits=&amp;quot;Custom_Solution.Custom_Class&amp;quot; %&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;span class="asp"&gt;&lt;strong&gt;LAYOUTS&lt;/strong&gt; folder (12hive/Templates/LAYOUTS) attach one of the following masterpages:&lt;/span&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="asp"&gt;&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; MasterPageFile=&amp;quot;~/_layouts/application.master&amp;quot; Inherits=&amp;quot;Custom_Solution.Custom_Class&amp;quot; %&amp;gt;&lt;/span&gt;
&lt;span class="asp"&gt;&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; MasterPageFile=&amp;quot;~/_layouts/layouts.master&amp;quot; Inherits=&amp;quot;Custom_Solution.Custom_Class&amp;quot; %&amp;gt;&lt;br&gt;&lt;/span&gt;&lt;span class="asp"&gt;&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; MasterPageFile=&amp;quot;~/_layouts/simple.master&amp;quot; Inherits=&amp;quot;Custom_Solution.Custom_Class&amp;quot; %&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="asp"&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;span class="asp"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;style&gt;
.ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode, .ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode pre
{font-size:small;color:black;font-family:consolas, &amp;quot;Courier New&amp;quot;, courier, monospace;background-color:#ffffff;}
.ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode pre
{margin:0em;}
.ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode .rem
{color:#008000;}
.ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode .kwrd
{color:#0000ff;}
.ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode .str
{color:#006080;}
.ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode .op
{color:#0000c0;}
.ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode .preproc
{color:#cc6633;}
.ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode .asp
{background-color:#ffff00;}
.ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode .html
{color:#800000;}
.ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode .attr
{color:#ff0000;}
.ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode .alt
{background-color:#f4f4f4;width:100%;margin:0em;}
.ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode .lnum
{color:#606060;}
&lt;/style&gt;&lt;style&gt;
.ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode, .ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode pre
{font-size:small;color:black;font-family:consolas, &amp;quot;Courier New&amp;quot;, courier, monospace;background-color:#ffffff;}
.ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode pre
{margin:0em;}
.ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode .rem
{color:#008000;}
.ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode .kwrd
{color:#0000ff;}
.ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode .str
{color:#006080;}
.ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode .op
{color:#0000c0;}
.ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode .preproc
{color:#cc6633;}
.ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode .asp
{background-color:#ffff00;}
.ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode .html
{color:#800000;}
.ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode .attr
{color:#ff0000;}
.ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode .alt
{background-color:#f4f4f4;width:100%;margin:0em;}
.ExternalClass91D58B604CED4175A89622AC35BB6F8E .csharpcode .lnum
{color:#606060;}
&lt;/style&gt;

&lt;p&gt;Below is a finding of some weird behavior I came across when I accidently was referring to a masterpage that was in another folder than the page.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Page location&lt;strong&gt;: ADMIN folder
      &lt;br&gt;&lt;/strong&gt;Referenced masterpage&lt;strong&gt;: ~/layouts/simple.master&lt;/strong&gt;&lt;/li&gt;

  &lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Symptom&lt;/strong&gt; : Simple page with some TextBoxes that were loaded with data from a database and at the bottom a button to save changes. When I clicked the button I immediately got a “&lt;em&gt;The security validation for this page is invalid&lt;/em&gt;” error.&lt;/li&gt;

    &lt;li&gt;&lt;strong&gt;Solution : &lt;/strong&gt;Change the masterpage to ~/_admin/admin.master or to ~/_layouts/application.master&lt;/li&gt;
  &lt;/ul&gt;
&lt;/ul&gt;

&lt;p&gt;So I reckon it’s best to use the masterpages that you can find in the corresponding folder. Just to avoid the troubles you &lt;strong&gt;might&lt;/strong&gt;  get ;)

  &lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=0g96gS8L-0M:wWt06n0Dyvs: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=0g96gS8L-0M:wWt06n0Dyvs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=0g96gS8L-0M:wWt06n0Dyvs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=0g96gS8L-0M:wWt06n0Dyvs: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=0g96gS8L-0M:wWt06n0Dyvs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=0g96gS8L-0M:wWt06n0Dyvs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/0g96gS8L-0M" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Mon, 30 Mar 2009 14:56:02 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/03/30/application-pages-and-choosing-the-right-master-page.aspx</feedburner:origLink></item><item><title>LCM updated</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/M4gY1VX6nH8/lcm-updated.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/03/27/lcm-updated.aspx</guid><description>&lt;div class="ExternalClass77BEBC3A855946FE9A40907F36C530BA"&gt;&lt;p&gt;A quick update from the LCM front.. I made the following tweaks:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Only WSS controls in the application pages so the solution works on WSS-only installations as well.&lt;/li&gt;    &lt;li&gt;When a site get’s deleted and the checkbox “Log deletions in SharePoint” is checked, now the storing the data of the site is done by making use of webservices. I had some trouble in accessing the Central Admin without being farm admin (and why and how is another blogpost itself which will be out very shortly ;)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You can still get it here from &lt;a href="http://www.codeplex.com/zsLCM"&gt;CodePlex&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=M4gY1VX6nH8:8gsLWGIGNDM: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=M4gY1VX6nH8:8gsLWGIGNDM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=M4gY1VX6nH8:8gsLWGIGNDM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=M4gY1VX6nH8:8gsLWGIGNDM: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=M4gY1VX6nH8:8gsLWGIGNDM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=M4gY1VX6nH8:8gsLWGIGNDM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/M4gY1VX6nH8" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Fri, 27 Mar 2009 12:32:51 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/03/27/lcm-updated.aspx</feedburner:origLink></item><item><title>Extending CQWP by doing a bottom-up aggregation</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/8ijtchhyJvA/extending-cqwp-by-doing-a-bottom-up-aggregation.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/03/25/extending-cqwp-by-doing-a-bottom-up-aggregation.aspx</guid><description>&lt;div class="ExternalClass02FA488A2CDD454E89D76873C1BA8F53"&gt;&lt;p&gt;You might wonder what bottom up aggregation means in this context.. well.. let me explain this by using the following example:&lt;/p&gt;  &lt;p&gt;Let’s say you have a portal with the following structure&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Main Portal&lt;/strong&gt;       &lt;ul&gt;       &lt;li&gt;Departments &lt;/li&gt;        &lt;li&gt;&lt;strong&gt;Products&lt;/strong&gt;           &lt;ul&gt;           &lt;li&gt;&lt;strong&gt;Product A&lt;/strong&gt;               &lt;ul&gt;               &lt;li&gt;&lt;strong&gt;Document Library&lt;/strong&gt; &lt;/li&gt;             &lt;/ul&gt;           &lt;/li&gt;            &lt;li&gt;Product B              &lt;ul&gt;               &lt;li&gt;Document Library &lt;/li&gt;             &lt;/ul&gt;           &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;and you want to aggregate all the information from the bottom (Product A) to the upper most level (Main Portal). But you don’t want any information from other products or even from Departments. Now by default the CQWP will aggregate everything &lt;strong&gt;under&lt;/strong&gt; a given site/sitecollection. &lt;/p&gt;  &lt;p&gt;So.. what to do? First we create our own version of the CQWP by inheriting from it like this:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; BottomUpAggregationWebPart :
 Microsoft.SharePoint.Publishing.WebControls.ContentByQueryWebPart&lt;/pre&gt;
&lt;style&gt;
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode, .ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode pre
{font-size:small;color:black;font-family:consolas, &amp;quot;Courier New&amp;quot;, courier, monospace;background-color:#ffffff;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode pre
{margin:0em;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .rem
{color:#008000;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .kwrd
{color:#0000ff;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .str
{color:#006080;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .op
{color:#0000c0;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .preproc
{color:#cc6633;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .asp
{background-color:#ffff00;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .html
{color:#800000;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .attr
{color:#ff0000;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .alt
{background-color:#f4f4f4;width:100%;margin:0em;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .lnum
{color:#606060;}
&lt;/style&gt;

&lt;p&gt;To change the result of the CQWP we can manipulate the DataTable that is created by the CQWP by using a delegate like this:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnInit(EventArgs e)
{
    &lt;span class="kwrd"&gt;this&lt;/span&gt;.ProcessDataDelegate += &lt;span class="kwrd"&gt;new&lt;/span&gt; ProcessData(modifyData);            
    &lt;span class="kwrd"&gt;base&lt;/span&gt;.OnInit(e);
}&lt;/pre&gt;
&lt;style&gt;
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode, .ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode pre
{font-size:small;color:black;font-family:consolas, &amp;quot;Courier New&amp;quot;, courier, monospace;background-color:#ffffff;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode pre
{margin:0em;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .rem
{color:#008000;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .kwrd
{color:#0000ff;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .str
{color:#006080;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .op
{color:#0000c0;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .preproc
{color:#cc6633;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .asp
{background-color:#ffff00;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .html
{color:#800000;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .attr
{color:#ff0000;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .alt
{background-color:#f4f4f4;width:100%;margin:0em;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .lnum
{color:#606060;}
&lt;/style&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; DataTable modifyData(DataTable dt)
{
    &lt;span class="rem"&gt;//do something &lt;/span&gt;
    &lt;span class="kwrd"&gt;return&lt;/span&gt; dt;
}&lt;/pre&gt;
&lt;style&gt;
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode, .ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode pre
{font-size:small;color:black;font-family:consolas, &amp;quot;Courier New&amp;quot;, courier, monospace;background-color:#ffffff;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode pre
{margin:0em;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .rem
{color:#008000;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .kwrd
{color:#0000ff;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .str
{color:#006080;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .op
{color:#0000c0;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .preproc
{color:#cc6633;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .asp
{background-color:#ffff00;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .html
{color:#800000;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .attr
{color:#ff0000;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .alt
{background-color:#f4f4f4;width:100%;margin:0em;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .lnum
{color:#606060;}
&lt;/style&gt;

&lt;p&gt;For every row in the DataTable there is a column called “WebId’. This GUID is , as you might have guessed, the ID of the web where the item belongs to. So, all we need to do is filter out all the rows where the WebId is not part of the parent chain. To determine which web is part of the chain I’ve created the following recursive method:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; DetermineDepth(SPWeb web, &lt;span class="kwrd"&gt;ref&lt;/span&gt; List&amp;lt;Guid&amp;gt; webIds)
{
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (web != &lt;span class="kwrd"&gt;null&lt;/span&gt;)
    {
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (web.Url != SPContext.Current.Site.RootWeb.Url)
        {
            webIds.Add(web.ID);
            DetermineDepth(web.ParentWeb, &lt;span class="kwrd"&gt;ref&lt;/span&gt; webIds);
        }
        &lt;span class="kwrd"&gt;else&lt;/span&gt;
        {
            webIds.Add(SPContext.Current.Site.RootWeb.ID);
        }
    }
}&lt;/pre&gt;

&lt;p&gt;Next is the filtering itself which looks this &lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; DataTable modifyData(DataTable dt)
{
    &lt;span class="rem"&gt;//Getting a List with all the SPWeb.ID's from the current SPWeb to the RootWeb of the SiteCollection&lt;/span&gt;
    List&amp;lt;Guid&amp;gt; webIds = &lt;span class="kwrd"&gt;null&lt;/span&gt;;
    webIds = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;Guid&amp;gt;();
    DetermineDepth(SPContext.Current.Web, &lt;span class="kwrd"&gt;ref&lt;/span&gt; webIds);

    webIds.Sort();

    List&amp;lt;DataRow&amp;gt; rowsToDelete = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;DataRow&amp;gt;();
    &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (DataRow row &lt;span class="kwrd"&gt;in&lt;/span&gt; dt.Rows)
    {
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (!webIds.Contains(&lt;span class="kwrd"&gt;new&lt;/span&gt; Guid(row[&lt;span class="str"&gt;&amp;quot;WebId&amp;quot;&lt;/span&gt;].ToString())))
        {
                rowsToDelete.Add(row);
        }
    }

    &lt;span class="rem"&gt;//Delete the rows&lt;/span&gt;
    &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (DataRow row &lt;span class="kwrd"&gt;in&lt;/span&gt; rowsToDelete)
    {
        row.Delete();
    }

    &lt;span class="kwrd"&gt;return&lt;/span&gt; dt;
}&lt;/pre&gt;

&lt;p&gt;And that’s it! ;) &lt;/p&gt;

&lt;p&gt;The only thing to keep in mind is that when you have set the item limit in the presentation settings, this item limit is set &lt;strong&gt;before&lt;/strong&gt; you have the chance to modify the DataTable. So it’s best to to not have an item limit at all or a modified one. If you wish to modify the property in code, here’s the snippet which you can use:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;this&lt;/span&gt;.ItemLimit = -1;&lt;/pre&gt;
&lt;style&gt;
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode, .ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode pre
{font-size:small;color:black;font-family:consolas, &amp;quot;Courier New&amp;quot;, courier, monospace;background-color:#ffffff;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode pre
{margin:0em;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .rem
{color:#008000;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .kwrd
{color:#0000ff;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .str
{color:#006080;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .op
{color:#0000c0;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .preproc
{color:#cc6633;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .asp
{background-color:#ffff00;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .html
{color:#800000;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .attr
{color:#ff0000;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .alt
{background-color:#f4f4f4;width:100%;margin:0em;}
.ExternalClass02FA488A2CDD454E89D76873C1BA8F53 .csharpcode .lnum
{color:#606060;}
&lt;/style&gt;

&lt;p&gt;While I’m covering the subject of the CQWP,  I also want to share some experiences and assumptions that I had when dealing with it. (Please note that for the most time when I’m developing with SharePoint I really tend to stick to WSS ;) &lt;/p&gt;

&lt;p&gt;One of the assumptions I had was that the CQWP aggregated based on a given content type &lt;strong&gt;OR &lt;/strong&gt;list type/template in the properties of the webpart. However, as I found out, this is not the case.. it’s an &lt;strong&gt;AND &lt;/strong&gt;operation&lt;strong&gt;..&lt;/strong&gt;  so when setting these properties programmatically it took me a while to figure out which ones to use. But fortunately enough I managed ;) &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.publishing.webcontrols.contentbyquerywebpart.servertemplate.aspx"&gt;ServerTemplate&lt;/a&gt;, the template ID of the list/document library. So 101 for Document Libraries for example &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.publishing.webcontrols.contentbyquerywebpart.contenttypename.aspx"&gt;ContentTypeName&lt;/a&gt;, the name of the ContentType &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.publishing.webcontrols.contentbyquerywebpart.contenttypebeginswithid.aspx"&gt;ContentTypeBeginsWithId&lt;/a&gt;, the id of the Parent ContentType. Please note here, that in some cases you need to have the Parent of the Parent of the Child ContentType due the fact that when a ContentType is added to a list, it automatically is being marked as a child. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;To conclude this post, here are some articles that helped get going:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a title="http://blogs.pointbridge.com/Blogs/monnette_jeff/Pages/Post.aspx?_ID=2" href="http://blogs.pointbridge.com/Blogs/monnette_jeff/Pages/Post.aspx?_ID=2"&gt;Enhancing the ContentByQueryWebPart – Part 1&lt;/a&gt; by &lt;a href="http://blogs.pointbridge.com/Blogs/monnette_jeff"&gt;Jeff Monnette&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a title="Content Query Web Part vs. Custom Aggregation Web Part" href="http://blog.mastykarz.nl/content-query-web-part-vs-custom-aggregation-web-part/"&gt;Content Query Web Part vs. Custom Aggregation Web Part&lt;/a&gt; by &lt;a href="http://blog.mastykarz.nl"&gt;Waldek Mastykarz&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=8ijtchhyJvA:Le2nMTuYf5M: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=8ijtchhyJvA:Le2nMTuYf5M:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=8ijtchhyJvA:Le2nMTuYf5M:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=8ijtchhyJvA:Le2nMTuYf5M: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=8ijtchhyJvA:Le2nMTuYf5M:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=8ijtchhyJvA:Le2nMTuYf5M:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/8ijtchhyJvA" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Wed, 25 Mar 2009 13:16:57 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/03/25/extending-cqwp-by-doing-a-bottom-up-aggregation.aspx</feedburner:origLink></item><item><title>Taking Assembly Free Solutions to the Next Level</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/FbFEDTSZ440/taking-assembly-free-solutions-to-the-next-level.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/03/25/taking-assembly-free-solutions-to-the-next-level.aspx</guid><description>&lt;div class="ExternalClass21621A07AE9E4AE5A77A070DBE656C3A"&gt;&lt;p&gt;My mate &lt;a href="http://community.zevenseas.com/Blogs/Daniel"&gt;Daniel&lt;/a&gt; beautifully crafted a post about &lt;a href="http://community.zevenseas.com/Blogs/Daniel/archive/2009/03/24/taking-assembly-free-solutions-to-the-next-level.aspx#postComments"&gt;creating assembly free solutions&lt;/a&gt; by using nothing more then :&lt;/p&gt;  &lt;li&gt;SharePoint Designer &lt;/li&gt;  &lt;li&gt;Javascript &lt;/li&gt;  &lt;li&gt;SharePoint Web Services    &lt;br&gt;    &lt;p&gt;Check out his post on what he has done for us so we can enter our timesheets more effectively ;)&lt;/p&gt;    &lt;p&gt; &lt;/li&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=FbFEDTSZ440:oamaBjGRrGM: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=FbFEDTSZ440:oamaBjGRrGM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=FbFEDTSZ440:oamaBjGRrGM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=FbFEDTSZ440:oamaBjGRrGM: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=FbFEDTSZ440:oamaBjGRrGM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=FbFEDTSZ440:oamaBjGRrGM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/FbFEDTSZ440" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Wed, 25 Mar 2009 08:12:10 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/03/25/taking-assembly-free-solutions-to-the-next-level.aspx</feedburner:origLink></item><item><title>Anonymous Application Pages</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/bwjdthoOqxg/anonymous-application-pages.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/03/20/anonymous-application-pages.aspx</guid><description>&lt;div class="ExternalClass0D6A611F4D794D73AA522117FAB5DBA3"&gt;&lt;p&gt;I wanted to make an application page become accessible for anonymous users but I was constantly being prompted with a logon box whenever I told the the page that it should inherit from a custom class like so&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="asp"&gt;&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; MasterPageFile=&amp;quot;~/_layouts/simple.master&amp;quot; Inherits=&amp;quot;zevenseas.ApplicationPages.CustomClass&amp;quot;  %&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style&gt;
.ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode, .ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode pre
{font-size:small;color:black;font-family:consolas, &amp;quot;Courier New&amp;quot;, courier, monospace;background-color:#ffffff;}
.ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode pre
{margin:0em;}
.ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode .rem
{color:#008000;}
.ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode .kwrd
{color:#0000ff;}
.ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode .str
{color:#006080;}
.ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode .op
{color:#0000c0;}
.ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode .preproc
{color:#cc6633;}
.ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode .asp
{background-color:#ffff00;}
.ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode .html
{color:#800000;}
.ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode .attr
{color:#ff0000;}
.ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode .alt
{background-color:#f4f4f4;width:100%;margin:0em;}
.ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode .lnum
{color:#606060;}
&lt;/style&gt;

&lt;p&gt;So what to do? Well the first thing I found that I should inherit my CustomClass from the &lt;a title="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.unsecuredlayoutspagebase_methods.aspx" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.unsecuredlayoutspagebase_methods.aspx"&gt;UnsecuredLayoutsPageBase&lt;/a&gt; instead of the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.layoutspagebase.aspx"&gt;LayoutsPageBase&lt;/a&gt;. Secondly, by inheriting from this other page, I have gained access to the following property called &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.unsecuredlayoutspagebase.allowanonymousaccess.aspx"&gt;AllowAnonymousAccess&lt;/a&gt;, which should be overriden like this: &lt;/p&gt;

&lt;ol&gt;
  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; AllowAnonymousAccess
{
     get
     {
         &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;
      }
}&lt;/pre&gt;
  &lt;style&gt;
.ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode, .ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode pre
{font-size:small;color:black;font-family:consolas, &amp;quot;Courier New&amp;quot;, courier, monospace;background-color:#ffffff;}
.ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode pre
{margin:0em;}
.ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode .rem
{color:#008000;}
.ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode .kwrd
{color:#0000ff;}
.ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode .str
{color:#006080;}
.ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode .op
{color:#0000c0;}
.ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode .preproc
{color:#cc6633;}
.ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode .asp
{background-color:#ffff00;}
.ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode .html
{color:#800000;}
.ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode .attr
{color:#ff0000;}
.ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode .alt
{background-color:#f4f4f4;width:100%;margin:0em;}
.ExternalClass0D6A611F4D794D73AA522117FAB5DBA3 .csharpcode .lnum
{color:#606060;}
&lt;/style&gt;&lt;/ol&gt;

&lt;p&gt;Once overridden and setting it to true, your custom application page becomes accessible for anonymous users as well ;)&lt;/p&gt;

&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:cecfa4db-f892-4004-ba0e-6bbb97b5023f" 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;/div&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=bwjdthoOqxg:FA1joZMI34Y: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=bwjdthoOqxg:FA1joZMI34Y:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=bwjdthoOqxg:FA1joZMI34Y:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=bwjdthoOqxg:FA1joZMI34Y: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=bwjdthoOqxg:FA1joZMI34Y:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=bwjdthoOqxg:FA1joZMI34Y:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/bwjdthoOqxg" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Fri, 20 Mar 2009 14:21:32 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/03/20/anonymous-application-pages.aspx</feedburner:origLink></item><item><title>Seminar Invitation: Meet International and Local SharePoint Experts in Amsterdam</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/bj2-PoReswg/seminar-invitation-meet-international-and-local-sharepoint-experts-in-amsterdam.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/03/09/seminar-invitation-meet-international-and-local-sharepoint-experts-in-amsterdam.aspx</guid><description>&lt;div class="ExternalClass038855DA0D8E438B889C20DB98551018"&gt;
&lt;p&gt;Together with Quest and Microsoft, we are a part of a mini SharePoint conference here in Amsterdam that will take place on the 3rd of April. Here’s the agenda and notice that I’m actually going to co-host a sessions with none other than our very own SharePoint godfather &lt;a href="http://www.sharepointjoel.com/"&gt;Joel Oleson&lt;/a&gt;! ;) And even &lt;a href="http://www.sharepointmadscientist.com/"&gt;Mike - Mad Scientist - Watson&lt;/a&gt; is here and our local heroes &lt;a href="http://blog.mastykarz.nl/"&gt;Waldek Mastykarz&lt;/a&gt; and &lt;a href="http://blogs.microsoft.nl/blogs/mhoekstra"&gt;Matthijas Hoekstra&lt;/a&gt; are part of the team as well. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.quest.com/common/default.aspx?backtourl=/common/registration.aspx?requestdefid=22926"&gt;&lt;img border="0" alt="Register Now" src="http://www.questsoftware.nl/images/buttons/register-now.gif"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.quest.com/common/default.aspx?backtourl=/common/registration.aspx?requestdefid=22926"&gt;http://www.quest.com/common/default.aspx?backtourl=/common/registration.aspx?requestdefid=22926&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Big thanks to &lt;a href="http://www.questsoftware.nl/"&gt;Quest Software&lt;/a&gt; for putting it on.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Join international and local SharePoint experts in Amsterdam and learn how to master your SharePoint environment. Sponsored by Quest Software and Microsoft. &lt;br&gt;&lt;/strong&gt;&lt;br&gt;Date: Friday, April 3rd, 2009 &lt;br&gt;Time: 10.30 - 16.30 (Registration begins at 10.00) &lt;br&gt;Location: Auditorium, Microsoft Netherlands (&lt;a href="http://maps.google.ca/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=microsoft+office+amsterdam&amp;amp;sll=45.313696,-75.922668&amp;amp;sspn=0.010487,0.00618&amp;amp;g=15+Grengold+Way,+Kanata,+ON&amp;amp;ie=UTF8&amp;amp;ll=52.30428,4.725494&amp;amp;spn=0.583604,0.395508&amp;amp;z=10&amp;amp;iwloc=A"&gt;map&lt;/a&gt;)  &lt;br&gt;Cost: Free (Lunch is included)&lt;/p&gt;
&lt;h6&gt;Agenda:&lt;/h6&gt;
&lt;p&gt;10:00 Registration&lt;/p&gt;
&lt;p&gt;10:30 Welcome and Introductions&lt;/p&gt;
&lt;p&gt;10:40 SharePoint Successful Deployments in 10 Steps  &lt;br&gt;&lt;a href="http://www.sharepointjoel.com/"&gt;&lt;em&gt;Joel Oleson&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, Quest Software&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;11:30 SharePoint, the Social Computing Platform (Business Strategy and Adoption) &lt;br&gt;&lt;a href="http://community.zevenseas.com/Blogs/Daniel"&gt;&lt;em&gt;Daniel McPherson&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, zevenseas&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;12:30 Lunch&lt;/p&gt;
&lt;p&gt;1:30  SharePoint Logical and Physical Infrastructure Fundamentals   &lt;br&gt;&lt;a href="http://www.sharepointjoel.com/"&gt;&lt;em&gt;Joel Oleson&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, Quest Software &amp;amp; &lt;/em&gt;&lt;a href="http://community.zevenseas.com/blogs/robin"&gt;&lt;em&gt;Robin Meure&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, zevenseas&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;2:30 Backup Demystified &lt;br&gt;&lt;a href="http://www.sharepointmadscientist.com/"&gt;&lt;em&gt;Mike Watson&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, Quest Software&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;3:30 Experts Panel and Q&amp;amp;A&lt;/p&gt;
&lt;p&gt;4:30 Wrap Up&lt;/p&gt;
&lt;h6&gt;Meet the Experts:&lt;/h6&gt;
&lt;p&gt;&lt;strong&gt;Joel Oleson&lt;/strong&gt;&lt;strong&gt; &lt;br&gt;&lt;strong&gt;SharePoint Expert, &lt;/strong&gt;&lt;/strong&gt;&lt;strong&gt;Quest Software&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Joel is a senior product manager and SharePoint evangelist at Quest where he is responsible for product direction and strategy. He is well known in the SharePoint community as an enthusiastic trainer, evangelist and architect and he maintains a popular blog. Prior to Quest, Joel worked at Microsoft and was a part of the first Microsoft global deployment of SharePoint. During his Microsoft tenure Joel helped various customers achieve the critical governance they needed to upgrade and achieve scale with SharePoint 2007. He would later design the extranet and hosted SharePoint deployments. &lt;a href="http://www.sharepointjoel.com/"&gt;http://www.sharepointjoel.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;br&gt;Mike Watson&lt;/strong&gt;&lt;strong&gt; &lt;br&gt;&lt;/strong&gt;&lt;strong&gt;SharePoint Expert, Quest Software&lt;/strong&gt; &lt;br&gt;Mike Watson (MCSE, MCSA) is a senior product manager at Quest specializing in SharePoint manageability, scalability and availability. Before moving to Quest Software, Mike was instrumental in planning and deploying Microsoft Managed Services and Microsoft Online, as well as Microsoft Services efforts such as MOSSRAP (MOSS Risk Assessment Program) and SLM (Service Level Manager). &lt;a href="http://www.sharepointmadscientist.com/"&gt;http://www.sharepointmadscientist.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Daniel McPherson &lt;br&gt;&lt;/strong&gt;&lt;strong&gt;SharePoint Business Consultant and Co-Founder, zevenseas &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Daniel has been involved in SharePoint since attending the first public announcement of project “Tahoe” at the Microsoft Technical Briefing in January 1999. It has had a profound impact on his career, taking him to the doorstep of hundreds of companies, of all shapes and sizes, in a range of industries,and in over 25 different countries. After 10 years at Microsoft, spent mostly in Microsoft Consulting Services, he is a co-founder and business consultant. &lt;a href="http://community.zevenseas.com/Blogs/Daniel"&gt;http://community.zevenseas.com/Blogs/Daniel&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Robin Meure &lt;br&gt;&lt;/strong&gt;&lt;strong&gt;SharePoint Technical Consultant, z&lt;/strong&gt;&lt;strong&gt;evenseas&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Robin joined Atos Origin in 2004 and was immediately introduced to the rapidly emerging Microsoft SharePoint Products and Technologies At Zevenseas, Robin helps customers plan, deploy and build solutions on SharePoint, and participates actively in the broader SharePoint community though his blog and many contributions to Codeplex. He is a founding member of the Elite SharePoint Black Belts established by Microsoft in Holland to promote skills sharing among its partners. &lt;a href="http://community.zevenseas.com/blogs/robin"&gt;http://community.zevenseas.com/blogs/robin&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Matthijs Hoekstra &lt;br&gt;Developer Evangelist, Microsoft Netherlands  &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Matthijs is a Developer Evangelist at Microsoft in The Netherlands. He joined Microsoft in 2002, worked 6.5 years as a consultant for Microsoft Services working with customers in the areas Information Worker, Portals and e-business. Matthijs mostly works with products as: SharePoint Portal Server, Windows SharePoint Services, Office, Unified Communications and .NET. &lt;a href="http://blogs.microsoft.nl/blogs/mhoekstra"&gt;http://blogs.microsoft.nl/blogs/mhoekstra&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;br&gt;Waldek Mastykarz &lt;br&gt;SharePoint MVP &lt;br&gt;&lt;/strong&gt;Waldek Mastykarz is a Dutch SharePoint MVP specialized in Web Content Management solutions in Microsoft Office SharePoint Server 2007, web standards and accessibility. Waldek Mastykarz is a Dutch SharePoint MVP specialized in Web Content Management solutions in Microsoft Office SharePoint Server 2007, web standards and accessibility. &lt;a href="http://blog.mastykarz.nl/"&gt;http://blog.mastykarz.nl&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=bj2-PoReswg:feYIgEuP3jY: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=bj2-PoReswg:feYIgEuP3jY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=bj2-PoReswg:feYIgEuP3jY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=bj2-PoReswg:feYIgEuP3jY: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=bj2-PoReswg:feYIgEuP3jY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=bj2-PoReswg:feYIgEuP3jY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/bj2-PoReswg" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Mon, 09 Mar 2009 08:11:00 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/03/09/seminar-invitation-meet-international-and-local-sharepoint-experts-in-amsterdam.aspx</feedburner:origLink></item><item><title>SPApplicationPool</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/RgBKGpPQYhI/spapplicationpool.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/03/04/spapplicationpool.aspx</guid><description>&lt;div class="ExternalClassCAE985DDBD9140CDAAE940EFBCF42A0F"&gt;&lt;p&gt;As always, I was wandering through the OM of our beloved SharePoint searching for getting to the Application Pools of a WebApplication. The case is that for our beloved LCM tool I was trying to get all the application pool accounts and add those to the LCM web as contributors. &lt;/p&gt;  &lt;p&gt;Since I came across an issue regarding the fact that when a site or a web is deleted and you’ve checked ‘Log the deletions in SharePoint’ in the configuration page. The application pool accounts couldn’t get access to the “Deleted Sites” list on the LCM Web. (btw this is still an issue and is not solved by adding the accounts to the Web. This is due to the fact that the service accounts must be added as a farm admin to the Central Admin.. and we don’t want that either ;). &lt;/p&gt;  &lt;p&gt;But to come back to the topic.. I’ve found an interesting class and that is the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spapplicationpool.aspx"&gt;SPApplicationPool&lt;/a&gt; class. And.. well.. I was shocked to find out that there is a property called “Password”. Well actually I wasn’t shocked to found out that the property existed.. but I was shocked to find out that the property was not only settable but also &lt;strong&gt;gettable!!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;So when running the following piece of code.. &lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;SPWebApplicationCollection webApplicationCollection = SPWebService.ContentService.WebApplications;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;foreach&lt;/span&gt; (SPWebApplication webApplication &lt;span class="kwrd"&gt;in&lt;/span&gt; webApplicationCollection)&lt;/pre&gt;

  &lt;pre class="alt"&gt;{            &lt;/pre&gt;

  &lt;pre&gt;    SPApplicationPool applicationPool = webApplication.ApplicationPool;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;WebApplication &amp;quot;&lt;/span&gt; + webApplication.Name);&lt;/pre&gt;

  &lt;pre&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Username &amp;quot;&lt;/span&gt; + applicationPool.Username);&lt;/pre&gt;

  &lt;pre class="alt"&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Password &amp;quot;&lt;/span&gt; + applicationPool.Password);&lt;/pre&gt;

  &lt;pre&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style&gt;
.ExternalClassCAE985DDBD9140CDAAE940EFBCF42A0F .csharpcode, .ExternalClassCAE985DDBD9140CDAAE940EFBCF42A0F .csharpcode pre
{font-size:small;color:black;font-family:consolas, &amp;quot;Courier New&amp;quot;, courier, monospace;background-color:#ffffff;}
.ExternalClassCAE985DDBD9140CDAAE940EFBCF42A0F .csharpcode pre
{margin:0em;}
.ExternalClassCAE985DDBD9140CDAAE940EFBCF42A0F .csharpcode .rem
{color:#008000;}
.ExternalClassCAE985DDBD9140CDAAE940EFBCF42A0F .csharpcode .kwrd
{color:#0000ff;}
.ExternalClassCAE985DDBD9140CDAAE940EFBCF42A0F .csharpcode .str
{color:#006080;}
.ExternalClassCAE985DDBD9140CDAAE940EFBCF42A0F .csharpcode .op
{color:#0000c0;}
.ExternalClassCAE985DDBD9140CDAAE940EFBCF42A0F .csharpcode .preproc
{color:#cc6633;}
.ExternalClassCAE985DDBD9140CDAAE940EFBCF42A0F .csharpcode .asp
{background-color:#ffff00;}
.ExternalClassCAE985DDBD9140CDAAE940EFBCF42A0F .csharpcode .html
{color:#800000;}
.ExternalClassCAE985DDBD9140CDAAE940EFBCF42A0F .csharpcode .attr
{color:#ff0000;}
.ExternalClassCAE985DDBD9140CDAAE940EFBCF42A0F .csharpcode .alt
{background-color:#f4f4f4;width:100%;margin:0em;}
.ExternalClassCAE985DDBD9140CDAAE940EFBCF42A0F .csharpcode .lnum
{color:#606060;}
&lt;/style&gt;

&lt;p&gt;..it will give you the passwords of each application pool account. Though I must say that this of course will only run if you logged in as a farm admin since this comes out of the SharePoint.Administration namespace. But I must say that this is quite tricky..  especially when there is another property in there called “SecurePassword”. &lt;/p&gt;

&lt;p&gt;Please let me know your thoughts ;)&lt;/p&gt;

&lt;p&gt;I’m going back to work on a different solution to store those damned deleted sites.. &lt;/p&gt;

&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:68586827-a3c4-4e6d-9fb2-36e9979815ad" 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/Administration" rel="tag"&gt;Administration&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=RgBKGpPQYhI:wFLy2DJZMV8: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=RgBKGpPQYhI:wFLy2DJZMV8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=RgBKGpPQYhI:wFLy2DJZMV8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=RgBKGpPQYhI:wFLy2DJZMV8: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=RgBKGpPQYhI:wFLy2DJZMV8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=RgBKGpPQYhI:wFLy2DJZMV8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/RgBKGpPQYhI" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Wed, 04 Mar 2009 21:46:55 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/03/04/spapplicationpool.aspx</feedburner:origLink></item><item><title>Did you know..</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/aQGJEOHe1Es/did-you-know-.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/03/02/did-you-know-.aspx</guid><description>&lt;div class="ExternalClass8FD4CE017BAD4BDCB63B8B2846FE5C0C"&gt;&lt;p&gt;that &lt;a href="http://blogs.microsoft.co.il/blogs/itaysk/archive/2009/02/28/sharepoint-calendar-hard-limit.aspx"&gt;SharePoint’s calendar has a hard limit of 1000 items per calendar month.&lt;/a&gt; and that &lt;a href="http://blogs.microsoft.co.il/blogs/itaysk/archive/2009/02/28/copied-folders-are-not-indexed-bug.aspx"&gt;Copied folders are not indexed&lt;/a&gt; ?&lt;/p&gt;  &lt;p&gt;No? Well neither did I but luckily we have someone in the SharePoint blog-o-sphere who does.. and that is  &lt;a href="http://blogs.microsoft.co.il/blogs/itaysk"&gt;Itay Shakury&lt;/a&gt; ;) &lt;/p&gt;  &lt;p&gt;Thanks Itay!&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9a4faae4-f8f4-445b-9268-3da6b05d0495" 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/Bugs" rel="tag"&gt;Bugs&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=aQGJEOHe1Es:rM6VfbXsCKc: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=aQGJEOHe1Es:rM6VfbXsCKc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=aQGJEOHe1Es:rM6VfbXsCKc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=aQGJEOHe1Es:rM6VfbXsCKc: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=aQGJEOHe1Es:rM6VfbXsCKc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=aQGJEOHe1Es:rM6VfbXsCKc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/aQGJEOHe1Es" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Mon, 02 Mar 2009 12:34:04 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/03/02/did-you-know-.aspx</feedburner:origLink></item><item><title>Love Fridays AND Mondays at zevenseas. Time for a change?</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/fi4mokr1PfQ/love-fridays-and-mondays-at-zevenseas-time-for-a-change.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/02/20/love-fridays-and-mondays-at-zevenseas-time-for-a-change.aspx</guid><description>&lt;div class="ExternalClassE4D0127DE8F94EB19808BD7D69D27538"&gt;&lt;p&gt;If you didn’t read &lt;a href="http://community.zevenseas.com/Blogs/Daniel"&gt;Dan&lt;/a&gt;’s post then you have a second chance by reading this one .. and if you already did read his post.. just read this one again ;)&lt;/p&gt;  &lt;p&gt;Basically it all comes down to.. If you &lt;strong&gt;love&lt;/strong&gt; SharePoint (its all we do), &lt;strong&gt;care&lt;/strong&gt; about the community (blog, twitter, tools), want to create innovative solutions for great clients &lt;strong&gt;and&lt;/strong&gt; want to be part of a team that is committed to making consulting the high value profession it once was..&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;I think I speak for the whole zevenseas team when I say that we absolutely love Mondays and Fridays.&lt;/p&gt;    &lt;p&gt;On Monday mornings we get to work with some of the worlds biggest and best companies, on projects that &lt;a href="http://community.zevenseas.com/Blogs/Daniel/Lists/Posts/ViewPost.aspx?ID=73"&gt;push collaboration and SharePoint to the limits&lt;/a&gt;. Friday mornings start with breakfast at our local cafe, time where we can share our week over coffee, learning and solving each others problems as we go. We then head to the office where we spend the rest of the day trying to impress each other with our latest demos or get to work on our &lt;a href="http://community.zevenseas.com/Blogs/Daniel/Lists/Posts/ViewPost.aspx?ID=67"&gt;next&lt;/a&gt; &lt;a href="http://community.zevenseas.com/Blogs/Robin/archive/2009/02/06/zevenseas-lcm-it’s-finally-here.aspx"&gt;cool&lt;/a&gt; &lt;a href="http://community.zevenseas.com/Blogs/Daniel/Lists/Posts/ViewPost.aspx?ID=59"&gt;tool&lt;/a&gt;. &lt;/p&gt;    &lt;p&gt;Making sure we enjoy what we do was one of the most important goals we set ourselves when we began this boutique consultancy way back in Jan 2008. We have succeed by focusing not just on the Mondays and Fridays, but by taking a long term view. We all have the &lt;strong&gt;best equipment&lt;/strong&gt;, we have the &lt;strong&gt;time&lt;/strong&gt; to share and &lt;strong&gt;build&lt;/strong&gt; knowledge, and through &lt;a href="http://community.zevenseas.com/Blogs/Daniel/Lists/Posts/ViewPost.aspx?ID=76"&gt;conference&lt;/a&gt; attendance and community &lt;strong&gt;engagement&lt;/strong&gt;, we’ve built a network of experts that help us to stay up to date. &lt;/p&gt;    &lt;p&gt;I have to say, our first year has gone better than we could ever have expected, except for one thing. We would really like to (carefully) grow our team here in the Netherlands.  &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Its time you started loving Mondays and Fridays too (and of course all the days in between).&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=fi4mokr1PfQ:AwQ61Oxy_Ho: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=fi4mokr1PfQ:AwQ61Oxy_Ho:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=fi4mokr1PfQ:AwQ61Oxy_Ho:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=fi4mokr1PfQ:AwQ61Oxy_Ho: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=fi4mokr1PfQ:AwQ61Oxy_Ho:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=fi4mokr1PfQ:AwQ61Oxy_Ho:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/fi4mokr1PfQ" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Fri, 20 Feb 2009 16:07:02 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/02/20/love-fridays-and-mondays-at-zevenseas-time-for-a-change.aspx</feedburner:origLink></item><item><title>LCM Questions answered</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/EudMRZrWnQU/lcm-questions-answered.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/02/20/lcm-questions-answered.aspx</guid><description>&lt;div class="ExternalClass271DF4FA1C5C459F8AE200C1BD955FA1"&gt;&lt;p&gt;Just got an email a week ago with some questions about the updated LCM tool and I wanted to share the questions and answers with you ;)&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Q: How does it determine the site owners? Does it go through the group? What if you have no groups, just permissions of &amp;quot;full control&amp;quot;?&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;A: It checks for all users with the full control permission mask&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Q: How resource intensive is this process?&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;A: Depends on the size of your farm really. I've created a timerjob especially for this to let it run in the background. So it shouldn't really matter but it is recommended to let it run in non production hours&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Q: On site deletion, we noticed that the list entry for the delete action had an extra .bak in the file path, was that our misconfiguration&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;A: With the configuration of the path, please be sure to end the pathname with an '\' character. Other than that it should be outputted correctly.&lt;/li&gt;   &lt;/ul&gt; &lt;/ol&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ed47f911-0885-4e76-b746-f0bc724501ae" 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/LCM" rel="tag"&gt;LCM&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=EudMRZrWnQU:ftjY8Y9U6tE: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=EudMRZrWnQU:ftjY8Y9U6tE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=EudMRZrWnQU:ftjY8Y9U6tE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=EudMRZrWnQU:ftjY8Y9U6tE: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=EudMRZrWnQU:ftjY8Y9U6tE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=EudMRZrWnQU:ftjY8Y9U6tE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/EudMRZrWnQU" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Fri, 20 Feb 2009 13:41:17 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/02/20/lcm-questions-answered.aspx</feedburner:origLink></item><item><title>Some background about the development of LCM</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/AXiW4GzwkB0/some-background-about-the-development-of-lcm.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/02/17/some-background-about-the-development-of-lcm.aspx</guid><description>&lt;div class="ExternalClassA7D5336E68824851B7F7D953D1A715F7"&gt;&lt;p&gt;This post is about why it took me so long to get the &lt;a href="http://community.zevenseas.com/Blogs/Robin/archive/2009/02/06/zevenseas-lcm-it’s-finally-here.aspx"&gt;updated LCM version&lt;/a&gt; on &lt;a href="http://www.codeplex.com/zsLCM"&gt;CodePlex&lt;/a&gt; ;)&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Redesign, redesign and redesign. Well.. as in all applications that you built there is always a point where you decide to redesign and refactor your code and during the development of the LCM, I’ve had a lot of new insights. Mainly due the fact I was building this thing was in my spare time so I was taking all my experience from the ‘daily work’ into the project. So here are some examples of finding new stuff to reuse straight out of the SharePoint toolbox.     &lt;ul&gt;       &lt;li&gt;Classes          &lt;ul&gt;           &lt;li&gt;(&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.sppersistedobject.aspx"&gt;SPPersistedObject&lt;/a&gt;) One of the first things I was trying to do was using the PropertyBag of Central Administration webapplication to store settings in. Now this all went fine for the gathering of sitecollections on all webapplications if the timerjob was being set to the Central Admin webapp itself. But it didn’t work for getting the configuration of the SiteCapture Deletion settings when a site or a web got deleted.               &lt;br&gt;Why not? Well it is good practice that every web application should have it’s &lt;a href="http://blogs.msdn.com/joelo/archive/2007/10/29/sharepoint-app-pool-settings.aspx"&gt;own application pool account&lt;/a&gt;. So while running with elevated privileges you will be impersonated to the application pool account of the particular web application where the site or webs get deleted. And since that account is different then the one from the Central Admin webapp, the propertybag does not meet the requirement. So what does then? As you might have guessed.. it’s the SPPersistedObject Class. Why? Well, using this class you can save properties to the given Web Application you are configuring and therefore the application pool account has access to it. Next to this, it’s very easy using this object to have different settings per Web Application ;) &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;        &lt;li&gt;Controls          &lt;ul&gt;           &lt;li&gt;(&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.webapplicationselector.aspx"&gt;WebApplicationSelector&lt;/a&gt;) Since the stapling of the SiteDeletion Capture is only stapled to new sites and not the existing sites I created a simple function to enable the feature on all the webs and sitecollections on a given web application. To select a web application I used a standard .NET dropdownlist that featured all the webapplications of the current farm. And while looking at out-of-the-box application (like the Site Collection List page) I noticed Microsoft used a control called the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.webapplicationselector.aspx"&gt;WebApplicationSelector&lt;/a&gt; which does everything for you. One of the most useful features is that it keeps the context of the selected Web Application consistent in every page where the control is being used. &lt;/li&gt;            &lt;li&gt;(&lt;a title="SchedulePicker Class (Microsoft.SharePoint.WebControls)" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.schedulepicker.aspx"&gt;SchedulePicker&lt;/a&gt;) To schedule the timerjobs I first used two standard .NET dropdownlists. One had all the all the days of the week and the other had every hour from a day. But I didn’t find it very ideal and I started browsing the SharePoint pages again to see what MS uses to set schedules. And from there I found the SchedulePicker class in the ControlTemplates folder (it’s actually being used in the page where you define the schedule of the WSS search). I explicitly didn’t use any MOSS specific controls to ensure that the solution can be used in every SharePoint environment (though that control is much better looking ;) &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;I also wanted to check on MOSS Usage Details.. Was I in for a surprise when I found out that simple things just as checking if the Usage Analysis Processing was enabled in the SSP was just not available using the OM! I still don’t really understand why the SharedResourceProvider class is internal and sealed. It makes things very complicated when you want to do something with the SSP (like determining the default SSP.. )      &lt;br&gt;      &lt;br&gt;Using Reflector I found out that the usage reports that you see, when you enable the MOSS Usage Reporting functionality, that the report is generated using Stored Procedures that are stored in the SSP Database. Using the GUID of each sitecollection as a parameter for the stored procedure I’m able to retrieve all the processed usage data.       &lt;br&gt;      &lt;br&gt;But(!) since it’s very &lt;a href="http://blogs.msdn.com/mikefitz/archive/2005/04/01/404802.aspx"&gt;unsupported&lt;/a&gt; to access stored procedures/tables/etc directly from the SharePoint databases I decided not to implement/hack my way around to get it.. (yet…;)       &lt;br&gt;&lt;/li&gt;    &lt;li&gt;Testing, testing a tool like the LCM is very difficult. I don’t know how your VPC looks like but mine hasn’t got a lot of sitecollections and webs that are ‘used’ as in a typical SharePoint production environment. Nor the fact that my VPC is up and running 24/7 in order to let the Usage Analysis Process to be processing.. But when you test things out, you come across some interesting things like &lt;a href="http://community.zevenseas.com/Blogs/Robin/archive/2009/01/05/lockissue-and-lastcontentmodifieddate.aspx"&gt;when you change or set a lockissue on a sitecollection you are also updating the ‘lastcontentmodifieddate’&lt;/a&gt;. And one of the things I check whether or not a sitecollection is being used is by checking that property! ;)      &lt;br&gt;&lt;/li&gt;    &lt;li&gt;Changing my mind all the time.. I think this was the largest time consumer of them all to be honest ;)     &lt;br&gt;One example : “ &lt;em&gt;Should I only check sitecollections or should I also check for webs.. If I also check on webs, how do I deal with the whole locking mechanism then? And where to store the data.. Should I use two lists, working out a master detail relationship? Or should I store in a SPPersistedObject ? What is the limit of the SPPersistedObject&lt;/em&gt; ? “ &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;So there you have my excuse that I took my almost a year to get it out there.. &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7c95a00f-b64d-488e-8e1d-7e2e19e5fa70" 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/CodePlex" rel="tag"&gt;CodePlex&lt;/a&gt;,&lt;a href="http://technorati.com/tags/LCM" rel="tag"&gt;LCM&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=AXiW4GzwkB0:HG9aW0n4HMs: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=AXiW4GzwkB0:HG9aW0n4HMs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=AXiW4GzwkB0:HG9aW0n4HMs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=AXiW4GzwkB0:HG9aW0n4HMs: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=AXiW4GzwkB0:HG9aW0n4HMs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=AXiW4GzwkB0:HG9aW0n4HMs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/AXiW4GzwkB0" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Tue, 17 Feb 2009 22:16:08 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/02/17/some-background-about-the-development-of-lcm.aspx</feedburner:origLink></item><item><title>zevenseas LCM.. it’s finally here!</title><link>http://feeds.zevenseas.com/~r/blogs_robin/~3/yQndwbPX4Mg/zevenseas-lcm-it’s-finally-here.aspx</link><guid isPermaLink="False">/Blogs/Robin/archive/2009/02/06/zevenseas-lcm-it’s-finally-here.aspx</guid><description>&lt;div class="ExternalClass603979F7ACCE43ECA0A2D0BEB9F0A82C"&gt;&lt;p&gt;After blogging about a year ago &lt;a title="Site Life Cycle Management V2 .. Why V2-" href="http://community.zevenseas.com/Blogs/Robin/archive/2008/02/29/site-life-cycle-management-v2-why-v2.aspx"&gt;Site Life Cycle Management V2 .. Why V2-&lt;/a&gt; I’ve finally come around and make it ‘BETA’ –able enough to put it on CodePlex for you to try out (and hopefully use ;)&lt;/p&gt;  &lt;p&gt;So what does it do? &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Captures sitedeletions and makes a backup first before deleting the site or web. &lt;/li&gt;    &lt;li&gt;Gathers sites that are unused (using the Usage info, Last Content Modified Date and Last Security Modified Date) &lt;/li&gt;    &lt;li&gt;Actions can be taken on this &amp;quot;unused&amp;quot; sites, such actions are      &lt;ul&gt;       &lt;li&gt;Mail the siteowner and informing them that their site is being unused &lt;/li&gt;        &lt;li&gt;Lock the site after a given period of time &lt;/li&gt;        &lt;li&gt;Delete the site after a given period time &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;br&gt;&lt;b&gt;Please review and test this application properly. Do not just install this application on your production environment. This solution is still in beta phase&lt;/b&gt;   &lt;h3&gt;Installation &lt;/h3&gt;  &lt;p&gt;Just click on setup.exe and make sure it installs onto your Central Administration Web Application. After the installation go to “Manage farm features” in the “Operations” tab and activate the following features    &lt;br&gt;• Lifecycle Management Delete Capture Stapling     &lt;br&gt;• Lifecycle Management UI     &lt;br&gt;The first feature ensures that the feature receiver that captures the deletion of a web or a site is stapled onto all the existing out-of-the-box site templates. Please note: all your existing sites don’t have the feature receiver attached yet. This must be done using the admin UI. Which brings us to the second feature that is there to make all the administration links appear in the “LifeCycle Management” in the “Application Management” tab like so : &lt;/p&gt;  &lt;p&gt;&lt;img src="http://community.zevenseas.com/Blogs/Robin/Lists/Photos/LCMUI.png"&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;h3&gt;Configuration &lt;/h3&gt;  &lt;h4&gt;Site deletion Capture Settings &lt;/h4&gt; &lt;img alt="deletioncapture.png" src="http://community.zevenseas.com/Blogs/Robin/Lists/Photos/deletioncapture.png"&gt;   &lt;ul&gt;   &lt;li&gt;First select the Web Application which you want to configure. &lt;/li&gt;    &lt;li&gt;Next you can install the event handler on the selected Web Application so that all the existing sites will get the capture functionality as well. Alternatively you can check whether the event handler is installed already. &lt;/li&gt;    &lt;li&gt;Next you can define the path where to backup up to when a site or web gets deleted      &lt;ul&gt;       &lt;li&gt;You can check whether or not to include a datetime stamp within the filename &lt;/li&gt;        &lt;li&gt;You can check to create a subfolder per sitecollection &lt;/li&gt;        &lt;li&gt;You can check to create a subfolder per web ((and if the above checkbox is checked) per sitecollection) &lt;/li&gt;        &lt;li&gt;You can check to log all the deletions in SharePoint (please note: this only works when the LCM site is created using the “Timerjob configuration” administration page) &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Timerjob Configuration &lt;/h4&gt; &lt;img alt="timerjobconfiguration.png" src="http://community.zevenseas.com/Blogs/Robin/Lists/Photos/timerjobconfiguration.png"&gt;   &lt;ul&gt;   &lt;li&gt;Choose the Web Application which you want to configure &lt;/li&gt;    &lt;li&gt;Define when a site should be marked as unused, by default this is set to 90 days. You have to option to check on three different kind of date that are tracked by SharePoint      &lt;ul&gt;       &lt;li&gt;Last Content Modified Date, this is the date when for the last time a particular content item (listitem, document, etc) was modified. &lt;/li&gt;        &lt;li&gt;Last Security Modified Date, this is the date when for the last time something has changed in the security settings. &lt;/li&gt;        &lt;li&gt;Last Usage Date, this is the date when an user for the last time has visited the site. (Please note : this is only available if you have “Analysis Processing” option enabled. And won’t go back further then one month) &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;The first “Action” to do something about those unused sites is to mail the siteowner of that particular site. Check “Mail siteowner before locking/deleting” to make this happen.      &lt;ul&gt;       &lt;li&gt;Define how many days the system must wait to advance to the next ‘Action’ level (eg, locking or deletion of the site) &lt;/li&gt;        &lt;li&gt;Define the subject of the mail that is send &lt;/li&gt;        &lt;li&gt;Define the body of the mail that is send &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;The second “Action” is locking the site. The type of locked that is used in this version is the ‘writelock’. This lock prevents the user to add or modify anything on the site.      &lt;ul&gt;       &lt;li&gt;Define how many days the system must wait to advance to the next ‘Action’ level (eg. deletion of the site or do nothing at all) &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;The third “Action” is the deletion of the site. I guess this action speaks for itself ;) &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Timerjob Scheduling &lt;/h4&gt; &lt;img alt="timerjobscheduling.png" src="http://community.zevenseas.com/Blogs/Robin/Lists/Photos/timerjobscheduling.png"&gt;   &lt;br&gt;After all the configuration you can choose to schedule a timerjob that will loop through all the sites at a given day and time.   &lt;br&gt;We have two different timerjobs :   &lt;ul&gt;   &lt;li&gt;Statistics Gathering Timer Job Schedule , this timerjob is responsible for gathering all the data about the sites &lt;/li&gt;    &lt;li&gt;Maintenance Timer Job Schedule, this timerjob is responsible for taking the actions on the gathered sites that are configured in the previous page &lt;/li&gt; &lt;/ul&gt;  &lt;br&gt;&lt;b&gt;Important!&lt;/b&gt; As can be read in the page, it’s very wise to schedule this timerjobs at off-peak hours. Since it can impact the performance of your farm.   &lt;h4&gt;Unused Sites Overview &lt;/h4&gt; &lt;img alt="overunusedsites.png" src="http://community.zevenseas.com/Blogs/Robin/Lists/Photos/overunusedsites.png"&gt;   &lt;br&gt;This page is also known as the ‘Manual’ LifeCycleManagement page, meaning that you can do the ‘automated’ by hand ;)   &lt;ul&gt;   &lt;li&gt;Mail, the selected site owner will be mailed using the mail template that is configured for the given Web Application. (Please note: this option is only available if you have a mail server are configured in your farm) &lt;/li&gt;    &lt;li&gt;Lock, the selected site will be write locked. &lt;/li&gt;    &lt;li&gt;Delete, the selected site will be deleted (Please note : make sure that the WebApplication is configured for capturing the deletion since this action is not responsible for creating a backup first) &lt;/li&gt;    &lt;li&gt;Gather, an one-time scheduled timerjob will be initiated and all the sites of the given WebApplication will be checked and marked as unused as how the Web Application is configured) &lt;/li&gt;    &lt;li&gt;Action, also an one-time scheduled timerjob will be initiated to perform the configured actions. &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Deleted Sites Overview &lt;/h4&gt;  &lt;p&gt;A simple overview page that shows you all the captured sites. This page is not really worth a picture ;)&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;h4&gt;Wishlist&lt;/h4&gt;  &lt;p&gt;My current wishlist/todo list is as follows:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Support for gathering webs and not only sitecollections. The code is already there but I have to create some UI and logic around it.&lt;/li&gt;    &lt;li&gt;Add variables for the emails&lt;/li&gt;    &lt;li&gt;Better reports about what is going on with the timerjobs &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;So there you have it again.. please let me know what you think of it. And please remember this is still a beta product so don’t put in production straightaway :)&lt;/p&gt;  &lt;p&gt;Oh yeah.. almost forgot, get it here : &lt;a title="http://www.codeplex.com/zsLCM" href="http://www.codeplex.com/zsLCM"&gt;http://www.codeplex.com/zsLCM&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ddf353f6-006e-42fb-ac64-232a0220abaf" 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/LifecycleMangement" rel="tag"&gt;LifecycleMangement&lt;/a&gt;,&lt;a href="http://technorati.com/tags/CodePlex" rel="tag"&gt;CodePlex&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=yQndwbPX4Mg:FWq4dRWzCkU: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=yQndwbPX4Mg:FWq4dRWzCkU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=yQndwbPX4Mg:FWq4dRWzCkU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.zevenseas.com/~ff/blogs_robin?a=yQndwbPX4Mg:FWq4dRWzCkU: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=yQndwbPX4Mg:FWq4dRWzCkU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogs_robin?i=yQndwbPX4Mg:FWq4dRWzCkU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogs_robin/~4/yQndwbPX4Mg" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robin Meure</dc:creator><pubDate>Fri, 06 Feb 2009 16:40:32 GMT</pubDate><feedburner:origLink>http://community.zevenseas.com/Blogs/Robin/archive/2009/02/06/zevenseas-lcm-it’s-finally-here.aspx</feedburner:origLink></item></channel></rss>
