<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7250242</id><updated>2012-01-28T05:50:29.653+10:00</updated><category term='performance'/><category term='sharepoint'/><category term='productivity'/><category term='meetings'/><category term='300'/><category term='tfs'/><category term='funny'/><category term='brisbane'/><category term='sql server'/><category term='leadership'/><category term='team system'/><category term='msf'/><title type='text'>www.superedge.net</title><subtitle type='html'>A blog about SHAREPOINT, software patterns, architectural designs, coding tips and sharing the love for the Beautiful Australia</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>63</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7250242.post-3035206757362148579</id><published>2010-04-30T12:05:00.000+10:00</published><updated>2010-05-19T16:57:04.416+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'></title><content type='html'>&lt;div style="width: 100%; font-family: verdana; color: #063e3f; font-size: large; font-weight: bold"&gt;Featured Articles    &lt;hr style="color: #063e3f" /&gt;&lt;/div&gt;  &lt;table border="0" width="783"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="text-align: justify; width: 32%; vertical-align: top" width="247"&gt;         &lt;p align="center"&gt;&lt;a href="http://novatecno.blogspot.com/2010/04/how-disable-sharepoint-designer-2007.html"&gt;&lt;img border="0" alt="sharepoint-designer-2010" src="http://lh6.ggpht.com/_embTfvHYYPE/S9o7CWh609I/AAAAAAAADws/u02VgqekIUA/sharepoint-designer-2010%5B2%5D.jpg?imgmax=800" width="127" height="103" /&gt;&lt;/a&gt; &lt;/p&gt;          &lt;div style="width: 100%; font-family: verdana; color: #063e3f; font-weight: bold"&gt;&lt;a href="http://novatecno.blogspot.com/2010/04/how-disable-sharepoint-designer-2007.html"&gt;Disable SharePoint Designer against your SharePoint sites programmatically&lt;/a&gt;&lt;/div&gt;       &lt;/td&gt;        &lt;td style="text-align: justify; vertical-align: top" width="20"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="div2" border="0" alt="div2" src="http://lh3.ggpht.com/_embTfvHYYPE/Sn2XGY3st2I/AAAAAAAADP8/ZhrJJo3mywY/div25.png?imgmax=800" width="15" height="165" /&gt; &lt;/td&gt;        &lt;td style="text-align: justify; width: 32%; vertical-align: top" width="247"&gt;         &lt;p align="center"&gt;&lt;a href="http://novatecno.blogspot.com/2010/04/increase-sharepoint-performance-retail.html"&gt;&lt;img border="0" alt="sharepoint-performance-debug-false-web-config_thumb" src="http://lh3.ggpht.com/_embTfvHYYPE/S8-0CvjlyeI/AAAAAAAADv4/5EEKfN6cOS4/sharepoint-performance-debug-false-web-config_thumb%5B4%5D.png?imgmax=800" width="218" height="94" /&gt;&lt;/a&gt; &lt;/p&gt;          &lt;div style="width: 100%; font-family: verdana; color: #063e3f; font-weight: bold"&gt;&lt;a href="http://novatecno.blogspot.com/2010/04/increase-sharepoint-performance-retail.html"&gt;SharePoint Performance. The use of retail mode&lt;/a&gt;&lt;/div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/td&gt;        &lt;td style="text-align: justify; vertical-align: top" width="20"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="div2" border="0" alt="div2" src="http://lh5.ggpht.com/_embTfvHYYPE/SpabiTQJpGI/AAAAAAAADgk/kLbXP4CeuOE/div25.png?imgmax=800" width="15" height="165" /&gt; &lt;/td&gt;        &lt;td style="text-align: justify; width: 32%; vertical-align: top" width="247"&gt;         &lt;p align="center"&gt;&lt;a href="http://novatecno.blogspot.com/2010/04/how-to-populate-objectdatasource.html"&gt;&lt;img border="0" alt="sharepoint-objectdatasource-spgridview-dataset-3_thumb" src="http://lh6.ggpht.com/_embTfvHYYPE/S9o7C1xU0AI/AAAAAAAADww/LKbfkHnYips/sharepoint-objectdatasource-spgridview-dataset-3_thumb%5B8%5D.jpg?imgmax=800" width="108" height="91" /&gt;&lt;/a&gt; &lt;/p&gt;          &lt;div style="width: 100%; font-family: verdana; color: #063e3f; font-weight: bold"&gt;&lt;a href="http://novatecno.blogspot.com/2010/04/how-to-populate-objectdatasource.html"&gt;How to Populate or convert an ObjectDataSource from a Data Set&lt;/a&gt;&lt;/div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="width: 100%; font-family: verdana; color: #063e3f; font-size: large; font-weight: bold"&gt;Technical Articles    &lt;hr style="color: #063e3f" /&gt;&lt;/div&gt;  &lt;table width="786"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="399"&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/S9o8YGBu3wI/AAAAAAAADw8/7MbaZ_tIWGU/s1600-h/ps%5B2%5D.gif"&gt;&lt;img border="0" alt="ps" src="http://lh6.ggpht.com/_embTfvHYYPE/S9o8Yhe5CJI/AAAAAAAADxA/Yc1kdZhhTdU/ps_thumb.gif?imgmax=800" width="20" height="16" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://novatecno.blogspot.com/2010/04/powershell-script-list-sites-web.html"&gt;Using PowerShell to list all the sites under a SharePoint Url&lt;/a&gt;           &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/So5We11vXlI/AAAAAAAADdI/XmzsJqakTA8/s1600-h/sp%5B2%5D.gif"&gt;           &lt;br /&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sp" border="0" alt="sp" src="http://lh5.ggpht.com/_embTfvHYYPE/So5WfwzjCoI/AAAAAAAADdM/CdHhNMYnL4o/sp_thumb.gif?imgmax=800" width="18" height="18" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://novatecno.blogspot.com/2010/04/how-to-customize-sharepoint-my-links.html"&gt;How to customize MyLinks control in SharePoint 2007&lt;/a&gt;           &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/So5We11vXlI/AAAAAAAADdI/XmzsJqakTA8/s1600-h/sp%5B2%5D.gif"&gt;           &lt;br /&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sp" border="0" alt="sp" src="http://lh5.ggpht.com/_embTfvHYYPE/So5WfwzjCoI/AAAAAAAADdM/CdHhNMYnL4o/sp_thumb.gif?imgmax=800" width="18" height="18" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://novatecno.blogspot.com/2010/02/connection-string-from-bdc-sharepoint.html"&gt;Using the BDC as a permission repository for data access&lt;/a&gt;           &lt;br /&gt;          &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/So5We11vXlI/AAAAAAAADdI/XmzsJqakTA8/s1600-h/sp%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sp" border="0" alt="sp" src="http://lh5.ggpht.com/_embTfvHYYPE/So5WfwzjCoI/AAAAAAAADdM/CdHhNMYnL4o/sp_thumb.gif?imgmax=800" width="18" height="18" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://novatecno.blogspot.com/2010/03/aptimize-bug-access-denied-sharepoint.html"&gt;Workaround for Aptimize bug and list access denied in SharePoint&lt;/a&gt;           &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/So5We11vXlI/AAAAAAAADdI/XmzsJqakTA8/s1600-h/sp%5B2%5D.gif"&gt;           &lt;br /&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sp" border="0" alt="sp" src="http://lh5.ggpht.com/_embTfvHYYPE/So5WfwzjCoI/AAAAAAAADdM/CdHhNMYnL4o/sp_thumb.gif?imgmax=800" width="18" height="18" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://novatecno.blogspot.com/2010/02/how-to-create-sharepoint-http-context.html"&gt;How to instantiate a HttpContext object from outside SharePoint&lt;/a&gt;&amp;#160; &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/So5We11vXlI/AAAAAAAADdI/XmzsJqakTA8/s1600-h/sp%5B2%5D.gif"&gt;           &lt;br /&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sp" border="0" alt="sp" src="http://lh5.ggpht.com/_embTfvHYYPE/So5WfwzjCoI/AAAAAAAADdM/CdHhNMYnL4o/sp_thumb.gif?imgmax=800" width="18" height="18" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://novatecno.blogspot.com/2009/08/how-to-versioning-settings-splist.html"&gt;Fixing versioning settings and picture library settings&lt;/a&gt;           &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/So5We11vXlI/AAAAAAAADdI/XmzsJqakTA8/s1600-h/sp%5B2%5D.gif"&gt;           &lt;br /&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sp" border="0" alt="sp" src="http://lh5.ggpht.com/_embTfvHYYPE/So5WfwzjCoI/AAAAAAAADdM/CdHhNMYnL4o/sp_thumb.gif?imgmax=800" width="18" height="18" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://novatecno.blogspot.com/2009/08/how-modify-splist-rss-programmatically.html"&gt;How to configure sharepoint lists RSS settings programmatically?&lt;/a&gt;           &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/So5We11vXlI/AAAAAAAADdI/XmzsJqakTA8/s1600-h/sp%5B2%5D.gif"&gt;           &lt;br /&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sp" border="0" alt="sp" src="http://lh5.ggpht.com/_embTfvHYYPE/So5WfwzjCoI/AAAAAAAADdM/CdHhNMYnL4o/sp_thumb.gif?imgmax=800" width="18" height="18" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://novatecno.blogspot.com/2009/03/how-to-setup-sharepoint-sites-for-https.html"&gt;How to setup SSL for multiple SharePoint sites?&lt;/a&gt;           &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/So5We11vXlI/AAAAAAAADdI/XmzsJqakTA8/s1600-h/sp%5B2%5D.gif"&gt;           &lt;br /&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sp" border="0" alt="sp" src="http://lh5.ggpht.com/_embTfvHYYPE/So5WfwzjCoI/AAAAAAAADdM/CdHhNMYnL4o/sp_thumb.gif?imgmax=800" width="18" height="18" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://novatecno.blogspot.com/2009/04/how-to-do-site-branding-in-sharepoint.html"&gt;Why it is important to know the difference between site content and site branding?&lt;/a&gt;           &lt;br /&gt;          &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/So5We11vXlI/AAAAAAAADdI/XmzsJqakTA8/s1600-h/sp%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sp" border="0" alt="sp" src="http://lh5.ggpht.com/_embTfvHYYPE/So5WfwzjCoI/AAAAAAAADdM/CdHhNMYnL4o/sp_thumb.gif?imgmax=800" width="18" height="18" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://novatecno.blogspot.com/2009/03/filling-soa-gaps.html"&gt;How to map and align your current architecture to the SOA map&lt;/a&gt;           &lt;br /&gt;          &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/So5We11vXlI/AAAAAAAADdI/XmzsJqakTA8/s1600-h/sp%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sp" border="0" alt="sp" src="http://lh5.ggpht.com/_embTfvHYYPE/So5WfwzjCoI/AAAAAAAADdM/CdHhNMYnL4o/sp_thumb.gif?imgmax=800" width="18" height="18" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://www.superedge.net/2009/04/how-to-sharepoint-azure-cloud.html"&gt;A test scenario to combine SharePoint and Cloud computing&lt;/a&gt;           &lt;br /&gt;          &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/So5We11vXlI/AAAAAAAADdI/XmzsJqakTA8/s1600-h/sp%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sp" border="0" alt="sp" src="http://lh5.ggpht.com/_embTfvHYYPE/So5WfwzjCoI/AAAAAAAADdM/CdHhNMYnL4o/sp_thumb.gif?imgmax=800" width="18" height="18" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://novatecno.blogspot.com/2009/03/how-to-display-aspnet-error-messages.html"&gt;A very useful tip for those debugging SharePoint applications wanting to see the underlying ASP.NET message&lt;/a&gt;           &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/So5We11vXlI/AAAAAAAADdI/XmzsJqakTA8/s1600-h/sp%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sp" border="0" alt="sp" src="http://lh5.ggpht.com/_embTfvHYYPE/So5WfwzjCoI/AAAAAAAADdM/CdHhNMYnL4o/sp_thumb.gif?imgmax=800" width="18" height="18" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://www.superedge.net/2009/04/how-to-perform-sharepoint-deployment-by.html"&gt;Let's talk about Features in MOSS which is a model provided by SharePoint to reduce the complexity of deploying site customizations&lt;/a&gt;           &lt;br /&gt;          &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/So5We11vXlI/AAAAAAAADdI/XmzsJqakTA8/s1600-h/sp%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sp" border="0" alt="sp" src="http://lh5.ggpht.com/_embTfvHYYPE/So5WfwzjCoI/AAAAAAAADdM/CdHhNMYnL4o/sp_thumb.gif?imgmax=800" width="18" height="18" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://www.superedge.net/2009/03/how-to-setup-sharepoint-sites-for-https.html"&gt;Scenario: you&amp;#8217;re a a host provider and your company will offer MOSS support to the public so they set their sites up with you&lt;/a&gt;           &lt;br /&gt;          &lt;br /&gt;&lt;/td&gt;        &lt;td width="10"&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/So5We11vXlI/AAAAAAAADdI/XmzsJqakTA8/s1600-h/sp%5B2%5D.gif"&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="370"&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/So5We11vXlI/AAAAAAAADdI/XmzsJqakTA8/s1600-h/sp%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sp" border="0" alt="sp" src="http://lh5.ggpht.com/_embTfvHYYPE/So5WfwzjCoI/AAAAAAAADdM/CdHhNMYnL4o/sp_thumb.gif?imgmax=800" width="18" height="18" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://novatecno.blogspot.com/2010/02/how-to-mysite-errors-self-service-auto.html"&gt;Error: Unable to create MySite from self-service auto creation&lt;/a&gt;           &lt;br /&gt;          &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/So5We11vXlI/AAAAAAAADdI/XmzsJqakTA8/s1600-h/sp%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sp" border="0" alt="sp" src="http://lh5.ggpht.com/_embTfvHYYPE/So5WfwzjCoI/AAAAAAAADdM/CdHhNMYnL4o/sp_thumb.gif?imgmax=800" width="18" height="18" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://novatecno.blogspot.com/2009/10/how-configure-rss-feed-splist.html"&gt;How to setup RSS feed fields for SharePoint list programmatically&lt;/a&gt;           &lt;br /&gt;          &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/So5We11vXlI/AAAAAAAADdI/XmzsJqakTA8/s1600-h/sp%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sp" border="0" alt="sp" src="http://lh5.ggpht.com/_embTfvHYYPE/So5WfwzjCoI/AAAAAAAADdM/CdHhNMYnL4o/sp_thumb.gif?imgmax=800" width="18" height="18" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://novatecno.blogspot.com/2009/08/how-to-custom-splist-permission.html"&gt;Adding custom permissions to SharePoint items programmatically&lt;/a&gt;           &lt;br /&gt;&lt;b&gt;           &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/So5We11vXlI/AAAAAAAADdI/XmzsJqakTA8/s1600-h/sp%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sp" border="0" alt="sp" src="http://lh5.ggpht.com/_embTfvHYYPE/So5WfwzjCoI/AAAAAAAADdM/CdHhNMYnL4o/sp_thumb.gif?imgmax=800" width="18" height="18" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://novatecno.blogspot.com/2009/10/how-to-disable-workspace-calendar.html"&gt;Disabling workspaces creation within SharePoint calendar&lt;/a&gt;             &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/So5WgsdRYfI/AAAAAAAADdQ/rWAoPd6HV4A/s1600-h/net%5B3%5D.jpg"&gt;             &lt;br /&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="net" border="0" alt="net" src="http://lh3.ggpht.com/_embTfvHYYPE/So5WhsRa-BI/AAAAAAAADdU/DsnLJ5Zz4S0/net_thumb%5B1%5D.jpg?imgmax=800" width="18" height="8" /&gt;&lt;/a&gt;&amp;#160;&lt;/b&gt;&lt;a href="http://novatecno.blogspot.com/2008/04/uploading-files-and-bubbling-events.html"&gt;I had to upload images to a website so decided to try something new using&amp;#160; some good old JavaScript and bubbling events&lt;/a&gt;.           &lt;br /&gt;          &lt;br /&gt;&lt;b&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/So5WgsdRYfI/AAAAAAAADdQ/rWAoPd6HV4A/s1600-h/net%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="net" border="0" alt="net" src="http://lh3.ggpht.com/_embTfvHYYPE/So5WhsRa-BI/AAAAAAAADdU/DsnLJ5Zz4S0/net_thumb%5B1%5D.jpg?imgmax=800" width="18" height="8" /&gt;&lt;/a&gt;&amp;#160;&lt;/b&gt;&lt;a href="http://novatecno.blogspot.com/2008/05/file-upload-and-canonical-issues.html"&gt;Never trust the user input. &lt;/a&gt;          &lt;br /&gt;          &lt;br /&gt;&lt;b&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/So5WibIuMCI/AAAAAAAADdY/6QfiES836cM/s1600-h/in%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="in" border="0" alt="in" src="http://lh3.ggpht.com/_embTfvHYYPE/So5XAVprqdI/AAAAAAAADdc/4FqruW8NRiA/in_thumb.gif?imgmax=800" width="18" height="18" /&gt;&lt;/a&gt;&amp;#160;&lt;/b&gt;&lt;a href="http://novatecno.blogspot.com/2009/03/why-adding-more-memory-wont-fix-your.html"&gt;Why sometimes adding more memory won&amp;#8217;t fix your out of memory problem?&lt;/a&gt;           &lt;br /&gt;          &lt;br /&gt;&lt;b&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/So5WibIuMCI/AAAAAAAADdY/6QfiES836cM/s1600-h/in%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="in" border="0" alt="in" src="http://lh3.ggpht.com/_embTfvHYYPE/So5XAVprqdI/AAAAAAAADdc/4FqruW8NRiA/in_thumb.gif?imgmax=800" width="18" height="18" /&gt;&lt;/a&gt;&amp;#160;&lt;/b&gt;&lt;a href="http://novatecno.blogspot.com/2009/03/why-hiding-my-wireless-internet-ssid.html"&gt;The SSID of your home wireless network is not a password.&lt;/a&gt;           &lt;br /&gt;          &lt;br /&gt;&lt;b&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/So5XBAWOxAI/AAAAAAAADdg/DneZ7QPc5mI/s1600-h/vs%5B9%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="vs" border="0" alt="vs" src="http://lh5.ggpht.com/_embTfvHYYPE/So5Xh9X3txI/AAAAAAAADdk/MDXfS075czg/vs_thumb%5B7%5D.jpg?imgmax=800" width="18" height="11" /&gt;&lt;/a&gt;&amp;#160;&lt;/b&gt;&lt;a href="http://novatecno.blogspot.com/2007/07/start-slow-tfs-and-team-system.html"&gt;Team System is expensive. So here goes an advice: Start small.&lt;/a&gt;           &lt;br /&gt;          &lt;br /&gt;&lt;b&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/So5XBAWOxAI/AAAAAAAADdg/DneZ7QPc5mI/s1600-h/vs%5B9%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="vs" border="0" alt="vs" src="http://lh5.ggpht.com/_embTfvHYYPE/So5Xh9X3txI/AAAAAAAADdk/MDXfS075czg/vs_thumb%5B7%5D.jpg?imgmax=800" width="18" height="11" /&gt;&lt;/a&gt;&amp;#160;&lt;/b&gt;&lt;a href="http://novatecno.blogspot.com/2007/09/fix-visual-studio-2005-slow-start.html"&gt;If you use Microsoft Visual Studio, have experienced at some point a very slow start.&lt;/a&gt;           &lt;br /&gt;          &lt;br /&gt;&lt;b&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/So5WgsdRYfI/AAAAAAAADdQ/rWAoPd6HV4A/s1600-h/net%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="net" border="0" alt="net" src="http://lh3.ggpht.com/_embTfvHYYPE/So5WhsRa-BI/AAAAAAAADdU/DsnLJ5Zz4S0/net_thumb%5B1%5D.jpg?imgmax=800" width="18" height="8" /&gt;&lt;/a&gt;&amp;#160;&lt;/b&gt;&lt;a href="http://novatecno.blogspot.com/2009/03/perfect-entity-model-development.html"&gt;Microsoft Data Access methodologies changed dramatically over the last 5 years, and in a near future it will change again.&lt;/a&gt; &lt;a href="http://www.superedge.net/2009/04/how-to-sharepoint-azure-cloud.html"&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="width: 100%; font-family: verdana; color: #063e3f; font-size: large; font-weight: bold"&gt;People, Skills and Projects Oriented Articles    &lt;hr style="color: #063e3f" /&gt;&lt;/div&gt;  &lt;table width="791"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="386"&gt;&lt;strong&gt;What It Takes to Be a Good Leader :&amp;#160; &lt;/strong&gt;&lt;a href="http://novatecno.blogspot.com/2006/06/leadership-and-motivation-in-working.html"&gt;Understand that a good leader is not the one who barks louder the orders, but the one who consider that his mission is to lead the people working with him&lt;/a&gt;           &lt;br /&gt;          &lt;br /&gt;&lt;b&gt;The Gift of the Risk : &lt;/b&gt;&lt;a href="http://novatecno.blogspot.com/2006/08/gift-of-risk.html"&gt;Because it was worth it doing it. In the very risk, a transformation happens in you, something is born inside you. No other experience can give you this. It only can be developed in the risk. That's the beauty of risk.&lt;/a&gt;           &lt;br /&gt;          &lt;br /&gt;&lt;b&gt;Don&amp;#8217;t Be Afraid, Be Audacious : &lt;/b&gt;&lt;a href="http://novatecno.blogspot.com/2007/04/even-god-reach-out-to-audacious.html"&gt;Among the many lessons I have learn in this life, here it is a very important one: Face the reality, nobody will/can do anything for you except yourself.&lt;/a&gt;           &lt;br /&gt;          &lt;br /&gt;&lt;b&gt;The Economics of Software Performance : &lt;/b&gt;&lt;a href="http://novatecno.blogspot.com/2009/03/economics-of-software-performance.html"&gt;How far can you go optimizing before you realise you&amp;#8217;re wasting your time and the project budget?&lt;/a&gt;           &lt;br /&gt;&lt;/td&gt;        &lt;td valign="top" width="10"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="388"&gt;&lt;strong&gt;Run Your Life Project Like the Movie '300' : &lt;/strong&gt;&lt;a href="http://novatecno.blogspot.com/2007/03/300-role-model.html"&gt;This movie attracts people because every single one wants to know how to defeat a much powerful competitor when we have only too few resources; how to conquer the market when we have few people; how to make more out of less.&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;          &lt;br /&gt;&lt;b&gt;What is Marketing? (or How iPod Changed Your Life?): &lt;/b&gt;&lt;a href="http://novatecno.blogspot.com/2007/09/what-is-marketing.html"&gt;Speaking of business, the iPod is such a extraordinary creation that no one could see it coming a few year ago and reaching the levels they are today and its relevance in the world market&lt;/a&gt;           &lt;br /&gt;          &lt;br /&gt;&lt;b&gt;Let&amp;#8217;s Talk About Customers : &lt;/b&gt;&lt;a href="http://novatecno.blogspot.com/2009/03/what-do-you-do-after-speaking-to.html"&gt;What do you do after a meeting with a customer?&lt;/a&gt;&amp;#160; &lt;br /&gt;          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img src="http://res1.blogblog.com/tracker/7250242-3035206757362148579.gif?l=novatecno.blogspot.com" width="1" height="1" /&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-3035206757362148579?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/3035206757362148579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=3035206757362148579&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/3035206757362148579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/3035206757362148579'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2009/03/featured-articles-https-iis-and.html' title=''/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_embTfvHYYPE/S9o7CWh609I/AAAAAAAADws/u02VgqekIUA/s72-c/sharepoint-designer-2010%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-6995152909991654907</id><published>2010-04-30T11:56:00.001+10:00</published><updated>2010-05-19T16:57:04.416+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>How To Disable SharePoint Designer on SharePoint 2010 Programmatically</title><content type='html'>&lt;p&gt;Here's a little PowerShell script to disable users from using SharePoint Designer 2007 on your SharePoint 2010 sites. It is not really a complicated matter like it was during the SharePoint 2007; the only thing to note here are 3 main points:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;you must have access to the namespace &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.client(v=office.14).aspx"&gt;Microsoft.SharePoint.Client&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;you MUST run this script with at least Admin permissions for the Site Collection in question&lt;/li&gt;    &lt;li&gt;The functionality to enable and disable this must have been set during the site collection creation. By default it is NOT. You can check that on the Site Collection properties.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Failing to attend these 2 conditions will throw you back an exception. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 9pt"&gt;   &lt;p style="margin: 0px"&gt;function Lock-SharePoint-Designer-Use([string]$url)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; [System.Reflection.Assembly]::LoadWithPartialName(&lt;span style="color: blue; font-weight: bold"&gt;&amp;quot;Microsoft.SharePoint&amp;quot;&lt;/span&gt;) &amp;gt; $null&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.client(v=office.14).aspx"&gt;[System.Reflection.Assembly]::LoadWithPartialName(&amp;quot;Microsoft.SharePoint.Client&amp;quot;) &amp;gt; $null&lt;/a&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; $rootSite = new-object Microsoft.SharePoint.SPSite($url)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; if($rootSite.RootWeb.AllowDesignerForCurrentUser -eq &lt;span style="color: blue; font-weight: bold"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsite.allowdesigner(office.14).aspx"&gt;$rootSite.AllowDesigner&lt;/a&gt; = false&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; write-output &lt;span style="color: blue; font-weight: bold"&gt;&amp;quot;site &amp;quot;&lt;/span&gt;$($rootSite.RootWeb.Title)) &lt;span style="color: blue; font-weight: bold"&gt;&amp;quot;locked for SharePoint designer&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; else&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; write-output &lt;span style="color: blue; font-weight: bold"&gt;&amp;quot;site &amp;quot;&lt;/span&gt;$($rootSite.RootWeb.Title)) &lt;span style="color: blue; font-weight: bold"&gt;&amp;quot;does not allow designer to be configured for this site collection&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Additionally you can also try other configurations to increase the lockdown surface for nasty actions that can be accomplished by some users, such as :&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;$rootSite.&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsite.allowrevertfromtemplate(office.14).aspx"&gt;AllowRevertFromTemplate&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;$rootSite.&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsite.allowmasterpageediting(v=office.14).aspx"&gt;AllowMasterPageEditing&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;$rootSite.&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsite.allowrevertfromtemplate(v=office.14).aspx"&gt;AllowShowUrlStructure&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;See you later,&lt;/p&gt;  &lt;p&gt;-Edge&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-6995152909991654907?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/6995152909991654907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=6995152909991654907&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/6995152909991654907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/6995152909991654907'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2010/04/how-disable-sharepoint-designer-2007.html' title='How To Disable SharePoint Designer on SharePoint 2010 Programmatically'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-6583542915066870272</id><published>2010-04-29T12:30:00.001+10:00</published><updated>2010-05-19T16:57:04.417+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>How to Populate a ObjectDataSource from a Dataset</title><content type='html'>&lt;p&gt;To use &lt;a href="http://msdn.microsoft.com/en-us/library/system.data.dataset.aspx"&gt;datasets&lt;/a&gt; for data manipulation and grid displaying is great in a &lt;a href="sharepoint.microsoft.com/"&gt;SharePoint environment&lt;/a&gt;.&amp;#160;&amp;#160; &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;The .NET framework offers many displaying controls for that task amongst them is the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.spgridview.aspx"&gt;SPGridView&lt;/a&gt;. Grid views are excellent for presenting data because people like to see things organized in grids. it is almost natural to our eyes and project stakeholders love grids because they are like the heart and soul of a project management report. &lt;/p&gt;  &lt;p&gt;If you are using SharePoint it is pretty straightforward to instantiate a SPGridView control and then use the &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.basedataboundcontrol.datasource.aspx"&gt;datasource property&lt;/a&gt; to point to a dataset. &lt;/p&gt;  &lt;p&gt;So let's say, you want to display all the team sites or site under a specific URL. you can populate a dataset with the rows and bind to the grid.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p align="center"&gt;&lt;strong&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/S9jvSOetDfI/AAAAAAAADv8/vWSKw7yjW88/s1600-h/sharepoint-objectdatasource-spgridview-dataset-1%5B2%5D.jpg"&gt;&lt;img border="0" alt="sharepoint-objectdatasource-spgridview-dataset-1" src="http://lh4.ggpht.com/_embTfvHYYPE/S9jvS9xg8xI/AAAAAAAADwA/Dy8Ce0iouBA/sharepoint-objectdatasource-spgridview-dataset-1_thumb.jpg?imgmax=800" width="391" height="291" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The only issue here is the network traffic. Every time you perform a postback you will force the dataset to be loaded and then the grid will just change the page displayed, but under the hood the whole dataset was there populated. If you have hundreds of sites and these are being accessed by multiple users it can potentially be using unnecessary bandwidth. (&lt;em&gt; note: There are strategies to place around this mechanism like using &lt;/em&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms972379.aspx"&gt;&lt;em&gt;cache&lt;/em&gt;&lt;/a&gt;&lt;em&gt; objects and persisting information in the &lt;/em&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms972976.aspx"&gt;&lt;em&gt;viewstate&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, but we wont be discussing them here )&lt;/em&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/S9jvTS55rBI/AAAAAAAADwE/33SUMaRnWLg/s1600-h/sharepoint-objectdatasource-spgridview-dataset-3%5B2%5D.jpg"&gt;&lt;img border="0" alt="sharepoint-objectdatasource-spgridview-dataset-3" src="http://lh5.ggpht.com/_embTfvHYYPE/S9jvUN1EE4I/AAAAAAAADwI/oel1WuuLcw4/sharepoint-objectdatasource-spgridview-dataset-3_thumb.jpg?imgmax=800" width="288" height="241" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Would not be great if we could have a out-of-the-box structure good enough to allow fetching the necessary records for a specific page? &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;For that we can use the &lt;/strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/9a4kyhcx.aspx"&gt;&lt;strong&gt;ObjectDataSource control&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;. &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;strong&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/S9jvU5vZz3I/AAAAAAAADwM/HI62PRBizFc/s1600-h/sharepoint-objectdatasource-spgridview-dataset-2%5B2%5D.jpg"&gt;&lt;img border="0" alt="sharepoint-objectdatasource-spgridview-dataset-2" src="http://lh5.ggpht.com/_embTfvHYYPE/S9jvViHWQ1I/AAAAAAAADwQ/TP5j4cjQKAM/sharepoint-objectdatasource-spgridview-dataset-2_thumb.jpg?imgmax=800" width="418" height="232" /&gt;&lt;/a&gt; &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can read a lot about the usages of the ObjectDataSource all over the net, but if you are like me a big fan of datasets and you have been dealign with datasets objects in many legacy applications, you want to just want to have an easy way to migrate your datasets to ObjectDataSources. &lt;/p&gt;  &lt;p&gt;Unfortunately, the ObjectDataSource control does not have a property like &lt;strong&gt;objectDataSource.DataSource&lt;/strong&gt; neither it has a LoadFromXml or Load(Dataset)...&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;So how do you do? &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Here's how I find it: using &lt;a href="http://msdn.microsoft.com/en-us/library/f7ykdhsy%28VS.71%29.aspx"&gt;reflection&lt;/a&gt;. &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;ObjectDataSources do not have a property to perform something like MyObjectDataSource.DataSource=MyDataSet, but &lt;a href="http://msdn.microsoft.com/en-us/library/0a15hsz1%28v=VS.100%29.aspx"&gt;it does have a constructor that allows you to parse classes and extract data methods&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;So let's say you have a scenario like this in a webpart&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 9pt"&gt;   &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; Called by the ASP.NET page framework to notify server controls that use &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; composition-based implementation to create any child controls &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; they contain in preparation for posting back or rendering.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; protected override void CreateChildControls()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; base.CreateChildControls();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Grid = new &lt;span style="color: #2b91af"&gt;SPGridView&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AutoGenerateColumns = false,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AllowSorting = true,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AllowPaging = true,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AllowFiltering = true,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; PageSize = &lt;span style="color: red"&gt;10&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; };&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Grid.DataSource = MyDataSet.MyTable;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Grid.DataBind();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;To convert this to an ObjectDataSource you then do this...&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 9pt"&gt;   &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; Gets the data table for object source.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public &lt;span style="color: #2b91af"&gt;DataSet&lt;/span&gt; GetDataTableForObjectSource()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// do whatever you want to do here and &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// return the table with the data&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return MyDataSet.MyTable;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; Called by the ASP.NET page framework to notify server controls that use &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; composition-based implementation to create any child controls &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; they contain in preparation for posting back or rendering.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; protected override void CreateChildControls()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; base.CreateChildControls();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// in this constructor specify the type name, the class name and &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// the public method inside this class where the object datasource will retrieve the data&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// make it a signed assembly for security reasons.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var edgeDataSource =&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; new &lt;span style="color: #2b91af"&gt;ObjectDataSource&lt;/span&gt;(&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue; font-weight: bold"&gt;&amp;quot;MyNamespace.MyClass, MyNamespace.MyClasss, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ce8ab85&lt;/span&gt;&lt;span style="color: blue; font-weight: bold"&gt;a8f42a5e8&amp;quot;&lt;/span&gt;,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue; font-weight: bold"&gt;&amp;quot;GetDataTableForObjectSource&amp;quot;&lt;/span&gt;) {ID = &lt;span style="color: blue; font-weight: bold"&gt;&amp;quot;EdgeDataSource&amp;quot;&lt;/span&gt;};&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Grid = new &lt;span style="color: #2b91af"&gt;SPGridView&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AutoGenerateColumns = false,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AllowSorting = true,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AllowPaging = true,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AllowFiltering = true,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; PageSize = &lt;span style="color: red"&gt;10&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; };&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// do not use DataSource property. MUST USE DataSourceID with the control name&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Grid.DataSourceID = &lt;span style="color: blue; font-weight: bold"&gt;&amp;quot;EdgeDataSource&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// do this before the databind&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Controls.Add(edgeDataSource);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Controls.Add(Grid);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// bind the objects and execute the call &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//specified in the ObjectDataSource constructor&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Grid.DataBind();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Cute trick! &lt;/p&gt;  &lt;p&gt;So there you go. To migrate, load, or populate ObjectDataSources using DataSets, all you have to do is to&lt;strong&gt; wrap the data returned in a public class and pass the method information to the ObjectDataSource constructor&lt;/strong&gt;. I hope this helps you guys out there using ObjectDataSources. &lt;/p&gt;  &lt;p&gt;Now go coding. Happy paging, happy filtering, happy caching!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;See you later&lt;/p&gt;  &lt;p&gt;-Edge&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-6583542915066870272?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/6583542915066870272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=6583542915066870272&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/6583542915066870272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/6583542915066870272'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2010/04/how-to-populate-objectdatasource.html' title='How to Populate a ObjectDataSource from a Dataset'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_embTfvHYYPE/S9jvS9xg8xI/AAAAAAAADwA/Dy8Ce0iouBA/s72-c/sharepoint-objectdatasource-spgridview-dataset-1_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-7862617208783095232</id><published>2010-04-19T13:07:00.001+10:00</published><updated>2010-05-19T16:57:04.417+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>How to increase SharePoint performance. Use of retail and debug modes.</title><content type='html'>&lt;p align="justify"&gt;&lt;em&gt;...when was the last time you checked your machine.config for retail=&amp;quot;true&amp;quot; ?&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;I've heard a few times that SharePoint is a beast, a heavy monster, or is too slow, or is too boring. Truth is not many people out there are following SharePoint best practices. Just to mention one: when deploying a SharePoint solution many people overlook a simple switch that can make a huge difference and and have serious implications when we are talking about performance: The debug switch.&lt;/p&gt;  &lt;p align="justify"&gt;Maybe because it is too simple find in the &lt;a href="http://msdn.microsoft.com/en-us/library/aa719558%28VS.71%29.aspx"&gt;web.config&lt;/a&gt;, maybe because it is too easy to change using notepad... the truth is: a lot of extra plumbing work is done when an application in debug mode is released to your users. &lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;&lt;em&gt;Scenario&lt;/em&gt;&lt;/strong&gt;: we have a SharePoint page that has a &lt;a href="http://msdn.microsoft.com/en-us/library/ms470880.aspx"&gt;delegate control&lt;/a&gt;. that delegate control loads a &lt;a href="http://msdn.microsoft.com/en-us/library/y6wb1a0e.aspx"&gt;custom ascx&lt;/a&gt; that's deployed as a &lt;a href="http://msdn.microsoft.com/en-us/library/ms460318.aspx"&gt;feature&lt;/a&gt;. that control might popup in many places across the whole portal. &lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;What happens when your web.config has debug=false ?&lt;/strong&gt;     &lt;br /&gt;For starters, let's take a look at the size of the generated assemblies, the number of handles created in the system and the internals of the asp.net DLL compilation. &lt;/p&gt;  &lt;p align="justify"&gt;When your SharePoint DLLs are compiled and deployed with the debug mode switch turned to false, the first thing you will notice is the assembly files. Look their sizes. &lt;a href="http://msdn.microsoft.com/en-us/library/wx0123s5.aspx"&gt;They are determined by the compilation switch&lt;/a&gt;, not by the web.config switch. For comparison purposes I will use assemblies compiled in release mode against assemblies compiled in debug mode.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/S8vIy8OgraI/AAAAAAAADvA/VFoEMpvasO8/s1600-h/dll-web-config-debug-true-1%5B2%5D.png"&gt;&lt;img border="0" alt="dll-web-config-debug-true-1" src="http://lh5.ggpht.com/_embTfvHYYPE/S8vIzjVnZzI/AAAAAAAADvE/bvLqzm-BIx8/dll-web-config-debug-true-1_thumb.png?imgmax=800" width="500" height="119" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;   &lt;br /&gt;When your SharePoint web.config application has the web config debug = false SharePoint, or more precisely the .net framework, will handle the assembly reference this way:&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160; &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/S86NeMN_ClI/AAAAAAAADvo/fXyuvhFVOZU/s1600-h/sharepoint-performance-debug-false-web-config%5B2%5D.png"&gt;&lt;img border="0" alt="sharepoint-performance-debug-false-web-config" src="http://lh5.ggpht.com/_embTfvHYYPE/S86NeyYvnhI/AAAAAAAADvs/RXJDDxVcq7A/sharepoint-performance-debug-false-web-config_thumb.png?imgmax=800" width="500" height="215" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;When the user makes the very first request to a page that contains that ascx, the framework will compile that ascx into a temporary DLL. That DLL will receive a random name and it will not contain the code-behind that might be present in the &lt;a href="http://en.wikipedia.org/wiki/Global_Assembly_Cache"&gt;GAC&lt;/a&gt;. The framework will also create a &lt;a href="http://msdn.microsoft.com/en-us/library/ms404279.aspx"&gt;shadow copy of that DLL&lt;/a&gt; and both copies will be placed in the &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163496.aspx"&gt;ASP.NET temporary folder&lt;/a&gt;. That reference will be returned to that page and the page will be rendered to the user. &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/S8vI4P7qdsI/AAAAAAAADvg/PHdYv4dSbGY/s1600-h/sharepoint-batch-compilation-restart-iis-1%5B4%5D.png"&gt;&lt;img border="0" alt="sharepoint-batch-compilation-restart-iis-1" src="http://lh3.ggpht.com/_embTfvHYYPE/S8vI4ynIjEI/AAAAAAAADvk/IWLqutDXMRw/sharepoint-batch-compilation-restart-iis-1_thumb%5B2%5D.png?imgmax=800" width="550" height="91" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;If you get to inspect the content of one of these files you will that that a kind of 'proxy' will be generated for them with all the references for the real control stored in the &lt;a href="http://msdn.microsoft.com/en-us/magazine/dd458798.aspx"&gt;12 hive&lt;/a&gt;. That's generated when the first call is made to the control.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;&lt;font color="#808080"&gt;contents of the file &lt;strong&gt;myapps.aspx.d7b311e5_CBMResult.compiled&lt;/strong&gt;&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 9pt" align="justify"&gt;&lt;span style="color: blue"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #a31515"&gt;xml&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;version&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;1.0&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;encoding&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;utf-8&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;?&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 9pt" align="justify"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;preserve&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;resultType&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;7&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;virtualPath&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/MySharepointApp.Personalisation.MyApps/12/TEMPLATE/LAYOUTS/MySharepointApp/MyApps.aspx&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 9pt" align="justify"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;hash&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;fffffff6f2b2ee5f&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;filehash&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;fffffff6c7a1c8b7&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 9pt" align="justify"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;flags&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;100000&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 9pt" align="justify"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;CCUpreservationFileName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;myapps.aspx.d7b311e5_CBMResult.ccu&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 9pt" align="justify"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;filedeps&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 9pt" align="justify"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;filedep&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/MySharepointApp.Personalisation.MyApps/_controltemplates/AudienceTrimmedControl.ascx&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 9pt" align="justify"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;filedep&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/MySharepointApp.Personalisation.MyApps/_controltemplates/LinkSection.ascx&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 9pt" align="justify"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;filedep&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/MySharepointApp.Personalisation.MyApps/_layouts/application.master&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 9pt" align="justify"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;filedep&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/MySharepointApp.Personalisation.MyApps/12/TEMPLATE/LAYOUTS/MySharepointApp/MyApps.aspx&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 9pt" align="justify"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;filedeps&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 9pt" align="justify"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;preserve&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;For all the subsequent requests from other pages using that same control, the same reference will be retrieved. It means the page will apply less pressure in the server and naturally the application will perform close to its best.&lt;/p&gt;  &lt;p align="justify"&gt;Now let's navigate the site opening more pages and see what's happening in the system. The number of handles keeps a steady balance. &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/S8vI2-So_CI/AAAAAAAADvY/GVIRvBGq9H0/s1600-h/sharepoint-memory-management-2%5B2%5D.png"&gt;&lt;img border="0" alt="sharepoint-memory-management-2" src="http://lh4.ggpht.com/_embTfvHYYPE/S8vI3r4SlrI/AAAAAAAADvc/MaItVIAHpVI/sharepoint-memory-management-2_thumb.png?imgmax=800" width="491" height="412" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;Now let's observe what happens if we do the same process and leave the web.config &lt;em&gt;&lt;strong&gt;debug=true&lt;/strong&gt;&lt;/em&gt; &lt;strong&gt;&lt;em&gt;and we deploy the DLLs compiled in debug mode&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;First thing we will notice is an &lt;strong&gt;increase in the assembly file&lt;/strong&gt;, because the symbols added to the assembly. &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/S8vI0NUQwzI/AAAAAAAADvI/2UJt1skv67A/s1600-h/dll-web-config-debug-true-2%5B2%5D.png"&gt;&lt;img border="0" alt="dll-web-config-debug-true-2" src="http://lh5.ggpht.com/_embTfvHYYPE/S8vI1Mw5TdI/AAAAAAAADvM/HeTHiTYTrZ0/dll-web-config-debug-true-2_thumb.png?imgmax=800" width="500" height="113" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;It is not much of a difference, just 1-5 KB here and there. &lt;/p&gt;  &lt;p align="justify"&gt;so we are led to believe it will not increase the footprint on the system, right? &lt;em&gt;Yeah.. but no...but yeah&lt;/em&gt;; that's not the problem, the problem will reveal itself when we inspect the page lifecycle...That's what's going to happen in this scenario.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/S86NfnQKJaI/AAAAAAAADvw/zIkm05GBU9c/s1600-h/sharepoint-performance-debug-true-web-config%5B5%5D.png"&gt;&lt;img border="0" alt="sharepoint-performance-debug-true-web-config" src="http://lh6.ggpht.com/_embTfvHYYPE/S86NgRyyz7I/AAAAAAAADv0/Tz4-lDVY-5E/sharepoint-performance-debug-true-web-config_thumb%5B1%5D.png?imgmax=800" width="396" height="412" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;For every single call to the page using the control, a brand new temporary DLL will be generated and that's my friend...&lt;strong&gt; is a problem&lt;/strong&gt;. You can not afford to have a portal with, let's say, 500 pages and do not suffer from &lt;em&gt;(the lack of)&lt;/em&gt; performance management&amp;#160; there with every single one of these assemblies loaded. See the overhead placed in the temp folder, see the overhead placed in the SharePoint portal handler...&lt;/p&gt;  &lt;p align="justify"&gt;Let's repeat the same process as case 1 and let's open another page that uses the same control. Look at the handlers in the system. They had a significantly increase. Now imagine that with hundreds of users. &lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/S8vI1t4elRI/AAAAAAAADvQ/bKHXgKffHnM/s1600-h/sharepoint-memory-management-1%5B2%5D.png"&gt;&lt;img border="0" alt="sharepoint-memory-management-1" src="http://lh4.ggpht.com/_embTfvHYYPE/S8vI2TN7DGI/AAAAAAAADvU/iq27NHg7GSM/sharepoint-memory-management-1_thumb.png?imgmax=800" width="483" height="412" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;That's going to be a lot of work for the garbage collector that should not be there if the person only took time to apply some basic best practices when deploying solutions. And the garbage collection is as we know a very expensive operation to be carried &lt;em&gt;(probably)&lt;/em&gt; that often.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;&lt;em&gt;What should we do then?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;&lt;em&gt;Avoid debug=true in production environment. User Retail=true. &lt;/em&gt;&lt;/strong&gt;Maybe you can't avoid people going there to the web.config and changing the settings to debug=true and false, but you can reduce the surface for problems. And one of the very first things you apply in production is the not so much talked about: &lt;a href="http://msdn.microsoft.com/en-us/library/ms228298%28VS.80%29.aspx"&gt;retail mode&lt;/a&gt;.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 9pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;system.web&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;deployment&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;retail&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;true&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;system.web&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p align="justify"&gt;The retail mode is a switch in the machine.config that automatically:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;div align="justify"&gt;ignores all the debug=true switches and force them to be false. &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;disable the trace output in the pages&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;disable the custom errors configuration&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;disable the debug capabilities&lt;/div&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p align="justify"&gt;In short: just flicking this switch you automatically reduces the surface for performance issues and also some hacking attacks by not exposing unnecessary information on the screen in case of an application crash. And because machine.config is hierarchically higher that web.config it will take precedence over any web.config from other applications deployed to your server.&lt;/p&gt;  &lt;p align="justify"&gt;Now go there and take a look how is your retail mode set and maybe with just a little flick you can change the performance of a whole portal and offer a better experience to the users.&lt;/p&gt;  &lt;p align="justify"&gt;See you later,&lt;/p&gt;  &lt;p align="justify"&gt;-Edge&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-7862617208783095232?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/7862617208783095232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=7862617208783095232&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/7862617208783095232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/7862617208783095232'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2010/04/increase-sharepoint-performance-retail.html' title='How to increase SharePoint performance. Use of retail and debug modes.'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_embTfvHYYPE/S8vIzjVnZzI/AAAAAAAADvE/bvLqzm-BIx8/s72-c/dll-web-config-debug-true-1_thumb.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-135394263691764882</id><published>2010-04-13T17:54:00.001+10:00</published><updated>2010-05-19T16:57:04.417+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>How to list all the sites for a sharepoint web application using powershell script ?</title><content type='html'>&lt;p&gt;&lt;strong&gt;Solution 1:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Here's an quick and very useful script often requested by admin guys that I'd like to share and hopefully it will be useful to someone as well: list all the sites for a SharePoint Url and its owners.&lt;/p&gt;  &lt;p&gt;Made in &lt;a href="http://technet.microsoft.com/en-us/scriptcenter/dd742419.aspx"&gt;PowerShell&lt;/a&gt;&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 9pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;strong&gt;function List-Sites([string]$url)&lt;/strong&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; [&lt;a href="http://msdn.microsoft.com/en-us/library/system.reflection.assembly.aspx"&gt;System.Reflection.Assembly&lt;/a&gt;]::&lt;a href="http://msdn.microsoft.com/en-us/library/12xc5368.aspx"&gt;LoadWithPartialName&lt;/a&gt;(&lt;span style="color: blue; font-weight: bold"&gt;&amp;quot;Microsoft.SharePoint&amp;quot;&lt;/span&gt;) &amp;gt; $null&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; [System.Reflection.Assembly]::LoadWithPartialName(&lt;span style="color: blue; font-weight: bold"&gt;&amp;quot;Microsoft.SharePoint.Administration&amp;quot;&lt;/span&gt;) &amp;gt; $null&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; $rootSite = new-object Microsoft.SharePoint.SPSite($url)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; $webApp = $rootSite.WebApplication&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; if($webApp.Sites.Count -gt &lt;span style="color: red"&gt;0&lt;/span&gt;)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; write-output &lt;span style="color: blue; font-weight: bold"&gt;&amp;quot;site url`tlast date content modified`tsite owner`tsite name`tsite url`tsite template`tsite descript&lt;/span&gt;&lt;span style="color: blue; font-weight: bold"&gt;ion&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach ($site in $webApp.Sites)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $rootweb = $site.RootWeb&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $allwebtemplates=&lt;a href="http://msdn.microsoft.com/en-us/library/ms466366.aspx"&gt;$rootweb.GetAvailableWebTemplates&lt;/a&gt;(&lt;span style="color: red"&gt;1033&lt;/span&gt;)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach($template in $allwebtemplates)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if ($template.ID -eq $rootweb.WebTemplateId)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $templatename=$template.Title&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $lastUpdatedDate = Get-Date &lt;span style="color: blue; font-weight: bold"&gt;&amp;quot;1/1/2000 1:00 AM&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach($web1 in $site.AllWebs)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach($list in $web1)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if ($lastUpdatedDate -lt &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.lastitemmodifieddate.aspx"&gt;$list.LastItemModifiedDate&lt;/a&gt;)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $lastUpdatedDate=$list.LastItemModifiedDate&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $SiteAdmin = new-object &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spsiteadministration.aspx"&gt;Microsoft.SharePoint.Administration.SPSiteAdministration&lt;/a&gt;($rootweb.URL)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; write-output &lt;span style="color: blue; font-weight: bold"&gt;&amp;quot;$($site.Url)`t$($lastUpdatedDate)`t$($site.Owner.LoginName)`t$($rootWeb.PortalName) $($rootWeb.Titl&lt;/span&gt;&lt;span style="color: blue; font-weight: bold"&gt;e)`t$($site.PortalUrl)`t$($rootWeb.WebTemplate) ( $templatename )`t$($rootWeb.Description)&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $SiteAdmin.Dispose()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $rootweb.Dispose()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; $rootSite.Dispose()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;There is also a reference for the object SPSiteAdministration just in case you want to output more information.&lt;/p&gt;  &lt;p&gt;Execute this script in the Powershell command line in your server and the output will be something like this:&lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/S8QjJJunvMI/AAAAAAAADuY/mkNdaS2y5AA/s1600-h/powershell-sharepoint-script-list-sites-web-application%5B2%5D.png"&gt;&lt;img border="0" alt="powershell-sharepoint-script-list-sites-web-application" src="http://lh6.ggpht.com/_embTfvHYYPE/S8QjKARlrtI/AAAAAAAADuc/jjOm3_8fKrA/powershell-sharepoint-script-list-sites-web-application_thumb.png?imgmax=800" width="500" height="298" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Solution 2:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Not really a good solution if you have several sites; but if you just want to quickly find out the templates of a specific site alternatively you can go to your root web site and add this to your query string: &lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms478653.aspx"&gt;/_vti_bin/owssvr.dll?Cmd=GetProjSchema&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/S8VuYpDoKSI/AAAAAAAADuw/UOCj2ikfB4s/s1600-h/sharepoint-how-to-template-site-creation-2%5B2%5D.png"&gt;&lt;img border="0" alt="sharepoint-how-to-template-site-creation-2" src="http://lh6.ggpht.com/_embTfvHYYPE/S8VuZSpTyWI/AAAAAAAADu0/lstbXFIWtcY/sharepoint-how-to-template-site-creation-2_thumb.png?imgmax=800" width="453" height="32" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;this will display the &lt;a href="http://msdn.microsoft.com/en-us/library/ms474369.aspx"&gt;ONET.XML&lt;/a&gt; for that site, and if you scroll down until the &lt;strong&gt;&lt;em&gt;Configuration&lt;/em&gt;&lt;/strong&gt; node you can get the template being used currently&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/S8VuaARch-I/AAAAAAAADu4/ZT2Hl2xfc78/s1600-h/sharepoint-how-to-template-site-creation-1%5B5%5D.png"&gt;&lt;img border="0" alt="sharepoint-how-to-template-site-creation-1" src="http://lh5.ggpht.com/_embTfvHYYPE/S8VubNNHgCI/AAAAAAAADu8/qaClD1yrt6w/sharepoint-how-to-template-site-creation-1_thumb%5B3%5D.png?imgmax=800" width="600" height="157" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The admin guys are happy, developers are happy... win-win :) &lt;/p&gt;  &lt;p&gt;See you later,&lt;/p&gt;  &lt;p&gt;-E&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-135394263691764882?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/135394263691764882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=135394263691764882&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/135394263691764882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/135394263691764882'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2010/04/powershell-script-list-sites-web.html' title='How to list all the sites for a sharepoint web application using powershell script ?'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_embTfvHYYPE/S8QjKARlrtI/AAAAAAAADuc/jjOm3_8fKrA/s72-c/powershell-sharepoint-script-list-sites-web-application_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-9199310945880987576</id><published>2010-04-08T15:08:00.001+10:00</published><updated>2010-05-19T16:57:04.418+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>How to Customize My Links Control in SharePoint</title><content type='html'>&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/dd458798.aspx"&gt;User adoption&lt;/a&gt; is&amp;#160; everything in a successful SharePoint implementation and one of the main things to attract users to use the site is by customizing the site according to their needs or a previous product. In a lot of cases this never gets 100% done and then one day when a power users is browsing the site he can see things like that: A reference to the Microsoft product inside their own organization.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/S71ktE5vd5I/AAAAAAAADss/LDdrb7FmR44/s1600-h/customize-mylinks-control-sharepoint-0%5B2%5D.png"&gt;&lt;img border="0" alt="customize-mylinks-control-sharepoint-0" src="http://lh3.ggpht.com/_embTfvHYYPE/S71kuCql04I/AAAAAAAADsw/pzrTp7Og5ZM/customize-mylinks-control-sharepoint-0_thumb.png?imgmax=800" width="500" height="157" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;My SharePoint Sites link being displayed in the client screen &lt;/p&gt;  &lt;p&gt;The ideal situation is for a product to be vendor/technology agnostic. From the user's point of view, he doesn't care what is the framework or the company; he just want to have access to his tools.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;So, how to customize that My Links control from SharePoint web sites?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;Answer: We will create a &lt;a href="http://msdn.microsoft.com/en-us/library/ms460318.aspx"&gt;SharePoint feature&lt;/a&gt; to place our own &lt;a href="http://msdn.microsoft.com/en-us/library/aa830815.aspx"&gt;ASCX control&lt;/a&gt; in the page instead the default SharePoint OOTB control.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;First let's inspect how is this control implemented. If you open the homepage using &lt;a href="http://office.microsoft.com/en-au/sharepointdesigner/default.aspx"&gt;SharePoint Designer&lt;/a&gt; and search for that specific part of the code you will notice that control is a SharePoint &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.delegatecontrol.aspx"&gt;DelegateControl&lt;/a&gt;. &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/S71kvSNqgWI/AAAAAAAADs0/X_nG1avhZck/s1600-h/customize-mylinks-control-sharepoint-1%5B2%5D.png"&gt;&lt;img border="0" alt="customize-mylinks-control-sharepoint-1" src="http://lh3.ggpht.com/_embTfvHYYPE/S71kwuBLZDI/AAAAAAAADs4/agV9hj3ffOM/customize-mylinks-control-sharepoint-1_thumb.png?imgmax=800" width="500" height="320" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A delegate control is one of the coolest aspects of the SharePoint ecosystem. This control has the ability to render any user custom ASP.NET controls inside SharePoint pages on the fly by just changing the ControlId. &lt;/p&gt;  &lt;p&gt;If we come back to our case, what that line is doing is: at this exact position, render the control called &lt;strong&gt;&lt;em&gt;'GlobalSiteLink2'&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Now remember these functionality are available to the application by features. Let's go then and search for the key 'GlobalSiteLink2' in the TEMPLATE\FEATURES folder on the 12 hive. &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/S71k2B-qQsI/AAAAAAAADtc/fF36nClJaCM/s1600-h/customize-mylinks-control-sharepoint-2%5B2%5D.png"&gt;&lt;img border="0" alt="customize-mylinks-control-sharepoint-2" src="http://lh6.ggpht.com/_embTfvHYYPE/S71k22MNssI/AAAAAAAADtg/yTfDUFHKtTw/customize-mylinks-control-sharepoint-2_thumb.png?imgmax=800" width="500" height="169" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You will discover that there is a feature called 'MySite' there which implements the actual control. &lt;/p&gt;  &lt;p&gt;Open the file MySiteFeatureElements.xml and you will see this:&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 9pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 1&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Elements&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;http://schemas.microsoft.com/sharepoint/&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 2&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Control&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Id&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;GlobalSiteLink1&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Sequence&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;100&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;ControlSrc&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;~/_controltemplates/mysitelink.ascx&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 3&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Control&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Id&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;GlobalSiteLink2&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Sequence&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;100&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;ControlSrc&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;~/_controltemplates/mylinks.ascx&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 4&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Control&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Id&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;ProfileRedirection&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Sequence&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;100&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;ControlSrc&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;~/_controltemplates/mysiteredirection.ascx&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 5&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Elements&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;there it is our control Id='GlobalSiteLink2' and its source is in a file called 'mylinks.ascx'.&lt;/p&gt;  &lt;p&gt;Next step, we need to find out the mylinks.ascx control. For that you have to navigate to the user controls folder at the 12 hive ($\TEMPLATE\CONTROLTEMPLATES). There you will see all the user controls available to SharePoint.&amp;#160; Let's have a look at the source code of this control.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="border-bottom: #000080 1px solid; border-left: #000080 1px solid; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; color: #000; font-size: 10pt; border-top: #000080 1px solid; border-right: #000080 1px solid"&gt;   &lt;div style="padding-bottom: 2px; padding-left: 5px; padding-right: 5px; font-family: verdana, tahoma, arial, sans-serif; background: #000080; color: #fff; font-weight: bold; padding-top: 2px"&gt;Code Snippet&lt;/div&gt;    &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt;     &lt;ol style="padding-bottom: 0px; margin: 0px 0px 0px 2em; padding-left: 5px; padding-right: 0px; background: #ffffff; padding-top: 0px"&gt;       &lt;li&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: #0000ff"&gt;@&lt;/span&gt; &lt;span style="color: #a31515"&gt;Control&lt;/span&gt; &lt;span style="color: #ff0000"&gt;className&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;MyLinksUserControl&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Language&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;C#&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Inherits&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Microsoft.SharePoint.Portal.WebControls.MyLinksUserControl&amp;amp;#44;Microsoft.SharePoint.Portal, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot;&lt;/span&gt; &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt; &lt;/li&gt;        &lt;li style="background: #f3f3f3"&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: #0000ff"&gt;@&lt;/span&gt; &lt;span style="color: #a31515"&gt;Register&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Tagprefix&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;OSRVWC&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Namespace&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Microsoft.Office.Server.WebControls&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Assembly&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot;&lt;/span&gt; &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt; &lt;/li&gt;        &lt;li&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: #0000ff"&gt;@&lt;/span&gt; &lt;span style="color: #a31515"&gt;Register&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Tagprefix&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;SPSWC&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Namespace&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Microsoft.SharePoint.Portal.WebControls&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Assembly&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Microsoft.SharePoint.Portal, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot;&lt;/span&gt; &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt; &lt;/li&gt;        &lt;li style="background: #f3f3f3"&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: #0000ff"&gt;@&lt;/span&gt; &lt;span style="color: #a31515"&gt;Register&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Tagprefix&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;SharePoint&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Namespace&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Microsoft.SharePoint.WebControls&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Assembly&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot;&lt;/span&gt; &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt; &lt;/li&gt;        &lt;li&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;table&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/li&gt;        &lt;li style="background: #f3f3f3"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;td&lt;/span&gt; &lt;span style="color: #ff0000"&gt;class&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ms-globallinks&amp;quot;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SPSWC&lt;/span&gt;&lt;span style="color: #0000ff"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;MyLinksMenuControl&lt;/span&gt; &lt;span style="color: #ff0000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;MyLinksMenu&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;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/li&gt;        &lt;li&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;td&lt;/span&gt; &lt;span style="color: #ff0000"&gt;class&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ms-globallinks&amp;quot;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: #0000ff"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Literal&lt;/span&gt; &lt;span style="color: #ff0000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;hlMySiteSpacer&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;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/li&gt;        &lt;li style="background: #f3f3f3"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;table&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/li&gt;     &lt;/ol&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We now see that MyLinksMenu is an object of &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.portal.webcontrols.mylinksmenucontrol.aspx"&gt;MyLinksMenuControl&lt;/a&gt;, and this class is defined inside &lt;a href="http://msdn.microsoft.com/en-us/library/ms519088(v=office.12).aspx"&gt;Microsoft.SharePoint.Portal.WebControls.Dll&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/S71kxA0A7YI/AAAAAAAADs8/n_Gvlw3sQ8w/s1600-h/customize-mylinks-control-sharepoint-6%5B2%5D.png"&gt;&lt;img border="0" alt="customize-mylinks-control-sharepoint-6" src="http://lh5.ggpht.com/_embTfvHYYPE/S71kyLN7lwI/AAAAAAAADtA/Pniyj3kWceY/customize-mylinks-control-sharepoint-6_thumb.png?imgmax=800" width="476" height="410" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;That's good news. We find a method called &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.portal.webcontrols.mylinksmenucontrol.loadmenuitems.aspx"&gt;LoadMenuItems()&lt;/a&gt; that returns an array list of menu items.&lt;/p&gt;  &lt;p&gt;Ok. At this point we have to question ourselves something very important: We should avoid as much as we can interfere during the natural course of SharePoint's behavior. Given that method call we assume that instead modifying it we should be able to configure that string somewhere in the configuration files and then LoadMenuItems() would just return the items with the new label. Would not be the easier and most logical way for Microsoft and everybody else to modify that value?&lt;/p&gt;  &lt;p&gt;As much as this proposition might sound correct, unfortunately the answer is no. That string is hardcoded somewhere into the SharePoint source code as a resource file and embedded within the DLL. If you try to inspect that, here's what you get:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/S71kysYQT0I/AAAAAAAADtE/KaOWSHVWJnw/s1600-h/customize-mylinks-control-sharepoint-7%5B2%5D.png"&gt;&lt;img border="0" alt="customize-mylinks-control-sharepoint-7" src="http://lh3.ggpht.com/_embTfvHYYPE/S71kzGK9_AI/AAAAAAAADtI/eL3l9zYg7_o/customize-mylinks-control-sharepoint-7_thumb.png?imgmax=800" width="431" height="95" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The funny thing is that many other areas and messages and labels across the whole SharePoint platform can be configured by updating the resource files, makes you wonder:&amp;#160; &lt;em&gt;&amp;quot;why they did not used the same approach here?&amp;quot;&lt;/em&gt;&amp;#160;&lt;/p&gt;  &lt;p align="left"&gt;So, how to fix that?&lt;/p&gt;  &lt;p align="left"&gt;Using the same delegate control to render your control instead of the out of the box one; and to avoid breaking the natural SharePoint flow of things we are going to create a control inheriting from the OOTB SharePoint MyLinksMenuControl.&lt;/p&gt;  &lt;p align="left"&gt;We should start by creating a solution that looks like this with WSPBuilder. We will mimic the complete structure for MyLinks.ascx's feature and give it another name.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/S71kzuRsVdI/AAAAAAAADtM/kRzbD7DnQ4o/s1600-h/customize-mylinks-control-sharepoint-5%5B5%5D.png"&gt;&lt;img border="0" alt="customize-mylinks-control-sharepoint-5" src="http://lh3.ggpht.com/_embTfvHYYPE/S71k0MMxKZI/AAAAAAAADtQ/0tZmP8mgjSE/customize-mylinks-control-sharepoint-5_thumb%5B1%5D.png?imgmax=800" width="307" height="254" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Compile the solution for the very first time and then extract the public key token. Go to the folder where the DLL is located and execute this command. &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/S751I1gwsQI/AAAAAAAADts/jqpXLSSWifQ/s1600-h/customize-mylinks-control-sharepoint-8%5B2%5D.png"&gt;&lt;img border="0" alt="customize-mylinks-control-sharepoint-8" src="http://lh5.ggpht.com/_embTfvHYYPE/S751KWBdRPI/AAAAAAAADtw/jsxqJjI4v4g/customize-mylinks-control-sharepoint-8_thumb.png?imgmax=800" width="500" height="178" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Copy and paste the public key token displayed in the screen in our next step, into the ascx source code. &lt;/p&gt;  &lt;p&gt;Now will create a similar ascx control just like the original one, but instead of using the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.aspx"&gt;webcontrols&lt;/a&gt; part we will be using our own MyCustomLinksMenu.ascx&lt;/p&gt;  &lt;div style="border-bottom: #000080 1px solid; border-left: #000080 1px solid; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; color: #000; font-size: 10pt; border-top: #000080 1px solid; border-right: #000080 1px solid"&gt;   &lt;div style="padding-bottom: 2px; padding-left: 5px; padding-right: 5px; font-family: verdana, tahoma, arial, sans-serif; background: #000080; color: #fff; font-weight: bold; padding-top: 2px"&gt;Code Snippet&lt;/div&gt;    &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt;     &lt;ol style="padding-bottom: 0px; margin: 0px 0px 0px 2em; padding-left: 5px; padding-right: 0px; background: #ffffff; padding-top: 0px"&gt;       &lt;li&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: #0000ff"&gt;@&lt;/span&gt; &lt;span style="color: #a31515"&gt;Control&lt;/span&gt; &lt;span style="color: #ff0000"&gt;className&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;MyLinksUserControl&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Language&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;C#&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Inherits&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Microsoft.SharePoint.Portal.WebControls.MyLinksUserControl&amp;amp;#44;Microsoft.SharePoint.Portal, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot;&lt;/span&gt; &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt; &lt;/li&gt;        &lt;li style="background: #f3f3f3"&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: #0000ff"&gt;@&lt;/span&gt; &lt;span style="color: #a31515"&gt;Register&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Tagprefix&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;OSRVWC&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Namespace&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Microsoft.Office.Server.WebControls&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Assembly&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot;&lt;/span&gt; &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt; &lt;/li&gt;        &lt;li&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: #0000ff"&gt;@&lt;/span&gt; &lt;span style="color: #a31515"&gt;Register&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Tagprefix&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;SPSWC&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Namespace&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;CustomizeMyLinks&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Assembly&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;CustomizeMyLinks, Version=1.0.0.0, Culture=neutral, PublicKeyToken=995e4d025d306cec&amp;quot;&lt;/span&gt; &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt; &lt;/li&gt;        &lt;li style="background: #f3f3f3"&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: #0000ff"&gt;@&lt;/span&gt; &lt;span style="color: #a31515"&gt;Register&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Tagprefix&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;SharePoint&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Namespace&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Microsoft.SharePoint.WebControls&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Assembly&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot;&lt;/span&gt; &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt; &lt;/li&gt;        &lt;li&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;table&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/li&gt;        &lt;li style="background: #f3f3f3"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;td&lt;/span&gt; &lt;span style="color: #ff0000"&gt;class&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ms-globallinks&amp;quot;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SPSWC&lt;/span&gt;&lt;span style="color: #0000ff"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;MyCustomLinksMenu&lt;/span&gt; &lt;span style="color: #ff0000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;MyLinksMenu&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;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/li&gt;        &lt;li&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;td&lt;/span&gt; &lt;span style="color: #ff0000"&gt;class&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ms-globallinks&amp;quot;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: #0000ff"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Literal&lt;/span&gt; &lt;span style="color: #ff0000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;hlMySiteSpacer&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;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/li&gt;        &lt;li style="background: #f3f3f3"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;table&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/li&gt;     &lt;/ol&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Let's go to &lt;a href="http://www.newguid.net"&gt;www.newguid.net&lt;/a&gt; and get ourselves a brand new &lt;a href="http://msdn.microsoft.com/en-us/library/system.guid.aspx"&gt;Guid&lt;/a&gt; for the feature. Keep this Guid, we will use it in our next step to assign it to the feature Id.&lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/S71k0y3FThI/AAAAAAAADtU/EW7AulkPELY/s1600-h/customize-mylinks-control-sharepoint-4%5B5%5D.png"&gt;&lt;img border="0" alt="customize-mylinks-control-sharepoint-4" src="http://lh3.ggpht.com/_embTfvHYYPE/S71k1itn1tI/AAAAAAAADtY/ChO-UolLE5Y/customize-mylinks-control-sharepoint-4_thumb%5B1%5D.png?imgmax=800" width="500" height="142" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This is how it will looks like our new feature.XML. &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 9pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 1&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #a31515"&gt;xml&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;version&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;1.0&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;encoding&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;utf-8&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;?&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 2&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Feature&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Id&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;{&lt;strong&gt;6fed26c0-57d3-4237-afd7-722c5c13a147&lt;/strong&gt;}&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 3&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;Title&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Customize MyLinks menu control&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 4&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;Description&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Renames the mention to SharePoint from the MyLinks control, to make the website more vendor agnostic&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 5&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;Version&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;1.0.0.0&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 6&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;Hidden&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;FALSE&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 7&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;Scope&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Site&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 8&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;http://schemas.microsoft.com/sharepoint/&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 9&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;ImageUrl&lt;/span&gt;&lt;span style="color: blue"&gt; =&lt;/span&gt;&amp;quot;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 10&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ElementManifests&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 11&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ElementManifest&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Location&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;elements.xml&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 12&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ElementManifests&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 13&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Feature&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/S71k2B-qQsI/AAAAAAAADtc/fF36nClJaCM/s1600-h/customize-mylinks-control-sharepoint-2%5B2%5D.png"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And this is our new elements.XML which is a copy from MySiteFeatureElements.XML. Note the control GlobalSiteLink2 pointing to our brand new ascx control.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 9pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 1&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Elements&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;http://schemas.microsoft.com/sharepoint/&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 2&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Control&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Id&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;GlobalSiteLink1&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Sequence&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;100&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;ControlSrc&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;~/_controltemplates/mysitelink.ascx&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 3&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Control&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Id&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;GlobalSiteLink2&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Sequence&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;100&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;ControlSrc&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;~/_controltemplates/MyCustomLinksMenu/MyCustomLinksMenu.ascx&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 4&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Control&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Id&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;ProfileRedirection&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Sequence&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;100&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;ControlSrc&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;~/_controltemplates/mysiteredirection.ascx&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 5&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Elements&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;code&gt;&lt;font style="font: 10pt consolas; color: #800080"&gt;&lt;/font&gt;&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;And here's the code for the custom control. The comments in the code are self-explanatory.&lt;/p&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 9pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 1&lt;/span&gt;&amp;#160;&lt;span style="font-weight: bold"&gt;using System.Collections;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 2&lt;/span&gt;&amp;#160;&lt;span style="font-weight: bold"&gt;using Microsoft.SharePoint.Portal.WebControls;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 3&lt;/span&gt;&amp;#160;&lt;span style="font-weight: bold"&gt;using Microsoft.SharePoint.WebControls;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 4&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 5&lt;/span&gt;&amp;#160;&lt;span style="font-weight: bold"&gt;namespace CustomizeMyLinks&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 6&lt;/span&gt; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 7&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 8&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; Customize the current MyLinks menu control &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 9&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; and rename the link 'My SharePoint Sites' to 'Visit Your Sites'&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 10&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 11&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public class &lt;span style="color: #2b91af"&gt;MyCustomLinksMenu&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;MyLinksMenuControl&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 12&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 13&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 14&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; Loads the menu items.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 15&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 16&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;a &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;see cref=&amp;quot;ArrayList&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt; with &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 17&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; all the menu items from &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;see cref=&amp;quot;MyLinksMenuControl.LoadMenuItems&amp;quot;/&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 18&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; protected override &lt;span style="color: #2b91af"&gt;ArrayList&lt;/span&gt; LoadMenuItems()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 19&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 20&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// make sure you will call the out of the box method that generates&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 21&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// the default items in SharePoint&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 22&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var currentMenuItems = base.LoadMenuItems();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 23&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 24&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if ((currentMenuItems != null) &amp;amp;&amp;amp; (currentMenuItems.Count&amp;gt;&lt;span style="color: red"&gt;0&lt;/span&gt;))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 25&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 26&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// now that you have the items, you can manipulate them the way you want&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 27&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;SubMenuTemplate&lt;/span&gt; customMenuTemplate;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 28&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; using (customMenuTemplate = (&lt;span style="color: #2b91af"&gt;SubMenuTemplate&lt;/span&gt;) (currentMenuItems[&lt;span style="color: red"&gt;0&lt;/span&gt;]))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 29&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 30&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (customMenuTemplate != null)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 31&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 32&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; customMenuTemplate.Text = &lt;span style="color: blue; font-weight: bold"&gt;&amp;quot;Visit Your Sites&amp;quot;&lt;/span&gt;; &lt;span style="color: green"&gt;// or any other text you want here&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 33&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; currentMenuItems.RemoveAt(&lt;span style="color: red"&gt;0&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 34&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; currentMenuItems.Add(customMenuTemplate);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 35&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// you can also try currentMenuItems.InsertAt(0,customMenuTemplate);&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 36&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 37&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 38&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 39&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return currentMenuItems;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 40&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 41&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 42&lt;/span&gt; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Compile. Build the package with WSPBuilder and deploy the feature to the 12 hive, activate the feature in the web site and voil&amp;#225;! You will see the link customized.&lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/S71k3p91-qI/AAAAAAAADtk/SL2t25N_EDI/s1600-h/customize-mylinks-control-sharepoint-3%5B2%5D.png"&gt;&lt;img border="0" alt="customize-mylinks-control-sharepoint-3" src="http://lh6.ggpht.com/_embTfvHYYPE/S71k4mseveI/AAAAAAAADto/4theiEiQOSM/customize-mylinks-control-sharepoint-3_thumb.png?imgmax=800" width="500" height="190" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;See you later&lt;/p&gt;  &lt;p&gt;-E&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-9199310945880987576?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/9199310945880987576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=9199310945880987576&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/9199310945880987576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/9199310945880987576'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2010/04/how-to-customize-sharepoint-my-links.html' title='How to Customize My Links Control in SharePoint'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_embTfvHYYPE/S71kuCql04I/AAAAAAAADsw/pzrTp7Og5ZM/s72-c/customize-mylinks-control-sharepoint-0_thumb.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-6394856674520756443</id><published>2010-03-15T17:33:00.003+10:00</published><updated>2010-05-19T16:57:04.418+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>Workaround for Aptimize bug and list access denied in SharePoint</title><content type='html'>&lt;span style="font-style: italic; color: rgb(204, 0, 0); font-weight: bold;font-size:130%;" &gt;Update: It looks like this was a false positive. Yes, all the errors could be replicated by switching the Aptimize on and off but I could not reproduce this issue in a brand new environment which means, Aptimize might not be the problem here but other environmental issues.&lt;br /&gt;As soon as I have more news/fix/info about it I will update this post. Thanks to all the Aptimize people for the contact and great support on this case.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;If you are using a product called &lt;a href="http://www.aptimize.com/"&gt;Aptimize&lt;/a&gt; for SharePoint you might have noticed that it is a great product when it comes to minimizing the footprint in the front end and reducing the rendered size of the output. Unfortunately with great power comes also some inconvenient bugs. Like the one below.&lt;/p&gt;  &lt;p&gt;In our test scenario we will have a normal SharePoint document library...&lt;/p&gt;  &lt;p align="center"&gt; &lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/S53iuSsTh8I/AAAAAAAADrw/QezcMgEfhH4/s1600-h/aptimizebugsharepoint200712.png"&gt;&lt;img alt="aptimize-bug-sharepoint-2007-1" src="http://lh5.ggpht.com/_embTfvHYYPE/S53ivTdOkKI/AAAAAAAADr0/RqF--o7ump8/aptimizebugsharepoint20071_thumb.png?imgmax=800" border="0" width="500" height="153" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;...with versioning, content approval and major and minor versions enabled.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/S53iwDFsV5I/AAAAAAAADr4/wvB806LLgzY/s1600-h/aptimizebugsharepoint200722.png"&gt;&lt;img alt="aptimize-bug-sharepoint-2007-2" src="http://lh5.ggpht.com/_embTfvHYYPE/S53iwxdYyRI/AAAAAAAADsA/JnURuVzwWdc/aptimizebugsharepoint20072_thumb.png?imgmax=800" border="0" width="444" height="412" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;...Nothing unusual here. Very well.&lt;/p&gt;  &lt;p&gt;Then we will have a custom SharePoint page with a custom webpart in it that does a simple thing: loop through the specified library and builds up a list of those items who are published or have a published version.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div    style="background: none repeat scroll 0% 0% white;font-family:consolas;font-size:9pt;color:black;"&gt;   &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;    1&lt;/span&gt;         private static void LoadFake(&lt;span style="color: rgb(43, 145, 175);"&gt;SPSite&lt;/span&gt; site, string virtualLibraryPath, &lt;span style="color: rgb(43, 145, 175);"&gt;IDictionary&lt;/span&gt;&amp;lt;string, bool&amp;gt; fake)&lt;/p&gt;    &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;    2&lt;/span&gt;         {&lt;/p&gt;    &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;    3&lt;/span&gt;             using (&lt;span style="color: rgb(43, 145, 175);"&gt;SPWeb&lt;/span&gt; web = site.OpenWeb(virtualLibraryPath))&lt;/p&gt;    &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;    4&lt;/span&gt;             {&lt;/p&gt;    &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;    5&lt;/span&gt;                 &lt;span style="color: rgb(43, 145, 175);"&gt;SPList&lt;/span&gt; list = web.GetList(virtualLibraryPath);&lt;/p&gt;    &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;    6&lt;/span&gt;                 &lt;span style="color: rgb(43, 145, 175);"&gt;SPListItemCollection&lt;/span&gt; items = list.Items;&lt;/p&gt;    &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;    7&lt;/span&gt;                 foreach (&lt;span style="color: rgb(43, 145, 175);"&gt;SPListItem&lt;/span&gt; item in items)&lt;/p&gt;    &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;    8&lt;/span&gt;                 {&lt;/p&gt;    &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;    9&lt;/span&gt;                     if(item.HasPublishedVersion)&lt;/p&gt;    &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   10&lt;/span&gt;                     {&lt;/p&gt;    &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   11&lt;/span&gt;                         &lt;span style="color:green;"&gt;// do anything here...&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   12&lt;/span&gt;                     }&lt;/p&gt;    &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   13&lt;/span&gt;                 }&lt;/p&gt;    &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   14&lt;/span&gt;             }&lt;/p&gt;    &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   15&lt;/span&gt;         }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;The code above works EXCEPT if you have at least one item in that library in pending approval state AND you have APTIMIZE installed in the server; then you will see that SharePoint error. &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/S53ixoyJ6pI/AAAAAAAADsE/rb86V_RhUOk/s1600-h/aptimizebugsharepoint2007accessdenie%5B2%5D.png"&gt;&lt;img alt="aptimize-bug-sharepoint-2007-access-denied" src="http://lh3.ggpht.com/_embTfvHYYPE/S53iyLAZzWI/AAAAAAAADsI/vRU0j7CyoYU/aptimizebugsharepoint2007accessdenie%5B1%5D.png?imgmax=800" border="0" width="500" height="194" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;em&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;error: access denied - current user - you are currently signed in as: xxx - sign in as a different user&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;If you go to the event viewer you will notice that Aptimize might be running with no problems at all.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/S53iy3L2-4I/AAAAAAAADsM/-M3-4l6Ffe8/s1600-h/aptimizebugsharepoint2007eventviewer.png"&gt;&lt;img alt="aptimize-bug-sharepoint-2007-event-viewer-3" src="http://lh3.ggpht.com/_embTfvHYYPE/S53izjcPswI/AAAAAAAADsQ/WGKXrT8pGQM/aptimizebugsharepoint2007eventviewer%5B2%5D.png?imgmax=800" border="0" width="369" height="412" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;em&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Aptimize Website Accelerator initialized successfully. &lt;/span&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  Settings:      &lt;br /&gt;   Enabled: True       &lt;br /&gt;   RunMode: Development       &lt;br /&gt;   AutoVersionUrls: True       &lt;br /&gt;   UseAlternateAutoVersionUrlFormat: False       &lt;br /&gt;   NewInstall: True       &lt;br /&gt;   UseDefaultSystemProxy: False       &lt;br /&gt;   MaxOptimizationsPerSecond: 50       &lt;br /&gt;   CacheMaxMemory: 100       &lt;br /&gt;   ResourceSetCacheMaxAge: 172800       &lt;br /&gt;   PageSpriteCacheMaxAge: 28800       &lt;br /&gt;   CachePath:       &lt;br /&gt;   HandlerName: wax.axd       &lt;br /&gt;   RunAsDaemon: False       &lt;br /&gt;   VirtualRoot:       &lt;br /&gt;   DefaultCharset:       &lt;br /&gt;   PreviewMode: False       &lt;br /&gt;   IncludeOriginalImageUrl: False       &lt;br /&gt;   InlineCssImagesOnVista: True       &lt;br /&gt;   ForceGzipOn: False       &lt;br /&gt;   ForwardClientAddress: False       &lt;br /&gt;   TrustedForwarders:       &lt;br /&gt;   PageCachingEnabled: False       &lt;br /&gt;   PageCachingVaryBy: Cookie       &lt;br /&gt;   PageCachingVaryByParam:       &lt;br /&gt;   IncludeFromDomains: ThisDomain       &lt;br /&gt;   DiskCacheCleanupInterval: 60       &lt;br /&gt;   MemoryCacheCleanupInterval: 1       &lt;br /&gt;   ResourceClientCacheDuration: 259200       &lt;br /&gt;   ResourceRecheckInterval: 60       &lt;br /&gt;   PageClientCacheDuration: 30       &lt;br /&gt;   PageRecheckInterval: 10       &lt;br /&gt;   Action: Exclude       &lt;br /&gt;   CombineStyleSheets: All       &lt;br /&gt;   CombineImages: All       &lt;br /&gt;   HttpCompression: Smallest       &lt;br /&gt;   CombineBodyScripts: All       &lt;br /&gt;   CombineHeadScripts: All       &lt;br /&gt;   InlineCssImages: True       &lt;br /&gt;   MaxInlineImageSize: 1200       &lt;br /&gt;   BodyScriptInsertionPoint: BodyStart       &lt;br /&gt;   HeadScriptInsertionPoint: BodyStart       &lt;br /&gt;   AsyncScriptLoading: False       &lt;br /&gt;   AsyncStyleSheetLoading: False       &lt;br /&gt;   LogInfoLevel: Info       &lt;br /&gt;   ProxyCacheable: False       &lt;br /&gt;   ShrinkCss: True       &lt;br /&gt;   ShrinkScripts: True       &lt;br /&gt;   ShrinkImages: True       &lt;br /&gt;   JpegQuality: 85       &lt;br /&gt;   ConvertGifToPng: False       &lt;br /&gt;   HttpFetchTimeout: 5000       &lt;br /&gt;   EnableClientApi: False       &lt;br /&gt;   SuppressedErrorCodes:       &lt;br /&gt;   CacheableMimeTypes: text/css,text/javascript,application/x-javascript,image/gif,image/png,image/jpeg,image/jpg,image/bmp,image/x-icon,application/x-shockwave-flash       &lt;br /&gt;   CompressableMimeTypes: text/html,application/xhtml+xml,text/css,text/javascript,application/x-javascript,text/xml,application/xml,application/json &lt;/span&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;But then a lit bit later you will see these two entries in the event log&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/S53i0HVTAYI/AAAAAAAADsU/-34uCMFbTZY/s1600-h/aptimizebugsharepointeventviewer12.png"&gt;&lt;img alt="aptimize-bug-sharepoint-event-viewer-1" src="http://lh6.ggpht.com/_embTfvHYYPE/S53i0iUyzNI/AAAAAAAADsY/3Qcfs-j7xUA/aptimizebugsharepointeventviewer1_th.png?imgmax=800" border="0" width="370" height="412" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Error initializing Safe control - Assembly:Mondosoft.Ontolica.SharePoint.Reporting, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c7127db7656685c6 TypeName: Mondosoft.Ontolica.SharePoint.Reporting.WebControls.WebParts.ReportingWebPart Error: Could not load file or assembly 'Microsoft.ReportingServices.SharePoint.UI.WebParts, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The system cannot find the file specified. &lt;/span&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;For more information, see Help and Support Center at &lt;/span&gt;&lt;/em&gt;&lt;a href="http://go.microsoft.com/fwlink/events.asp"&gt;&lt;em&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;http://go.microsoft.com/fwlink/events.asp&lt;/span&gt;&lt;/em&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/S53i1VKQmcI/AAAAAAAADsc/vXmV_AThgzE/s1600-h/aptimizebugsharepoint2007eventviewer%5B4%5D.png"&gt;&lt;img alt="aptimize-bug-sharepoint-2007-event-viewer-2" src="http://lh5.ggpht.com/_embTfvHYYPE/S53i2E4XIqI/AAAAAAAADsg/5tvqbRahmJI/aptimizebugsharepoint2007eventviewer%5B5%5D.png?imgmax=800" border="0" width="368" height="412" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;The description for Event ID ( 8214 ) in Source ( Windows SharePoint Services 3 ) cannot be found. The local computer may not have the necessary registry information or message DLL files to display messages from a remote computer. You may be able to use the /AUXSOURCE= flag to retrieve this description; see Help and Support for details. The following information is part of the event: A request was made for a URL, &lt;/span&gt;&lt;/em&gt;&lt;a href="http://xx.xx.xx.xx/"&gt;&lt;em&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;http://xx.xx.xx.xx&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;, which has not been configured in Alternate Access Mappings.  Some links may point to the Alternate Access URL for the default zone, &lt;/span&gt;&lt;/em&gt;&lt;a href="http://www.www.www/"&gt;&lt;em&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;http://www.www.ww&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;.  Review the Alternate Access mappings for this Web application at &lt;/span&gt;&lt;/em&gt;&lt;a href="http://myserver:9100/_admin/AlternateUrlCollections.aspx"&gt;&lt;em&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;http://myserver:9100/_admin/AlternateUrlCollections.aspx&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; and consider adding &lt;/span&gt;&lt;/em&gt;&lt;a href="http://xxx.xxx.xxx.xx/"&gt;&lt;em&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;http://xxx.xxx.xxx.xx&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; as a Public Alternate Access URL if it will be used frequently.  Help on this error: &lt;/span&gt;&lt;/em&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=114854"&gt;&lt;em&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;http://go.microsoft.com/fwlink/?LinkId=114854&lt;/span&gt;&lt;/em&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;If you now go to the Aptimize console and turn off the website optimization, the error goes away.&lt;/p&gt;  &lt;p&gt;The curious thing. if you debug that code above you will noticed that an exception will happen at line #9.&lt;/p&gt;  &lt;p&gt;Apparently Aptimize is doing something under the hood that causes a privilege exception when calling &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splistitem.haspublishedversion.aspx"&gt;SPListItem.HasPublishedVersion&lt;/a&gt; even if you are running as System Administrator and even if you are running using &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsecurity.runwithelevatedprivileges.aspx"&gt;RunWithElevatedPrivileges&lt;/a&gt; method. Inspect the returned error and it will see an &lt;a href="http://msdn.microsoft.com/en-us/library/system.unauthorizedaccessexception.aspx"&gt;UnauthorizedAccessException&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;The fix for now is to avoid calling HasPublishedVersion until we hear back from the Aptimize guys.&lt;/p&gt;  &lt;p&gt;If someone out there seen the same issue and would like to share any ideas, feel free. Meanwhile I hope this workaround helps someone.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;See you later&lt;/p&gt;  &lt;p&gt;-Edge&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-6394856674520756443?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/6394856674520756443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=6394856674520756443&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/6394856674520756443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/6394856674520756443'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2010/03/aptimize-bug-access-denied-sharepoint.html' title='Workaround for Aptimize bug and list access denied in SharePoint'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_embTfvHYYPE/S53ivTdOkKI/AAAAAAAADr0/RqF--o7ump8/s72-c/aptimizebugsharepoint20071_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-3552914120282917011</id><published>2010-02-23T18:07:00.001+10:00</published><updated>2010-05-19T16:57:04.419+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>How to create your own SharePoint HttpContext</title><content type='html'>&lt;p&gt;Quick and short. Here's a function that I use to create my own SharePoint &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.httpcontext.aspx"&gt;HttpContext&lt;/a&gt; objects outside the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spcontext.aspx"&gt;SharePoint websites domain&lt;/a&gt;. I hope it is somehow useful to someone out there as well.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div style="font-family: lucida console; background: white; color: black; font-size: 9pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 1&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 2&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; Enables a share point call from anywhere by creating your own context.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 3&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 4&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;param name=&amp;quot;siteCollectionUrl&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;The site collection URL where you want to create the context.&lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 5&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;example&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 6&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; EnableSharePointCallByCreatingYourOwnContext(&amp;quot;http://mysite.com.au&amp;quot;);&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 7&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/example&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 8&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private void EnableSharePointCallByCreatingYourOwnContext(string siteCollectionUrl)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 9&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 10&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; using (var site = new &lt;span style="color: #2b91af"&gt;SPSite&lt;/span&gt;(siteCollectionUrl))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 11&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 12&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; using (var web = site.OpenWeb())&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 13&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 14&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// assumes that context does not exists&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 15&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var contextCreated = false;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 16&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 17&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// if it does not exists, then create it&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 18&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (&lt;span style="color: #2b91af"&gt;HttpContext&lt;/span&gt;.Current == null)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 19&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 20&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; contextCreated = true;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 21&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// creates a request object for the current web URL&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 22&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var request = new &lt;span style="color: #2b91af"&gt;HttpRequest&lt;/span&gt;(string.Empty, web.Url, string.Empty);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 23&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 24&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// open the pipe to output the http stream&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 25&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;HttpResponse&lt;/span&gt; httpResponse;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 26&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; using (var responseWriter = new &lt;span style="color: #2b91af"&gt;StringWriter&lt;/span&gt;())&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 27&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 28&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; httpResponse = new &lt;span style="color: #2b91af"&gt;HttpResponse&lt;/span&gt;(responseWriter);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 29&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 30&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 31&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// creates the context &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 32&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;HttpContext&lt;/span&gt;.Current = new &lt;span style="color: #2b91af"&gt;HttpContext&lt;/span&gt;(request, httpResponse);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 33&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 34&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// HttpHandlerSPWeb is a the property name where you must assign the current web&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 35&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// in order to associate the newly created context to sharepoint&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 36&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (&lt;span style="color: #2b91af"&gt;HttpContext&lt;/span&gt;.Current.Items != null)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 37&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 38&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;HttpContext&lt;/span&gt;.Current.Items[&lt;span style="color: blue; font-weight: bold"&gt;&amp;quot;HttpHandlerSPWeb&amp;quot;&lt;/span&gt;] = web;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 39&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 40&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 41&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 42&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// ...&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 43&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// do whatever you want to do here&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 44&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// ...&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 45&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 46&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// return the application context to the original state prior the execution&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 47&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (contextCreated)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 48&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 49&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;HttpContext&lt;/span&gt;.Current = null;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 50&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 51&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 52&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 53&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;See you later&lt;/p&gt;  &lt;p&gt;-Edge&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-3552914120282917011?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/3552914120282917011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=3552914120282917011&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/3552914120282917011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/3552914120282917011'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2010/02/how-to-create-sharepoint-http-context.html' title='How to create your own SharePoint HttpContext'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-2710909861650391562</id><published>2010-02-23T16:15:00.001+10:00</published><updated>2010-05-19T16:57:04.419+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>How to Fix SharePoint MySite Auto-Creation Errors During Self Service ?</title><content type='html'>&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163948.aspx"&gt;SharePoint MySites&lt;/a&gt; features is one of the best social features in the platform. It effectively gives to the end user control to his own area leveraging even more the collaboration capabilities of the enterprise. &lt;/p&gt;  &lt;p&gt;One of these days we had a strange issue when creating my sites, which should be a trivial task. When an end user goes to his MySite link for the very first time the MySite creation can be automatically triggered, instead this error message was being displayed.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/S4Nxd0QJt5I/AAAAAAAADqE/uA4Pw1JTnbA/s1600-h/event-viewer-sharepoint-application-creation%5B3%5D.png"&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/S4Nx5jKlGvI/AAAAAAAADqI/XM0gxh3Rzd8/s1600-h/there-has-been-an-error-creating-the-personal-site-contact-your-site-administrator-for-more-information%5B3%5D.png"&gt;&lt;img border="0" alt="there-has-been-an-error-creating-the-personal-site-contact-your-site-administrator-for-more-information" src="http://lh3.ggpht.com/_embTfvHYYPE/S4Nx6sLNg5I/AAAAAAAADqM/UPQwh-Pqqdc/there-has-been-an-error-creating-the-personal-site-contact-your-site-administrator-for-more-information_thumb%5B1%5D.png?imgmax=800" width="550" height="109" /&gt;&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;em&gt;&lt;font color="#ff0000"&gt;there has been an error creating the personal site. Contact your site administrator for more information.&lt;/font&gt;&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;With not so many clues to inspect this case we went to take a look at the event viewer to see what's going on.&lt;/p&gt;  &lt;p align="center"&gt;&lt;img border="0" alt="event-viewer-sharepoint-application-creation" src="http://lh3.ggpht.com/_embTfvHYYPE/S4Nx7tjJToI/AAAAAAAADqQ/eIqFFWiPofE/event-viewer-sharepoint-application-creation_thumb%5B1%5D.png?imgmax=800" width="550" height="201" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;When we saw this exception logged.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/S4Nx8Tmmz4I/AAAAAAAADqU/Ru-3ZxM3Z7w/s1600-h/event-viewer-sharepoint-error-my-site%5B2%5D.png"&gt;&lt;img border="0" alt="event-viewer-sharepoint-error-my-site" src="http://lh3.ggpht.com/_embTfvHYYPE/S4Nx9oQtOyI/AAAAAAAADqY/P9IOo3f0bZ0/event-viewer-sharepoint-error-my-site_thumb.png?imgmax=800" width="372" height="412" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#ff0000"&gt;The site /personal/edge could not be created.&amp;#160; The following exception occured: Failed to instantiate file &amp;quot;default.master&amp;quot; from module &amp;quot;DefaultMasterPage&amp;quot;: Source path &amp;quot;default.master&amp;quot; not found. &lt;/font&gt;&lt;/em&gt;&lt;em&gt;&lt;font color="#ff0000"&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;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;A little bit further, we see some more exceptions related to that previous entry where we can see a more detailed explanation for the error.&lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/S4Nx-vbpdlI/AAAAAAAADqc/RDT8xalpw3c/s1600-h/event-viewer-sharepoint-error%5B2%5D.png"&gt;&lt;img border="0" alt="event-viewer-sharepoint-error" src="http://lh4.ggpht.com/_embTfvHYYPE/S4Nx_zZRGYI/AAAAAAAADqg/4-PWieGpTTg/event-viewer-sharepoint-error_thumb.png?imgmax=800" width="370" height="412" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#ff0000"&gt;My Site creation failure for user 'CORP\edge' for site url '&lt;/font&gt;&lt;/em&gt;&lt;a href="http://my.portaldev/personal/edge"&gt;&lt;em&gt;&lt;font color="#ff0000"&gt;http://my.portaldev/personal/edge&lt;/font&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;font color="#ff0000"&gt;. The exception was: Microsoft.Office.Server.UserProfiles.PersonalSiteCreateException: A failure was encountered while attempting to create the site. ---&amp;gt; Microsoft.SharePoint.SPException: Failed to instantiate file &amp;quot;default.master&amp;quot; from module &amp;quot;DefaultMasterPage&amp;quot;: Source path &amp;quot;default.master&amp;quot; not found. ---&amp;gt; System.Runtime.InteropServices.COMException (0x81070587): &lt;strong&gt;Failed to instantiate file &amp;quot;default.master&amp;quot; from module &amp;quot;DefaultMasterPage&amp;quot;: Source path &amp;quot;default.master&amp;quot; not found&lt;/strong&gt;.        &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.Library.SPRequestInternalClass.ApplyWebTemplate(String bstrUrl, String&amp;amp; bstrWebTemplate, Int32&amp;amp; plWebTemplateId)        &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.Library.SPRequest.ApplyWebTemplate(String bstrUrl, String&amp;amp; bstrWebTemplate, Int32&amp;amp; plWebTemplateId)        &lt;br /&gt;&amp;#160;&amp;#160; --- End of inner exception stack trace ---        &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.Library.SPRequest.ApplyWebTemplate(String bstrUrl, String&amp;amp; bstrWebTemplate, Int32&amp;amp; plWebTemplateId)        &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.SPWeb.ApplyWebTemplate(String strWebTemplate)        &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.Administration.SPSiteCollection.Add(SPContentDatabase database, String siteUrl, String title, String description, UInt32 nLCID, String webTemplate, String ownerLogin, String ownerName, String ownerEmail, String secondaryContactLogin, String secondaryContactName, String secondaryContactEmail, String quotaTemplate, String sscRootWebUrl, Boolean useHostHeaderAsSiteName)        &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.SPSite.SelfServiceCreateSite(String siteUrl, String title, String description, UInt32 nLCID, String webTemplate, String ownerLogin, String ownerName, String ownerEmail, String contactLogin, String contactName, String contactEmail, String quotaTemplate)        &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.Office.Server.UserProfiles.UserProfile.&amp;lt;&amp;gt;c__DisplayClass2.&amp;lt;CreateSite&amp;gt;b__0()        &lt;br /&gt;&amp;#160;&amp;#160; --- End of inner exception stack trace ---        &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.Office.Server.UserProfiles.UserProfile.&amp;lt;&amp;gt;c__DisplayClass2.&amp;lt;CreateSite&amp;gt;b__0()        &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.SPSecurity.CodeToRunElevatedWrapper(Object state)        &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.SPSecurity.&amp;lt;&amp;gt;c__DisplayClass4.&amp;lt;RunWithElevatedPrivileges&amp;gt;b__2()        &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.Utilities.SecurityContext.RunAsProcess(CodeToRunElevated secureCode)        &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(WaitCallback secureCode, Object param)        &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(CodeToRunElevated secureCode)        &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.Office.Server.UserProfiles.UserProfile.CreateSite(String strRequestUrl, Boolean bCollision, Int32 lcid). &lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#ff0000"&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;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;So there we go. There is a clue indicating the a file called default.master was not found where it was supposed to be. We step into the &lt;em&gt;Microsoft.SharePoint.Library.SPRequest&lt;/em&gt; class to understand what the method &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.applywebtemplate.aspx"&gt;ApplyWebTemplate&lt;/a&gt; does but not much can be told from there as we can see in the picture. Also there is another method call to a private member, and probably obfuscated by Microsoft, which we can not debug. &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/S4NyAoGI5NI/AAAAAAAADqk/1n663sR4q5E/s1600-h/ScreenShot013%5B3%5D.png"&gt;&lt;img border="0" alt="ScreenShot013" src="http://lh4.ggpht.com/_embTfvHYYPE/S4NyBi7WmgI/AAAAAAAADqo/jo23GBv8Kg0/ScreenShot013_thumb%5B1%5D.png?imgmax=800" width="550" height="299" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In these cases, there is a straight forward thing to do which is if possible, compare against a working version of SharePoint and see the differences. Luckily we had one and we noted that &lt;em&gt;(for some reason)&lt;/em&gt; the files in the SPSPERS were missing in the 12 hive.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;\XML\onet.xml&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;blog.xsl&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;default.aspx&lt;/strong&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p align="center"&gt;&amp;#160;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/S4NyClHa1lI/AAAAAAAADqs/9I_R8vxXVfk/s1600-h/sharepoint-12-hive-template-site-templates-spspers-blog-xsl%5B3%5D.png"&gt;&lt;img border="0" alt="sharepoint-12-hive-template-site-templates-spspers-blog-xsl" src="http://lh5.ggpht.com/_embTfvHYYPE/S4NyDkXPjMI/AAAAAAAADqw/cPfZ-hW7eL8/sharepoint-12-hive-template-site-templates-spspers-blog-xsl_thumb%5B1%5D.png?imgmax=800" width="550" height="147" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/S4NyEQ_XwtI/AAAAAAAADq0/HSK1RX26U00/s1600-h/sharepoint-site-templates-one-xml%5B3%5D.png"&gt;&lt;img border="0" alt="sharepoint-site-templates-one-xml" src="http://lh3.ggpht.com/_embTfvHYYPE/S4NylXtu56I/AAAAAAAADq4/SxPkAdSorYU/sharepoint-site-templates-one-xml_thumb%5B1%5D.png?imgmax=800" width="550" height="169" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We just put the files back in there and it is all good and back to normal. If you ever have this problem&amp;#160; also pay special attention if you have done any modifications in these templates.&lt;/p&gt;  &lt;p&gt;See you later,&lt;/p&gt;  &lt;p&gt;-E&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-2710909861650391562?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/2710909861650391562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=2710909861650391562&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/2710909861650391562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/2710909861650391562'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2010/02/how-to-mysite-errors-self-service-auto.html' title='How to Fix SharePoint MySite Auto-Creation Errors During Self Service ?'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_embTfvHYYPE/S4Nx6sLNg5I/AAAAAAAADqM/UPQwh-Pqqdc/s72-c/there-has-been-an-error-creating-the-personal-site-contact-your-site-administrator-for-more-information_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-8965137140711507436</id><published>2010-02-23T12:57:00.001+10:00</published><updated>2010-05-19T16:57:04.419+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>How to get connection string from BDC and use ADO.NET in your queries ?</title><content type='html'>&lt;p&gt;The &lt;a href="http://msdn.microsoft.com/en-us/library/ms563661.aspx"&gt;SharePoint BDC&lt;/a&gt; is great in a sense that once you target your data to be displayed, the end user can create and format many reports and data grids at his own convenience, however there is a price to pay for that: performance.&lt;/p&gt;  &lt;p&gt;The operations executed via BDC can be extremely slow. Just so you know I will talk about a project I had to implement and how an alternative solution can be put in place to maximize the overall performance.&lt;/p&gt;  &lt;p&gt;The task was to is to hit a specific database and bring a whole set of records in order to build a report. For many architectural reasons particular to the project, the BDC approach had to be used for the task. &lt;/p&gt;  &lt;p&gt;The SharePoint web site makes the request to the BDC, the BDC then drags the data out of the external database and then this data is manipulated and displayed back in the end user report page. The transaction is much like the picture below:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/S4NDlJ79b9I/AAAAAAAADpg/omfY-R3yx2w/s1600-h/bdc-performance-connection-string-sharepoint-3%5B2%5D.png"&gt;&lt;img border="0" alt="bdc-performance-connection-string-sharepoint-2" src="http://lh5.ggpht.com/_embTfvHYYPE/S4NDlzOiaQI/AAAAAAAADpk/mD16gXJBSAI/bdc-performance-connection-string-sharepoint-2_thumb.png?imgmax=800" width="500" height="238" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In this specific case, the whole task takes approximately&lt;strong&gt; 6 minutes&lt;/strong&gt;. Yeah, I know. Painful.&lt;/p&gt;  &lt;p&gt;Let's run a profiler against that page and see what it tells about it. &lt;em&gt;(I will blur all text which might contain sensitive information about the client.)&lt;/em&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/S4NDmm_G8fI/AAAAAAAADpo/mCgYAuy8OYs/s1600-h/bdc-sharepoint-performance%5B3%5D.png"&gt;&lt;img border="0" alt="bdc-sharepoint-performance" src="http://lh5.ggpht.com/_embTfvHYYPE/S4NEB1reaEI/AAAAAAAADps/ERwLH5lmuvw/bdc-sharepoint-performance_thumb%5B1%5D.png?imgmax=800" width="550" height="168" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Well, once we have analyzed that data in our hands outlining all the calls being executed during this specific &lt;a href="http://msdn.microsoft.com/en-us/library/bb892189.aspx"&gt;SharePoint's page&amp;#160; life cycle&lt;/a&gt; and what's going on behind the scenes we can draw a few conclusions and the most important conclusion here is that &lt;strong&gt;2 single calls are responsible for almost 99%&lt;/strong&gt; of the total execution time. Now that an impressive bottleneck.&lt;/p&gt;  &lt;p&gt;Let's dive a bit further on it into the internal calls and we can identify the very single calls responsible for these times.&lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/S4NEDFqYINI/AAAAAAAADpw/TotPRyZl4m4/s1600-h/bdc-sharepoint-performance-5%5B3%5D.png"&gt;&lt;img border="0" alt="bdc-sharepoint-performance-5" src="http://lh4.ggpht.com/_embTfvHYYPE/S4NED_dNbgI/AAAAAAAADp0/w1uycXKy7QE/bdc-sharepoint-performance-5_thumb%5B1%5D.png?imgmax=800" width="550" height="278" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/S4NEEvk6tJI/AAAAAAAADp4/Io7CdJSYOjE/s1600-h/bdc-sharepoint-performance-4%5B7%5D.png"&gt;&lt;img border="0" alt="bdc-sharepoint-performance-4" src="http://lh6.ggpht.com/_embTfvHYYPE/S4NEFqSYW6I/AAAAAAAADp8/oTkFkbcRyoM/bdc-sharepoint-performance-4_thumb%5B3%5D.png?imgmax=800" width="550" height="236" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;When we go back to the source code to take a look at them, it turns out that they were the ones connecting and loading the data from the BDC. &lt;/p&gt;  &lt;p&gt;The world would be perfect if we only could have done things our way, but unfortunately due to requirements restrictions this can not be changed.&lt;/p&gt;  &lt;p&gt;As a good exercise I made myself a mirror copy of this environment to test a theory. What if we change the approach to loading data from the BDC? &lt;/p&gt;  &lt;p&gt;The idea is to connect to the BDC and only extract the necessary connection string to the external data source and from there I would load the data via ADO.Net. That would be great because :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;we are not performing any breaking changes in the current structure &lt;/li&gt;    &lt;li&gt;the BDC still plays the game &lt;/li&gt;    &lt;li&gt;All the permissions and security levels are still managed by the BDC definition &lt;/li&gt;    &lt;li&gt;I have an opportunity to retrieve data from an external source much faster than via BDC &lt;/li&gt; &lt;/ul&gt;  &lt;p align="center"&gt;&amp;#160;&lt;img border="0" alt="bdc-performance-connection-string-sharepoint-3" src="http://lh5.ggpht.com/_embTfvHYYPE/S4NEGQ4sQsI/AAAAAAAADqA/8VN1pyfcT_E/bdc-performance-connection-string-sharepoint-3_thumb.png?imgmax=800" width="500" height="250" /&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;1 and 2 we would get the BDC connection string. &lt;/li&gt;    &lt;li&gt;3 and 4 we will query the external database and get the data displayed on screen.&amp;#160; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Using the properties in the code below you can get the properties returned from the BDC catalog and amongst them you can see the returned connection string with all the permissions etc for your use in your SharePoint code. Neat! &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Note that the code is also using Entity Framework.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div style="font-family: lucida console; background: white; color: black; font-size: 9pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 25&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public static void SetSharedServiceProvider(&lt;span style="color: #2b91af"&gt;SPSite&lt;/span&gt; site)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 26&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 27&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; try&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 28&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 29&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (site != null)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 30&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 31&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 32&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;SqlSessionProvider&lt;/span&gt;.Instance().SetThreadLocalSharedResourceProviderToUse(&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 33&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;ServerContext&lt;/span&gt;.GetContext(site));&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 34&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 35&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 36&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;&amp;#160; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 37&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; catch (&lt;span style="color: #2b91af"&gt;Exception&lt;/span&gt;)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 38&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 39&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Ignore the exception if a provider &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 40&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// is already set.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 41&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 42&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;&amp;#160; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 43&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 44&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 45&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public static &lt;span style="color: #2b91af"&gt;EntityConnection&lt;/span&gt; GetOnePortalConnectionString(&lt;span style="color: #2b91af"&gt;SPSite&lt;/span&gt; site)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 46&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 47&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; const string instanceName = &lt;span style="color: blue; font-weight: bold"&gt;&amp;quot;TEST_Instance&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 48&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SetSharedServiceProvider(site);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 49&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;LobSystemInstance&lt;/span&gt; instance = &lt;span style="color: #2b91af"&gt;ApplicationRegistry&lt;/span&gt;.GetLobSystemInstances()[instanceName];&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 50&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var properties = instance.GetProperties();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 51&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 52&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 53&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return GetEntityConnection(GetProperty(properties, &lt;span style="color: blue; font-weight: bold"&gt;&amp;quot;CONN Data Source&amp;quot;&lt;/span&gt;),&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 54&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; GetProperty(properties, &lt;span style="color: blue; font-weight: bold"&gt;&amp;quot;CON Initial Catalog&amp;quot;&lt;/span&gt;));&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 55&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Once implemented the results are impressive. The page that use to load in minutes &lt;strong&gt;now takes a couple of seconds to run&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Now moving from the current scenario to the improved version is easier said than done and the lesson learned here is that BDC can be as great as mush as it can be plain dangerous to kill an application.&lt;/p&gt;  &lt;p&gt;See you later,&lt;/p&gt;  &lt;p&gt;-E&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-8965137140711507436?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/8965137140711507436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=8965137140711507436&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/8965137140711507436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/8965137140711507436'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2010/02/connection-string-from-bdc-sharepoint.html' title='How to get connection string from BDC and use ADO.NET in your queries ?'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_embTfvHYYPE/S4NDlzOiaQI/AAAAAAAADpk/mD16gXJBSAI/s72-c/bdc-performance-connection-string-sharepoint-2_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-5238533370102524160</id><published>2010-01-01T13:01:00.000+10:00</published><updated>2010-08-30T12:49:39.687+10:00</updated><title type='text'>bicycle rides in 2010</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;June&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="0" width="100%"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="78"&gt;Sun&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Mon&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Tue&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Wed&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Thu&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Fri&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Sat&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;July&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="0" width="100%"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="78"&gt;Sun&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Mon&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Tue&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Wed&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Thu&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Fri&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Sat&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;h3&gt;August&lt;/h3&gt;  &lt;table border="2" cellspacing="0" cellpadding="0" width="100%"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="27"&gt;&lt;strong&gt;Sun&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="29"&gt;&lt;strong&gt;Mon&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="27"&gt;&lt;strong&gt;Tue&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="31"&gt;&lt;strong&gt;Wed&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="110"&gt;&lt;strong&gt;Thu&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="21"&gt;&lt;strong&gt;Fri&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="24"&gt;&lt;strong&gt;Sat&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="27"&gt;1&lt;/td&gt;        &lt;td valign="top" width="29"&gt;2&lt;/td&gt;        &lt;td valign="top" width="27"&gt;3&lt;/td&gt;        &lt;td valign="top" width="31"&gt;4&lt;/td&gt;        &lt;td valign="top" width="110"&gt;5&lt;/td&gt;        &lt;td valign="top" width="21"&gt;6&lt;/td&gt;        &lt;td valign="top" width="24"&gt;7&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="27"&gt;8&lt;/td&gt;        &lt;td valign="top" width="29"&gt;9&lt;/td&gt;        &lt;td valign="top" width="27"&gt;10&lt;/td&gt;        &lt;td valign="top" width="31"&gt;11&lt;/td&gt;        &lt;td valign="top" width="110"&gt;12&lt;/td&gt;        &lt;td valign="top" width="21"&gt;13&lt;/td&gt;        &lt;td valign="top" width="24"&gt;14&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="27"&gt;15&lt;/td&gt;        &lt;td valign="top" width="29"&gt;16&lt;/td&gt;        &lt;td valign="top" width="27"&gt;17&lt;/td&gt;        &lt;td valign="top" width="31"&gt;18&lt;/td&gt;        &lt;td valign="top" width="110"&gt;19&lt;/td&gt;        &lt;td valign="top" width="21"&gt;20&lt;/td&gt;        &lt;td valign="top" width="24"&gt;21&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="27"&gt;22&lt;/td&gt;        &lt;td valign="top" width="29"&gt;23&lt;/td&gt;        &lt;td bgcolor="#3366ff" valign="top" width="27"&gt;&lt;strong&gt;&lt;font color="#ffff00"&gt;24              &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;&lt;a href="http://j.mp/d7wcpk"&gt;&lt;strong&gt;&lt;font color="#ffff00"&gt;http://j.mp/d7wcpk&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;font color="#ffff00"&gt;              &lt;br /&gt;              &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;&lt;a href="http://j.mp/9uKRB4"&gt;&lt;strong&gt;&lt;font color="#ffff00"&gt;http://j.mp/9uKRB4&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="31"&gt;25&lt;/td&gt;        &lt;td bgcolor="#3366ff" valign="top" width="110"&gt;&lt;strong&gt;&lt;font color="#ffff00"&gt;26              &lt;br /&gt;              &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;&lt;a href="http://j.mp/9ybXHU"&gt;&lt;strong&gt;&lt;font color="#ffff00"&gt;http://j.mp/9ybXHU&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;font color="#ffff00"&gt;              &lt;br /&gt;              &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;&lt;a href="http://j.mp/cSz6kJ"&gt;&lt;strong&gt;&lt;font color="#ffff00"&gt;http://j.mp/cSz6kJ&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="21"&gt;27&lt;/td&gt;        &lt;td valign="top" width="24"&gt;28&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="27"&gt;29&lt;/td&gt;        &lt;td valign="top" width="29"&gt;30&lt;/td&gt;        &lt;td valign="top" width="27"&gt;31&lt;/td&gt;        &lt;td valign="top" width="31"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="110"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="21"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="24"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;September&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="0" width="100%"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="78"&gt;Sun&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Mon&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Tue&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Wed&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Thu&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Fri&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Sat&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;October&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="0" width="100%"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="78"&gt;Sun&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Mon&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Tue&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Wed&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Thu&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Fri&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Sat&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;November&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="0" width="100%"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="78"&gt;Sun&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Mon&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Tue&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Wed&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Thu&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Fri&lt;/td&gt;        &lt;td valign="top" width="78"&gt;Sat&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;December&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="0" width="100%"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="78"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-5238533370102524160?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/5238533370102524160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=5238533370102524160&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/5238533370102524160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/5238533370102524160'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2010/01/bicycle-rides-in-2010.html' title='bicycle rides in 2010'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-1721277694689451118</id><published>2009-10-30T16:34:00.000+10:00</published><updated>2010-05-19T16:57:04.420+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>SharePoint Resources</title><content type='html'>&lt;p align="justify"&gt;&lt;strong&gt;SharePoint 2010&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://technet.microsoft.com/en-us/evalcenter/ee424282.aspx"&gt;FAST Search Server 2010 trial&lt;/a&gt; - Microsoft FAST Search Server 2010 for SharePoint is a new search solution that delivers the power of FAST with the simplicity and TCO of Microsoft. It provides the best general productivity search on the market AND makes it easy and economical to build high-value search applications.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=751fa0d1-356c-4002-9c60-d539896c66ce"&gt;SharePoint 2010 Virtual Machine&lt;/a&gt; - This download contains a two Virtual Machine set for evaluating and demonstrating Office 2010 and SharePoint 2010. Additional training material can be found &lt;a href="http://channel9.msdn.com/learn/courses/SharePoint2010Developer/ "&gt;here&lt;/a&gt; and &lt;a href="http://channel9.msdn.com/learn/courses/Office2010/ "&gt;here&lt;/a&gt;. Here are resources for &lt;a href="http://channel9.msdn.com/learn/courses/vs2010/"&gt;VS2010&lt;/a&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://spg.codeplex.com/releases/view/40968"&gt;SPG2010 Guidance&lt;/a&gt; &amp;#8211; SharePoint Guidance drop notes&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc263199(office.14).aspx"&gt;Technical Diagrams (posters)&lt;/a&gt; - these resources are visual representations of recommended solutions. include poster-sized documents available in formats including Microsoft Office Visio 2007 files (.vsd), PDF files, and XPS files&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc262881(office.14).aspx"&gt;Evaluation Guide SP 2010&lt;/a&gt; - This evaluation guide is designed to help IT pros gain sufficient knowledge and understanding to evaluate Microsoft SharePoint Server 2010&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=166486"&gt;Broadcast PowerPoint on SharePoint 2010&lt;/a&gt; - Guide to installing and configuring a solution for broadcasting Microsoft PowerPoint slide shows&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=cffb14e8-88a9-43bd-87aa-4792ab60d320&amp;amp;displaylang=en#filelist"&gt;Professional Developer Evaluation Guide&lt;/a&gt; - The SharePoint 2010 developer evaluation guide describes the SharePoint 2010 developer platform, including walkthroughs of some of the new capabilities for developers&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=04BA41FD-F088-4D7C-A86E-3855C16E23A2&amp;amp;displaylang=en"&gt;SharePoint Developer Platform Wall Poster&lt;/a&gt; - The SharePoint 2010 Developer Platform wall poster shows a view of the SharePoint 2010 developer tools, community ecosystem, execution environment, Sharepoint Server 2010 workloads, and target application types. The poster is intended to be printed at 24 inches x 36 inches (61 centimeters x 91 centimeters)&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=AC9A3851-C298-4F4F-B7F0-63D756D2BDE9&amp;amp;displaylang=en"&gt;Developer and IT Professional Learning Plan&lt;/a&gt; - A guide to learning about SharePoint 2010 for Developers and IT Pros&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=C010FC68-B47F-4DB6-B8A8-AD4BA33A35C5&amp;amp;displaylang=en"&gt;Getting Started with Development on SharePoint 2010 handson labs&lt;/a&gt; - Use these 10 hands-on lab manuals for SharePoint 2010 to get started learning SharePoint 2010 development&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;WSS&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc287835.aspx"&gt;WSS Diagrams (posters)&lt;/a&gt; - These are visual representations of recommended solutions of WSS&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://code.msdn.microsoft.com/ULSViewer"&gt;ULS Viewer&lt;/a&gt; - Winforms application to display ULS messages&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://blogs.msdn.com/virtual_pc_guy/archive/2007/11/28/disabling-time-synchronization-under-virtual-pc-2007.aspx"&gt;How to disable the Virtual PC image clock from the host server&lt;/a&gt;&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;SharePoint 2007&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc263199.aspx"&gt;Technical Diagrams (posters)&lt;/a&gt; - poster-sized documents with visual representations of recommended solutions&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://office.microsoft.com/en-us/sharepointdesigner"&gt;Sharepoint Designer&lt;/a&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=ef93e453-75f1-45df-8c6f-4565e8549c2a"&gt;Sharepoint Services 3.0 + Service Pack 1&lt;/a&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=2e6e5a9c-ebf6-4f7f-8467-f4de6bd6b831"&gt;Sharepoint Server 2007 (MOSS) Trial&lt;/a&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=67f93dcb-ada8-4db5-a47b-df17e14b2c74&amp;amp;displaylang=en"&gt;Sharepoint Server 2007 Virtual Disk&lt;/a&gt; - This download comes as a pre-configured VHD. This download enables you evaluate Microsoft Office SharePoint Server 2007. Virtual Server 2005 R2 is required to run this VHD.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=5807b5ef-57a1-47cb-8666-78c1363f127d"&gt;Sharepoint Services 3.0 Templates: All&lt;/a&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=6d94e307-67d9-41ac-b2d6-0074d6286fa9"&gt;Sharepoint 2007 SKD&lt;/a&gt; - The Microsoft Office SharePoint Server 2007 SDK contains conceptual overviews, &amp;#8220;How Do I&amp;#8230;?&amp;#8221; programming tasks, developer tools, code samples, references, and an Enterprise Content Management (ECM) starter kit to guide you in developing solutions based on Microsoft Office SharePoint Server 2007&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=ad59175c-ad6a-4027-8c2f-db25322f791b"&gt;MOSS Service Pack 1&lt;/a&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=67f93dcb-ada8-4db5-a47b-df17e14b2c74"&gt;MOSS Virtual Disk&lt;/a&gt; - This download comes as a pre-configured VHD. This download enables you evaluate Microsoft Office SharePoint Server 2007&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=b2c0b628-5cab-48c1-8cae-c34c1ccbdc0a"&gt;VisualStudio 2008 Extensions 1.3 (VSeWSS)&lt;/a&gt; - SharePoint project and item templates for Visual Studio 2008 - VSeWSS 1.3 (Feb 2009 CTP)&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="https://aks.hisoftware.com/downloads/default.aspx"&gt;Accessibility Kit For Sharepoint&lt;/a&gt; - free downloadable kit that helps you to quickly implement WCAG 1.0 compliant sites&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C3722DBA-6EE7-4E0E-82B5-FDAF3C5EC927&amp;amp;displaylang=en"&gt;Sharepoint Guidance Kit&lt;/a&gt; - This guidance helps architects and developers design, build, test, deploy, and upgrade SharePoint intranet applications. A reference implementation demonstrates solutions to common architectural, development, and application lifecycle management challenges.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://www.codeplex.com/wspbuilder"&gt;WSP Builder&lt;/a&gt; - A SharePoint Solution Package (WSP) creation tool for WSS 3.0 &amp;amp; MOSS 2007&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://www.codeplex.com/stsdev"&gt;STSDEV&lt;/a&gt; - A SharePoint developer's utility designed to quickly transform your ideas into real-world components that you can deploy into a staging or production Web farm with confidence.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=0a87658f-20b8-4dcc-ad7a-09ad22641f3a"&gt;Ten Themes for Sharepoint in VWeWSS&lt;/a&gt; - This is a set of ten Visual Studio 2008 extensions for SharePoint projects containing designed themes for SharePoint&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://www.microsoft.com/web/default.aspx"&gt;Microsoft Web Platform Installer&lt;/a&gt; &amp;#8211; One-click setup your whole development environment&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://office.microsoft.com/download/afile.aspx?AssetID=AM102306291033"&gt;Governance Check List for Sharepoint&lt;/a&gt; &amp;#8211; A collection of hand-selected checklists and tips to provide comprehensive governance when implementing Sharepoint&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=05e0dd12-8394-402b-8936-a07fe8afaffd#tm"&gt;Windows Sharepoint Services 3.0 SKD&lt;/a&gt; - The Windows SharePoint Services 3.0 software development kit (SDK) contains conceptual overviews, programming tasks, samples, and references to guide you in developing solutions based on Windows SharePoint Services 3.0&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=80cf81f7-d710-47e3-8b95-5a6555a230c2&amp;amp;displaylang=en"&gt;Managed Stack Explorer&lt;/a&gt; - if you want to troubleshoot hangs/performance issues in a process but don&amp;#8217;t want to go through the hassle of getting and analyzing a dump.&amp;#160;&amp;#160; What it will do is basically attach, snap the .net call stack and detach so you can see what all the .net threads are doing without using a debugger.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=277fefca-d62f-41bc-943d-79002254cfee"&gt;SharePoint Productivity Hub&lt;/a&gt; &amp;#8211; The Productivity Hub is a Microsoft SharePoint Server 2007 site collection that offers training materials for end-users.&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-1721277694689451118?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/1721277694689451118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=1721277694689451118&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/1721277694689451118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/1721277694689451118'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2009/03/sharepoint-resources.html' title='SharePoint Resources'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-7250581523205608117</id><published>2009-10-22T15:17:00.002+10:00</published><updated>2010-05-19T16:57:04.421+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>Disabling workspace meeting creation from SharePoint Calendar</title><content type='html'>&lt;p align="justify"&gt;In many big implementations for &lt;a href="http://www.blogger.com/www.microsoft.com/sharepoint"&gt;SharePoint&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/bb428899.aspx"&gt;TeamSites&lt;/a&gt; is a great tool for collaboration and for user-driven participation.   &lt;br /&gt;There is also another functionality in SharePoint called &lt;a href="http://office.microsoft.com/en-us/sharepointtechnology/HA011611041033.aspx"&gt;Workspaces&lt;/a&gt;, which is a small cut-down version of what a TeamSite can offer. Workspaces normally can be used to track meeting minutes, small task forces and general gatherings and its automatically creation is found inside the calendar items, which makes the creation so easy by the users. All they have to do is to flick the checkbox and click OK.&lt;/p&gt;  &lt;p align="justify"&gt;For the big enterprises, it does not make much sense to implement TeamSites and still have to manage Workspaces due to the similarities it had to Team Sites, and specially when it is so easy to create on a uncontrolled manner. &lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;&lt;em&gt;So what how to disable workspaces creation and avoid the meeting workspaces proliferation?&lt;/em&gt;&lt;/strong&gt; &lt;/p&gt;  &lt;p align="justify"&gt;you can achieve this in many ways. I can tell you the most common use found on the Internet: the JavaScript solution.  &lt;br /&gt;It is very simple to implement. Basically you drop JavaScript in the page and the JavaScript will look for the html row that contains the workspace checkbox creation, then once found make it invisible. In fact the option is still there, the users just cant see it anymore. &lt;/p&gt;  &lt;p align="justify"&gt;From an implementation point of view, that's straight forward and many users of many levels can actually do this. From a governance and architectural point of view, that's not the best recommended:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;div align="justify"&gt;it will introduce new code into SharePoint ecosystem, and potentially a new debug variable.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;it does not scale well.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;it is vulnerable to malicious code.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;an advanced enough user can in fact bypass that barrier by cross-scripting himself that option to be visible again &lt;/div&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p align="justify"&gt;The other approach would be to understand SharePoint and how it works internally. Always have in mind that SharePoint was not meant to be modified, but extended or configured. If you research enough might find that this setting can be controlled.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/St_q7mu6WRI/AAAAAAAADls/XOUN2oqu8R0/sharepoint-disable-workspaces%5B6%5D.png"&gt;&lt;img alt="sharepoint-disable-workspaces" src="http://lh6.ggpht.com/_embTfvHYYPE/St_q8tWYs-I/AAAAAAAADlw/WFyjkdXPqVc/sharepoint-disable-workspaces_thumb%5B4%5D.png" width="500" border="0" height="412" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;To remove the option to create workspaces in SharePoint, you need to go to:&lt;/p&gt;  &lt;p&gt;...&lt;em&gt;12 hive folder\TEMPLATE\FEATURES\EventsList\Events&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Edit the file called &lt;em&gt;schema.xml&lt;/em&gt; &lt;em&gt;(I would recommend to make a backup copy, as well)&lt;/em&gt; and edit the field to be like that:&lt;/p&gt;  &lt;div    style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;font-family:courier new;font-size:10pt;color:black;"&gt;   &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   59&lt;/span&gt; &lt;span style="color:blue;"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;Field&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;ID&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;{08fc65f9-48eb-4e99-bd61-5946c439e691}&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   60&lt;/span&gt; &lt;span style="color:blue;"&gt;             &lt;/span&gt;&lt;span style="color:red;"&gt;Type&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;CrossProjectLink&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;WorkspaceLink&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   61&lt;/span&gt; &lt;span style="color:blue;"&gt;             &lt;/span&gt;&lt;span style="color:red;"&gt;Format&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;EventList&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;DisplayName&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;$Resources:core,Workspace;&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   62&lt;/span&gt; &lt;span style="color:blue;"&gt;             &lt;/span&gt;&lt;span style="color:red;"&gt;DisplayImage&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;mtgicon.gif&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;HeaderImage&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;mtgicnhd.gif&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   63&lt;/span&gt; &lt;span style="color:blue;"&gt;             &lt;/span&gt;&lt;span style="color:red;"&gt;ClassInfo&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;Icon&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;$Resources:core,Meeting_Workspace;&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   64&lt;/span&gt; &lt;span style="color:blue;"&gt;             &lt;/span&gt;&lt;span style="color:red;"&gt;Filterable&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;TRUE&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Sealed&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;TRUE&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   65&lt;/span&gt; &lt;span style="color:blue;"&gt;             &lt;/span&gt;&lt;span style="color:red;"&gt;SourceID&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;http://schemas.microsoft.com/sharepoint/v3&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   66&lt;/span&gt; &lt;span style="color:blue;"&gt;             &lt;/span&gt;&lt;span style="color:red;"&gt;StaticName&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;WorkspaceLink&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   67&lt;/span&gt; &lt;span style="color:blue;"&gt;             &lt;/span&gt;&lt;strong&gt;&lt;span style="color:red;"&gt;ShowInEditForm&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;FALSE&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;ShowInNewForm&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;FALSE&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;the 2 new attributes &lt;em&gt;ShowInEditForm &lt;/em&gt;and &lt;em&gt;ShowInNewForm &lt;/em&gt;will control the workspace checkbox visibility.&lt;/p&gt;  &lt;p&gt;Did you like that? :)&lt;/p&gt;&lt;p&gt;&lt;span style="font-style: italic;"&gt;Update: Aapo from SharePoint Blues just mentioned another way to perform this operation. &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.sharepointblues.com/2010/04/26/how-to-remove-workspace-link-from-a-calendar/"&gt;You should check that out.&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;-E&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-7250581523205608117?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/7250581523205608117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=7250581523205608117&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/7250581523205608117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/7250581523205608117'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2009/10/how-to-disable-workspace-calendar.html' title='Disabling workspace meeting creation from SharePoint Calendar'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_embTfvHYYPE/St_q8tWYs-I/AAAAAAAADlw/WFyjkdXPqVc/s72-c/sharepoint-disable-workspaces_thumb%5B4%5D.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-5987520779760048309</id><published>2009-10-20T14:55:00.001+10:00</published><updated>2010-05-19T16:57:04.421+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>How to programmatically configure RSS feed for a list in SharePoint</title><content type='html'>&lt;p align="justify"&gt;Here's another interesting story. &lt;a href="http://www.microsoft.com/sharepoint"&gt;SharePoint&lt;/a&gt; will overwrite all the RSS columns you might have setup for a list.&lt;/p&gt;  &lt;p align="justify"&gt;One of the tasks I was working was to process across all the list in all the sites of a specific site collection, then enable RSS settings for each list and set a predefined group of columns as the RSS output. Once that's done, one could easily go to the list settings and verify them like the figure below:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/St1CcoBd2MI/AAAAAAAADkU/Xup-EMj8W6w/1%5B8%5D.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="1" src="http://lh3.ggpht.com/_embTfvHYYPE/St1Cdpr7G2I/AAAAAAAADkY/z6Im1Gsmgq8/1_thumb%5B4%5D.png" width="500" height="215" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;The whole process executed with no problems. No error messages and no warnings.&lt;/p&gt;  &lt;p align="justify"&gt;However, when I went to take a look at my modified RSS settings that's the screen I saw:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/St1CeWxafyI/AAAAAAAADkc/Q5QFvuqnNYU/11%5B2%5D.png"&gt;&lt;img border="0" alt="11" src="http://lh4.ggpht.com/_embTfvHYYPE/St1CfX3VAoI/AAAAAAAADkg/DvpWi4Hhh54/11_thumb.png" width="500" height="150" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;It means, nothing was setup the way I planned. Apparently nothing happened when the code executed.&lt;/p&gt;  &lt;p align="justify"&gt;So I went to debug and inspected the line one by one. No error and when I went to see the screen, that's what I've got:&lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/St1CcoBd2MI/AAAAAAAADkU/Xup-EMj8W6w/1%5B8%5D.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="1" src="http://lh3.ggpht.com/_embTfvHYYPE/St1Cdpr7G2I/AAAAAAAADkY/z6Im1Gsmgq8/1_thumb%5B4%5D.png" width="500" height="215" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Yep. Everything was there and working.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;How come it fails in first place and worked well on my second try?&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;This behavior continued on and on and and on, with many other libraries. Fails the first time, succeed in the second. So I went to look at the data definition using SharePoint Explorer. For a brand new library, that's what I saw:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/St1CgdHKzlI/AAAAAAAADkk/FwMKd-W6G44/4%5B2%5D.png"&gt;&lt;img border="0" alt="4" src="http://lh4.ggpht.com/_embTfvHYYPE/St1ChX1pxcI/AAAAAAAADko/nmbgrKM5Hpo/4_thumb.png" width="335" height="215" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;And that's how it looks like once I execute my code to create a new RSS feed:&lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/St1CiEwe59I/AAAAAAAADks/mMKWnji5bEg/5%5B2%5D.png"&gt;&lt;img border="0" alt="5" src="http://lh6.ggpht.com/_embTfvHYYPE/St1CjFrstUI/AAAAAAAADkw/ISdHy2uK_wk/5_thumb.png" width="347" height="215" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;All right. It means the RSS is actually there. So I went to see the RSS settings in the page and guess what...That's what I see:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/St1CeWxafyI/AAAAAAAADkc/Q5QFvuqnNYU/11%5B2%5D.png"&gt;&lt;img border="0" alt="11" src="http://lh4.ggpht.com/_embTfvHYYPE/St1CfX3VAoI/AAAAAAAADkg/DvpWi4Hhh54/11_thumb.png" width="500" height="150" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;The RSS is blank again!!!&lt;/p&gt;  &lt;p align="justify"&gt;Then I came back to see using the explorer and...&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/St1CkAdaGbI/AAAAAAAADk0/USWgM3kfGd8/6%5B2%5D.png"&gt;&lt;img border="0" alt="6" src="http://lh6.ggpht.com/_embTfvHYYPE/St1ClFkEtZI/AAAAAAAADk4/KQQ4irsqXTw/6_thumb.png" width="293" height="215" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Voila... something is kick-starting the creation of a brand new RSS setting and overwriting my one for usage. &lt;/p&gt;  &lt;p align="justify"&gt;I had a guess but it was just too weird to believe: SharePoint creates automatically a RSS feed for the first time and only during the first time an user visits the settings page.&lt;/p&gt;  &lt;p align="justify"&gt;I decided to debug the page and try to understand what SharePoint calls are made via UI. I've got my hands on the &lt;strong&gt;&lt;em&gt;_layouts/listsyndication.aspx&lt;/em&gt;&lt;/strong&gt; page from SharePoint &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/St1Clx6w-SI/AAAAAAAADk8/oQ80xELe6Og/2%5B5%5D.png"&gt;&lt;img border="0" alt="2" src="http://lh4.ggpht.com/_embTfvHYYPE/St1Cm3sP3DI/AAAAAAAADlA/w8EE8AcEcw0/2_thumb%5B1%5D.png" width="500" height="37" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;and I attached a debugger to it. I chose a brand new document library to test my theory and during the first page load I got this breakpoint:&lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/St1Cnl-HCzI/AAAAAAAADlE/mSIzhHLXM8g/3%5B5%5D.png"&gt;&lt;img border="0" alt="3" src="http://lh3.ggpht.com/_embTfvHYYPE/St1Cot3T-RI/AAAAAAAADlI/ALBBQH6CKcU/3_thumb%5B1%5D.png" width="248" height="215" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;During the page load there is javascript call to the server triggering &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splist.ensurersssettings.aspx"&gt;SPList.EnsureRssSettings()&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Then using .NET Reflector I opened the Microsoft.Sharepoint.Dll version 12 and found the method signature:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/St1Cpc6jKFI/AAAAAAAADlM/9R7pjPtm2iw/8%5B2%5D.png"&gt;&lt;img border="0" alt="8" src="http://lh6.ggpht.com/_embTfvHYYPE/St1CqHbYy9I/AAAAAAAADlQ/9hX1yysy87Q/8_thumb.png" width="298" height="65" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Looking inside the method I noticed:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;div align="justify"&gt;&lt;strong&gt;SharePoint does use a hardcoded string&lt;/strong&gt; &lt;em&gt;(&amp;quot;RssView&amp;quot;)&lt;/em&gt; to control the RSS name and which &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spview.aspx"&gt;view is a RSS type&lt;/a&gt;.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;strong&gt;EnsureRssSettings in fact creates a brand new Rss&lt;/strong&gt; feed for you, without your request. &lt;/div&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/St1CrN0BGxI/AAAAAAAADlU/c31GqAJkrbU/7%5B2%5D.png"&gt;&lt;img border="0" alt="7" src="http://lh4.ggpht.com/_embTfvHYYPE/St1Cr6gXhFI/AAAAAAAADlY/1SqiOZG4bF8/7_thumb.png" width="262" height="215" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p align="justify"&gt;So, debriefing the case. When you open up the settings page, the &lt;em&gt;listsyndication.aspx&lt;/em&gt; page automatically performs a call to &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splist.ensurersssettings.aspx"&gt;SPList.EnsureRssSettings()&lt;/a&gt; which automatically creates a RSS feed (if syndication is enabled) and makes it invisible &lt;em&gt;(see property Hidden=true).&lt;/em&gt; When my code ran, it created another view with the same name RssView, but actually the web address was different. The next time the code executed, I was not working anymore with my view but with the previously automatically created Rss from SharePoint.&lt;/p&gt;  &lt;p align="justify"&gt;Closing up the case: Next time you need to create a Rss feed, you don't have to create a &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spview.aspx"&gt;view&lt;/a&gt;. You just have to make sure you call in your code &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splist.ensurersssettings.aspx"&gt;SPList.EnableRssSettings()&lt;/a&gt; and then go ahead and modify the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splist.views.aspx"&gt;SPList.View&lt;/a&gt; called &lt;em&gt;&amp;quot;RssView&amp;quot;&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Now, the code:&lt;/p&gt;  &lt;p align="center"&gt;&lt;em&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/St1G_xQx_ZI/AAAAAAAADlc/DzaJvYcuTr0/c0%5B2%5D.png"&gt;&lt;img border="0" alt="c0" src="http://lh4.ggpht.com/_embTfvHYYPE/St1HA7N_WSI/AAAAAAAADlg/nuFfLV-rGgA/c0_thumb.png" width="472" height="215" /&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;and then to save the Rss feed...&lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/St1HBZ36ZXI/AAAAAAAADlk/lOudtREnpbo/c1%5B2%5D.png"&gt;&lt;img border="0" alt="c1" src="http://lh6.ggpht.com/_embTfvHYYPE/St1HCaXT2gI/AAAAAAAADlo/VVZNZtCjgzU/c1_thumb.png" width="500" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;See you later,&lt;/p&gt;  &lt;p align="justify"&gt;-Edge&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-5987520779760048309?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/5987520779760048309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=5987520779760048309&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/5987520779760048309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/5987520779760048309'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2009/10/how-configure-rss-feed-splist.html' title='How to programmatically configure RSS feed for a list in SharePoint'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_embTfvHYYPE/St1Cdpr7G2I/AAAAAAAADkY/z6Im1Gsmgq8/s72-c/1_thumb%5B4%5D.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-3609624834949116840</id><published>2009-08-27T18:33:00.001+10:00</published><updated>2010-05-19T16:57:04.422+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>Versioning Settings and Picture Libraries Issues</title><content type='html'>&lt;p align="justify"&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Can you imagine a news website without any sort of control for the pictures being uploaded to the front page? &lt;/p&gt;  &lt;p align="justify"&gt;Content types (CT) are a big part of any well-planned content management system. In our enterprise we have a dedicated content team who is in control of the CTs for the CMS. They are extremely good at what they do and they really have a good grasp about the business, its processes, documents and metadata. Unfortunately, to deal with legacy systems is the issue and our legacy issue is to unify all the websites and its lists with its correct content types.&lt;/p&gt;  &lt;p align="justify"&gt;Early this week I had to find a way to setup and modify the versioning settings for the lists of our sites. As we can see, this can easily be done via Site Settings option. The issue here is that we have hundreds of sites, not to mention all the Team Sites, across all the enterprise. And possibly thousands of libraries. Meaning: It is impracticable to do this via UI. So, programmatically was the choice.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/SpZDs1HN8xI/AAAAAAAADf8/G8q1_9ezaf0/s1600-h/splist-versioning-control%5B5%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="splist-versioning-control" border="0" alt="splist-versioning-control" src="http://lh3.ggpht.com/_embTfvHYYPE/SpZDuIp8fpI/AAAAAAAADgA/xHFvF55ajsk/splist-versioning-control_thumb%5B3%5D.png?imgmax=800" width="600" height="358" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;And honestly, this choice did not look so hard… at first at least. &lt;/p&gt;  &lt;p align="justify"&gt;The &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splist.aspx"&gt;SPList&lt;/a&gt; object model exposes to us all the properties necessary do control these options enumerated in the page &lt;em&gt;(as we will see in our code later)&lt;/em&gt; but make no mistake, the solution is not as trivial as one might think. The biggest problem is here: &lt;strong&gt;Enable Content approval&lt;/strong&gt;. &lt;/p&gt;  &lt;p align="justify"&gt;Let’s do a short parenthesis here and reflect about this matter, from the business point of view.&lt;/p&gt;  &lt;p align="justify"&gt;And that’s a vital piece of functionality. Imagine a news website, like &lt;a href="http://www.CNN.com"&gt;www.CNN.com&lt;/a&gt; or &lt;a href="http://www.BBC.co.uk"&gt;www.BBC.co.uk&lt;/a&gt;, possibly with hundreds of employees/contractors&amp;#160; working on the website content. They write news stories, upload pictures etc. As an editor, would you give them any level of access they want?&amp;#160; Of course not. In the ideal model, we must have a group of people responsible to approve the content being displayed to the public &lt;em&gt;(i.e. using the Content Approver role)&lt;/em&gt;. The last thing an editor wants to see is some crazy text flaming around everyone and displaying unacceptable behaviour &lt;em&gt;(i.e. a text with racist remarks)&lt;/em&gt;, or a picture that does not reflect the news report, or even worse, a picture that can potentially harm the viewers for being shown in the public.&lt;/p&gt;  &lt;p align="justify"&gt;To make short a long story: A content-based enterprise needs someone to be responsible for content approval.&lt;/p&gt;  &lt;p align="justify"&gt;Now, coming back to our technical venue.&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/SpZDvCpgQkI/AAAAAAAADgE/cZmIbp2uu-8/s1600-h/splist-versioning-control-2%5B3%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="splist-versioning-control-2" border="0" alt="splist-versioning-control-2" src="http://lh3.ggpht.com/_embTfvHYYPE/SpZDwBmoq1I/AAAAAAAADgI/vP9xkYuj3Ro/splist-versioning-control-2_thumb%5B1%5D.png?imgmax=800" width="600" height="44" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;Of course we want to enable content approval. So we go ahead and call:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;SPList.EnableModeration = true&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;And out of the blue during some point of the execution an exception is thrown every time this line is called. That was a surprise for me. &lt;/p&gt;  &lt;p align="justify"&gt;So I went on to &lt;a href="http://msdn.microsoft.com"&gt;MSDN&lt;/a&gt; to read about the property and the object and…no clues or answer to be found. I went to see what happened with the other libraries using the same code. In the vast majority of the libraries where I ran that code, they let me update this property, but a few did not. so, what went wrong?&lt;/p&gt;  &lt;p align="justify"&gt;Then after some research and no clear answer, I decided to debug the SharePoint DLL via code reflection. I went to see on MSDN which of the SharePoint DLLs contains the SPList object and as indicated it is the Microsoft.SharePoint.DLL.&lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/SpZDw_WhGmI/AAAAAAAADgM/7_2KdKx_hXI/s1600-h/microsoft-sharepoint-assembly%5B3%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="microsoft-sharepoint-assembly" border="0" alt="microsoft-sharepoint-assembly" src="http://lh6.ggpht.com/_embTfvHYYPE/SpZDyJ6fCJI/AAAAAAAADgQ/vASAe8noVxo/microsoft-sharepoint-assembly_thumb%5B1%5D.png?imgmax=800" width="600" height="260" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;I’ve got the DLL and then compared the signature of my reflected copy against the copy installed in the GAC. Just to make sure we all were talking about the same “story”.&lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/SpZDywKDPsI/AAAAAAAADgU/AUpM2uOTAlM/s1600-h/splist-enable-moderation-2%5B8%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="splist-enable-moderation-2" border="0" alt="splist-enable-moderation-2" src="http://lh4.ggpht.com/_embTfvHYYPE/SpZETIfxMqI/AAAAAAAADgY/5pH0VxF5nqk/splist-enable-moderation-2_thumb%5B2%5D.png?imgmax=800" width="312" height="69" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Note the member signature. There is nothing unusual here. It is a get / set, but let’s take a closed look at the SET method:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/SpZETxYv7tI/AAAAAAAADgc/FDV40_jH63c/s1600-h/splist-enable-moderation-1%5B6%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="splist-enable-moderation-1" border="0" alt="splist-enable-moderation-1" src="http://lh3.ggpht.com/_embTfvHYYPE/SpZE0vyaJJI/AAAAAAAADgg/d7TUudwd8hQ/splist-enable-moderation-1_thumb%5B4%5D.png?imgmax=800" width="509" height="397" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Interesting. &lt;em&gt;“if the base template is a picture library then ERROR”&lt;/em&gt;. &lt;/p&gt;  &lt;p align="justify"&gt;Regardless of any test or comment.&lt;strong&gt; If we are dealing with a picture library, it seems to me that you can not enable content approval for it in SharePoint and immediately an exception is thrown&lt;/strong&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;IMO, I find this quite odd because in other instances, similar to this case, it is common place to expose another member to validate this test. For example, I would look for something like along the lines &lt;em&gt;SPList.CanEnableContentApproval. &lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Anyway, moving on, problem found. I am not sure why content approval is not available for picture libraries. Indeed, if you go to the versioning settings for a picture library you won’t even see these options listed.&lt;/p&gt;  &lt;p align="justify"&gt;The solution : As of today, for me the way out of this is to use document libraries to handle the approval process for images. &lt;em&gt;(if you have any other strategies for this matter, please let me know)&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Now let’s take a look at the code to handle the full versioning control. Enjoy.&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 10pt" align="justify"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 1&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 10pt" align="justify"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 2&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; Applies the versioning settings to the list.&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 10pt" align="justify"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 3&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 10pt" align="justify"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 4&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;param name=&amp;quot;selectedList&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;The selected list.&lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 10pt" align="justify"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 5&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; ApplyVersioningSettings(Microsoft.SharePoint.&lt;span style="color: teal"&gt;SPList&lt;/span&gt; selectedList)&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 10pt" align="justify"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 6&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 10pt" align="justify"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 7&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// enable content approval for this list&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 10pt" align="justify"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 8&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// moderation is not supported for picture library types&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 10pt" align="justify"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 9&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (selectedList.BaseTemplate != &lt;span style="color: teal"&gt;SPListTemplateType&lt;/span&gt;.PictureLibrary)&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 10pt" align="justify"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 10&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; selectedList.EnableModeration = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 10pt" align="justify"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 11&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 10pt" align="justify"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 12&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// enable versioning for this list&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 10pt" align="justify"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 13&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; selectedList.EnableVersioning = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 10pt" align="justify"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 14&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 10pt" align="justify"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 15&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// set security to only users who can approve and the actual content author&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 10pt" align="justify"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 16&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; selectedList.DraftVersionVisibility = &lt;span style="color: teal"&gt;DraftVisibilityType&lt;/span&gt;.Approver;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 10pt" align="justify"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 17&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 10pt" align="justify"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 18&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//enable minor versions for this list&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 10pt" align="justify"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 19&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; selectedList.EnableMinorVersions = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 10pt" align="justify"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 20&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 10pt" align="justify"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 21&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//set YES to forced checkin/checkout required&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 10pt" align="justify"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 22&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; selectedList.ForceCheckout = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: consolas; background: white; color: black; font-size: 10pt" align="justify"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 23&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;See you later&lt;/p&gt;  &lt;p align="justify"&gt;-Edge&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-3609624834949116840?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/3609624834949116840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=3609624834949116840&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/3609624834949116840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/3609624834949116840'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2009/08/how-to-versioning-settings-splist.html' title='Versioning Settings and Picture Libraries Issues'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_embTfvHYYPE/SpZDuIp8fpI/AAAAAAAADgA/xHFvF55ajsk/s72-c/splist-versioning-control_thumb%5B3%5D.png?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-1298662920017163185</id><published>2009-08-09T00:48:00.001+10:00</published><updated>2010-05-19T16:57:04.422+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>How to Modify SharePoint List RSS Settings Programmatically</title><content type='html'>&lt;p align="justify"&gt;RSS is a great thing. It streamlines easily the communication between a content provider and its readers. RSS nowadays are everywhere. News sites, blogs, content driven sites. By subscribing to a RSS feed you can reach a broader audience by eliminating the need of a computer, just have a mobile with RSS reader capabilities and you are good to go. As a powerful content management tool, of course SharePoint enables RSS syndication for its contents. &lt;/p&gt;  &lt;p&gt;Let’s take a look at the UI page where we can configure the RSS feed of a document library:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/Sn2QGWX4QVI/AAAAAAAADMo/TtjFSQluxOk/s1600-h/sharepoint-configure-rss-setting%5B5%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sharepoint-configure-rss-setting" border="0" alt="sharepoint-configure-rss-setting" src="http://lh6.ggpht.com/_embTfvHYYPE/Sn2QH2YV0GI/AAAAAAAADMs/cc2KAJP1VnQ/sharepoint-configure-rss-setting_thumb%5B3%5D.png?imgmax=800" width="600" height="629" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;So, can we customize the RSS features exposed by a SharePoint library programmatically ? The answer is yes, but unfortunately this task is not as straight forward as one might think. &lt;/p&gt;  &lt;p align="justify"&gt;If you look the SPList properties, you will not find anything related to them. If you look at the SPListItems, you will not find anything related to them. &lt;/p&gt;  &lt;p align="justify"&gt;So where are these properties? They are in fact in the RootFolder property of the list. The RootFolder is an object of type SPFolder and sets various properties for the files and contents associated with the list as a collection of items. &lt;/p&gt;  &lt;p align="justify"&gt;And guess where these RSS feeds settings are specified? Yes, in that same collection, exposed as a key-value pair. But even if you try to inspect that with your preferred tool, you won't be able to see it clearly. Not even with SharePoint Manager sometimes. For example, take a look at these 2 RootFolders properties, from 2 different SPLists, being visualized with SharePoint Manager.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/Sn2QJf_6icI/AAAAAAAADMw/7XOMukvwcpg/s1600-h/spm-sharepoint-manager-splist-rss-2%5B5%5D.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="spm-sharepoint-manager-splist-rss-2" border="0" alt="spm-sharepoint-manager-splist-rss-2" src="http://lh3.ggpht.com/_embTfvHYYPE/Sn2QLE9p16I/AAAAAAAADM0/UOVygrJdpYc/spm-sharepoint-manager-splist-rss-2_thumb%5B3%5D.png?imgmax=800" width="600" height="423" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/Sn2QMohQ6bI/AAAAAAAADM4/0pP9GI6v3bI/s1600-h/spm-sharepoint-manager-splist-rss-1%5B8%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="spm-sharepoint-manager-splist-rss-1" border="0" alt="spm-sharepoint-manager-splist-rss-1" src="http://lh6.ggpht.com/_embTfvHYYPE/Sn2QOYOvRfI/AAAAAAAADM8/_W8TYtFYJxI/spm-sharepoint-manager-splist-rss-1_thumb%5B6%5D.png?imgmax=800" width="600" height="559" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So…You see, the first one does not expose any RSS related property values, but the other one does. That's because the later has&amp;#160; SPListTemplateType.DocumentLibrary as its base type. &lt;/p&gt;  &lt;p&gt;Since the SharePoint operations and behaviours rely extremely on the exposed APIs, we would assume these are the kind of stuff you would have access via an API call. I for one was not expecting to modify straight into the property values of a key-value par exposed by a SharePoint collection itself. Yeah, pretty tricky. SharePoint does its own things by its own ways.&amp;#160; &lt;br /&gt;Anyway, these are the things you can modify from our RSS settings screen: &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/Sn2QPtYiS9I/AAAAAAAADNA/ZhKrbiJQUpM/s1600-h/sharepoint-configure-rss-setting2%5B5%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="sharepoint-configure-rss-setting2" border="0" alt="sharepoint-configure-rss-setting2" align="left" src="http://lh5.ggpht.com/_embTfvHYYPE/Sn2QQ3TkfgI/AAAAAAAADNE/yLY1e8UfNf4/sharepoint-configure-rss-setting2_thumb%5B3%5D.png?imgmax=800" width="459" height="480" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1)&lt;/strong&gt; &lt;strong&gt;EnableSyndication :&lt;/strong&gt; internal property, refer to the code below&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;2) vti_rss_LimitDescriptionLength :&lt;/strong&gt; Controls if the item content will be exposed complete in the feed of just the first 256 characters.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;3) vti_rss_ChannelTitle :&lt;/strong&gt; name the RSS feed&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;4) vti_rss_ChannelDescription :&lt;/strong&gt; Short text to describe the feed&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;5) vti_rss_ChannelImageUrl :&lt;/strong&gt; Specifies which image will be displayed when a RSS reader consumes the feed&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;6) vti_rss_DocumentAsEnclosure :&lt;/strong&gt; Indicates if will any documents associated with the feed are included as enclosure. &lt;em&gt;( I assume, becaue I have not tested that to explain better )&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;7) vti_rss_DocumentAsLink :&lt;/strong&gt; Indicates if you can expose the documents included in the feed as link direct to the file. Very common for podcast RSS feeds, for example.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;8) vti_rss_ItemLimit : &lt;/strong&gt;Limits how many items are going to be exposed in the feed&lt;/p&gt;  &lt;p align="left"&gt;&lt;strong&gt;9) vti_rss_DayLimit :&lt;/strong&gt; Limits how many days will the feed content display. This will work combined with the vti_rss_DayLimit; the most restrictive one, wins.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;Also there are some more fields that are not exposed by the UI, but still exists in property collection: &lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;vti_rss_DisplayRssIcon :&lt;/strong&gt; Indicates if the image in the vti_rss_ChannelImageUrl is an icon file. It will be displayed in the navigation bar of web browsers, for example.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;vti_rss_DisplayOnQuickLaunch :&lt;/strong&gt; I did not test that, but I imagine it will add the feed to the quick launch links in the homepage.&lt;/p&gt;  &lt;p align="justify"&gt;After all the settings were done, there is one more catch: Call the Update() method not from the list, but from the RootFolder object.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now, the code to set them:&lt;/p&gt; &lt;!--&lt;br /&gt;{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20         \cf2 public\cf0  \cf2 void\cf0  ApplyRSSSettings(Microsoft.SharePoint.\cf10 SPList\cf0  selectedList)\par ??        \{\par ??            \cf11 // display RSS for this list\par ??\cf0             selectedList.EnableSyndication = \cf2 true\cf0 ;\par ??\par ??            \cf11 // set NO to truncate RSS multiline text to 256 chars\par ??\cf0             selectedList.RootFolder.Properties[\cf13 "vti_rss_LimitDescriptionLength"\cf0 ] = 0;\par ??\par ??            \cf11 // set NO to include file enclosures\par ??\cf0             selectedList.RootFolder.Properties[\cf13 "vti_rss_DocumentAsEnclosure"\cf0 ] = 0;\par ??\par ??            \cf11 // set YES to link rss to files\par ??\cf0             selectedList.RootFolder.Properties[\cf13 "vti_rss_DocumentAsLink"\cf0 ] = 1;\par ??\par ??                         \cf11 // set RSS maximum items to 25\par ??\cf0             selectedList.RootFolder.Properties[\cf13 "vti_rss_ItemLimit "\cf0 ] = 25;\par ??\par ??            \cf11 // set RSS maximum days to 7\par ??\cf0             selectedList.RootFolder.Properties[\cf13 "vti_rss_DayLimit"\cf0 ] = 7;\par ??\par ??            \cf11 // commit the changes to the list\par ??\cf0             selectedList.RootFolder.Update();\par ??        \}\par ??}&lt;br /&gt;--&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 1&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; ApplyRSSSettings(Microsoft.SharePoint.&lt;span style="color: teal"&gt;SPList&lt;/span&gt; selectedList)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 2&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 3&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// display RSS for this list&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 4&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; selectedList.EnableSyndication = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 5&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 6&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// set NO to truncate RSS multiline text to 256 chars&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 7&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; selectedList.RootFolder.Properties[&lt;span style="color: maroon"&gt;&amp;quot;vti_rss_LimitDescriptionLength&amp;quot;&lt;/span&gt;] = 0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 8&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 9&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// set NO to include file enclosures&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 10&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; selectedList.RootFolder.Properties[&lt;span style="color: maroon"&gt;&amp;quot;vti_rss_DocumentAsEnclosure&amp;quot;&lt;/span&gt;] = 0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 11&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 12&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// set YES to link rss to files&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 13&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; selectedList.RootFolder.Properties[&lt;span style="color: maroon"&gt;&amp;quot;vti_rss_DocumentAsLink&amp;quot;&lt;/span&gt;] = 1;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 14&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 15&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 16&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 17&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// set RSS maximum items to 25&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 18&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; selectedList.RootFolder.Properties[&lt;span style="color: maroon"&gt;&amp;quot;vti_rss_ItemLimit &amp;quot;&lt;/span&gt;] = 25;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 19&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 20&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// set RSS maximum days to 7&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 21&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; selectedList.RootFolder.Properties[&lt;span style="color: maroon"&gt;&amp;quot;vti_rss_DayLimit&amp;quot;&lt;/span&gt;] = 7;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 22&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 23&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// commit the changes to the list&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 24&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; selectedList.RootFolder.Update();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 25&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;See you later&lt;/p&gt;  &lt;p&gt;-Edge&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-1298662920017163185?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/1298662920017163185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=1298662920017163185&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/1298662920017163185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/1298662920017163185'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2009/08/how-modify-splist-rss-programmatically.html' title='How to Modify SharePoint List RSS Settings Programmatically'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_embTfvHYYPE/Sn2QH2YV0GI/AAAAAAAADMs/cc2KAJP1VnQ/s72-c/sharepoint-configure-rss-setting_thumb%5B3%5D.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-5123853773950180750</id><published>2009-08-07T00:09:00.001+10:00</published><updated>2010-05-19T16:57:04.422+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>How to apply custom permissions to a list in SharePoint</title><content type='html'>&lt;p align="justify"&gt;In Windows SharePoint Services, all the lists are assigned inherited permissions from the container site by default. So how can we programmatically change these permissions to our own? &lt;/p&gt;  &lt;p align="justify"&gt;First we must understand how WSS controls access to its objects. &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/Snrj1BpMAcI/AAAAAAAADKc/mE0C-uTT7UE/s1600-h/sharepoint-splist-Untitled%5B6%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sharepoint-splist-Untitled" border="0" alt="sharepoint-splist-Untitled" src="http://lh4.ggpht.com/_embTfvHYYPE/Snrj2FBJ32I/AAAAAAAADKg/nScr_5D8AzI/sharepoint-splist-Untitled_thumb%5B2%5D.gif?imgmax=800" width="640" height="230" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;The access model for websites, lists, document libraries, picture libraries, task lists, workflows etc follows a role-based membership model. One might even say that's quite expected since WSS extends the capabilities of the ASP.NET as an application itself and .NET has a very flexible role-membership model framework.&amp;#160; &lt;/p&gt;  &lt;p align="justify"&gt;In this role-membership system, SharePoint users are assigned to specific roles, specifying what kind of access he/she will have (full access, read-only, write-access etc). &lt;/p&gt;  &lt;p align="justify"&gt;You can do this just like SQL Server, where groups are created and then users are included in these groups. The next step is to go to the Sharepoint object (a list, for example) and assign permissions to that group; but SharePoint extends this model one step further by creating role assignments. &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/Snrj2zFNx4I/AAAAAAAADKk/jnSMQlvlH5Y/s1600-h/sharepoint-splist-Untitled5%5B4%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sharepoint-splist-Untitled5" border="0" alt="sharepoint-splist-Untitled5" src="http://lh5.ggpht.com/_embTfvHYYPE/Snrj3rBozdI/AAAAAAAADKo/VUMuwXdKJKg/sharepoint-splist-Untitled5_thumb%5B2%5D.gif?imgmax=800" width="300" height="106" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/Snrj4tL4bEI/AAAAAAAADKs/G6grFoxvOSI/s1600-h/sharepoint-splist-Untitled4%5B4%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sharepoint-splist-Untitled4" border="0" alt="sharepoint-splist-Untitled4" src="http://lh3.ggpht.com/_embTfvHYYPE/Snrj5c_Xg0I/AAAAAAAADKw/v0MJGbB1iWQ/sharepoint-splist-Untitled4_thumb%5B2%5D.gif?imgmax=800" width="300" height="86" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;A Role assignment is an object that binds roles and groups/users. This role assignment object can then be grouped in collections and that's where sharepoint do the trick: All the list objects in WSS implement a collection os role assignments which makes this approach the best and most scalable way to set permissions. Such a model can even be extended to apply to specific permissions to specific list items within the list. Even websites implement a collection of role assignments. &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/Snrj6d7yHCI/AAAAAAAADK0/ZzXHRleVhBg/s1600-h/sharepoint-splist-Untitled3%5B8%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sharepoint-splist-Untitled3" border="0" alt="sharepoint-splist-Untitled3" src="http://lh4.ggpht.com/_embTfvHYYPE/Snrj7SGIeKI/AAAAAAAADK4/z7D0X6vscS0/sharepoint-splist-Untitled3_thumb%5B4%5D.gif?imgmax=800" width="640" height="166" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;Can you create a role assignment for a specific user without specifying the role?&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Yes, we can. The user will be listed in the collection for the object but he won't have access to the object. So it's really pointless doing this. &lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;Can we cascade permissions across lists?&lt;/strong&gt;     &lt;br /&gt;Yes, we can. Not only across lists but all the objects. By default SharePoint will let you inherit the object's parent permissions. This behaviour, by the way, can also be modified programmatically as we will see later. &lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;Can we assign specific permissions for just a group of items within a list?&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Yes. And the process is very similar to the one we are going to demonstrate here.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;What is the highest group on a SharePoint site collection? Is there such a super group?&lt;/strong&gt;     &lt;br /&gt;yes, it is called cross-site group. It is an OTB functionality and by default has 3 sub-groups: Owners, members and visitors. Owners are the site administrators, members are the people who can have write-access to the site, visitors are the guests and can only read information. &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/Snrj8nG9G4I/AAAAAAAADK8/Q8cvd2lpwXk/s1600-h/sharepoint-splist-custom-permissions-1%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sharepoint-splist-custom-permissions-1" border="0" alt="sharepoint-splist-custom-permissions-1" src="http://lh5.ggpht.com/_embTfvHYYPE/Snrj9wfnQsI/AAAAAAAADLA/eMdyAINIfj0/sharepoint-splist-custom-permissions-1_thumb%5B1%5D.jpg?imgmax=800" width="644" height="301" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;So, any given user only becomes an effective SharePoint user once it is assigned to a role. You can take a look at the base permissions querying Microsoft.SharePoint.SPBasePermissions. &lt;/p&gt;  &lt;p align="justify"&gt;Now...In our case, we will remove all the predefined permissions for a given task list and set our own permissions. Only the people who are site administrators will have access to it. &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/Snrj-shRnaI/AAAAAAAADLE/C008l257mBc/s1600-h/sharepoint-splist-Untitled2%5B2%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sharepoint-splist-Untitled2" border="0" alt="sharepoint-splist-Untitled2" src="http://lh4.ggpht.com/_embTfvHYYPE/Snrj_hFfLDI/AAAAAAAADLI/AS8O5U5tCkA/sharepoint-splist-Untitled2_thumb.gif?imgmax=800" width="240" height="162" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;First thing is to break the inheritance to the list. That will untie the link between the list and its parent's permissions. The immediate effect you will notice on this command is that the UI will change accordingly. &lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/SnrkAzTT_QI/AAAAAAAADLM/2E-IATbv_SA/s1600-h/sharepoint-splist-custom-permissions-0%5B8%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="sharepoint-splist-custom-permissions-0" border="0" alt="sharepoint-splist-custom-permissions-0" src="http://lh6.ggpht.com/_embTfvHYYPE/SnrkCACTtAI/AAAAAAAADLQ/N96SCmDmhOg/sharepoint-splist-custom-permissions-0_thumb%5B4%5D.jpg?imgmax=800" width="640" height="215" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;NOtice how the menu in the UI get updated. You won’t see the tab refferring to the parent’s permissions anymore, instead you will be presented with an option to edit the permissions by user and a new option to revert the operation, which is to inherit again the permissions of parent.&lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/SnrkCyw9zcI/AAAAAAAADLU/1iFKGuNsm7k/s1600-h/sharepoint-splist-custom-permissions-00.jpg%5B8%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sharepoint-splist-custom-permissions-00.jpg" border="0" alt="sharepoint-splist-custom-permissions-00.jpg" src="http://lh5.ggpht.com/_embTfvHYYPE/SnrkD3JXf2I/AAAAAAAADLY/i10EJnp6VBc/sharepoint-splist-custom-permissions-00.jpg_thumb%5B4%5D.jpg?imgmax=800" width="640" height="216" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Returning to our case. Once we break the relationship to the parent,&amp;#160; we will need remove all the permissions in the list. If we could take a look at the UI during the code execution we would see a list like this.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/SnrkE1pXMsI/AAAAAAAADLc/I-Czw-9ABZQ/s1600-h/sharepoint-splist-custom-permissions-2%5B4%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sharepoint-splist-custom-permissions-2" border="0" alt="sharepoint-splist-custom-permissions-2" src="http://lh5.ggpht.com/_embTfvHYYPE/SnrkFwgr3ZI/AAAAAAAADLg/5UevCXxgpBE/sharepoint-splist-custom-permissions-2_thumb%5B2%5D.jpg?imgmax=800" width="640" height="200" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;with absolutely no users with permission to access the list. Note how dangerous this operation can be. If for some reason we left the code at this stage of execution we would compromise the SharePoint's health status and the implications can be very upsetting specially if the list is touched by many users or displayed in other sites.&lt;/p&gt;  &lt;p align="justify"&gt;So the next step is to setup the user we want to give the permission. In our case we want to give access to this list only to people in the administrators group.&lt;/p&gt;  &lt;p align="justify"&gt;Take a minute to see how we perform this.&lt;/p&gt;  &lt;p align="justify"&gt;Remember when we talked about the Roles and the Groups. Well, these are represented by the classes SPRole and SPGroup. So we will at some point need to have that information at hand. We extract the desired role R out of our website roles collection and our group G out of the website group collection.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/SnrvThjBCJI/AAAAAAAADLw/2SvAmk9UNug/s1600-h/sharepoint-sprole%5B3%5D.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="sharepoint-sprole" border="0" alt="sharepoint-sprole" src="http://lh4.ggpht.com/_embTfvHYYPE/SnrvUpQvhHI/AAAAAAAADL0/c86x94FyF-Q/sharepoint-sprole_thumb%5B1%5D.gif?imgmax=800" width="240" height="157" /&gt;&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/SnrvVoT2cNI/AAAAAAAADL4/4ZEjfr86sgM/s1600-h/sharepoint-spgroup%5B5%5D.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="sharepoint-spgroup" border="0" alt="sharepoint-spgroup" src="http://lh6.ggpht.com/_embTfvHYYPE/SnrvWhktk_I/AAAAAAAADL8/_y1m70b_fq4/sharepoint-spgroup_thumb%5B3%5D.gif?imgmax=800" width="300" height="144" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;There is a special trick here. In order for the group G useful in anyway, we need give a live identity to it. We will use the SPPrincipal object for that. SPPrincipal comes from the SharePoint super-class SPMember and it is the object that represents an user or a group within a website in SharePoint. Any user and any group attached to a site in SharePoint is automatically a SPPrincipal object and he will provide all the role-membership mechanisms for integration with the system.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/SnrvXotETaI/AAAAAAAADMA/kMD1iLN-_SY/s1600-h/sharepoint-Untitled%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="sharepoint-Untitled" border="0" alt="sharepoint-Untitled" src="http://lh4.ggpht.com/_embTfvHYYPE/SnrvY7hu41I/AAAAAAAADME/dTrreWNOOos/sharepoint-Untitled_thumb%5B1%5D.png?imgmax=800" width="240" height="57" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;In older versions of Windows SharePoint Services SPRole and SPGroups were used combined and straight to configure the permissions. These objects are now obsolete for that function and the recommended approach is to instantiate a SPRoleAssignment. The SPRoleAssignment will be produced by associating the selected group plus the principal identity. Once you have your SPRoleAssignment setup based on the group, you then add the SPRole to the exposed collection. &lt;/p&gt;  &lt;p align="justify"&gt;The next steps are very direct. We bind the SPRole to the SPRoleAssignment…&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/SnrvZkYK62I/AAAAAAAADMI/QKzc0uP0V4Y/s1600-h/sharepoint-sproleassignment%5B3%5D.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="sharepoint-sproleassignment" border="0" alt="sharepoint-sproleassignment" src="http://lh6.ggpht.com/_embTfvHYYPE/SnrvagY1NsI/AAAAAAAADMM/4UsFdyxrjOg/sharepoint-sproleassignment_thumb%5B1%5D.gif?imgmax=800" width="240" height="132" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;And we add the SPRoleAssignment to the RoleAssignmentCollection exposed by the SPList.&lt;/p&gt;  &lt;p align="right"&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/Snrvbt7NxJI/AAAAAAAADMQ/2JYj8Pl9GNA/s1600-h/sharepoint-sproleassignment-collection%5B3%5D.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="sharepoint-sproleassignment-collection" border="0" alt="sharepoint-sproleassignment-collection" src="http://lh6.ggpht.com/_embTfvHYYPE/SnrvcS9iaCI/AAAAAAAADMU/v8O7q3RRRrY/sharepoint-sproleassignment-collection_thumb%5B1%5D.gif?imgmax=800" width="240" height="121" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;We create a SPGroup and SPRoleDefinition objects based upon the existing site groups and roles in our site. The reference to the site can be accessed via the SPList object itself. Since we have that information now in our hands, we can then combine them with a SPRoleAssignment object and then add this assignment to the collection of assignments that belongs to the list. Our method is pretty atomic, and at some point a SPList.Update() call must be made in order to persist the changes we’ve done.&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;If everything went according to our plan, we should now see a list like this in our UI:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/SnrkHvsgJ-I/AAAAAAAADLk/9lZAN9fPJ8Q/s1600-h/sharepoint-splist-custom-permissions-3%5B4%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sharepoint-splist-custom-permissions-3" border="0" alt="sharepoint-splist-custom-permissions-3" src="http://lh5.ggpht.com/_embTfvHYYPE/SnrkIkeE6CI/AAAAAAAADLo/DPZMLEBou50/sharepoint-splist-custom-permissions-3_thumb%5B2%5D.jpg?imgmax=800" width="640" height="199" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/SnrvThjBCJI/AAAAAAAADLw/2SvAmk9UNug/s1600-h/sharepoint-sprole%5B3%5D.gif"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;If you want to apply specific permissions to the items of this list, the only additional piece of code you must add is a loop around the SPList items and set the properties in the chosen SPLIstItem object.&lt;/p&gt;  &lt;p align="justify"&gt;Now the code:&lt;/p&gt; &lt;!--&lt;br /&gt;{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;&lt;br /&gt;&lt;br /&gt;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;&lt;br /&gt;&lt;br /&gt;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;&lt;br /&gt;&lt;br /&gt;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??&lt;br /&gt;&lt;br /&gt;\red192\green192\blue192;}??\fs20         \cf2 private\cf0  \cf2 void\cf0  SetPermissionsForTheList(\cf10 SPList\cf0  &lt;br /&gt;&lt;br /&gt;selectedList)\par ??        \{\par ??            \cf11 // breaks the inheritance from the parent\par ??\cf0             &lt;br /&gt;&lt;br /&gt;selectedList.BreakRoleInheritance(\cf2 true\cf0 );\par ??\par ??            \cf11 //removes all the permissions from the list, &lt;br /&gt;&lt;br /&gt;except for 'site - admins'\par ??\cf0             \cf2 while\cf0  (selectedList.RoleAssignments.Count &amp;gt; 0)\par ??            &lt;br /&gt;&lt;br /&gt;    selectedList.RoleAssignments.Remove(0);\par ??\par ??            \cf2 if\cf0  (selectedList.RoleAssignments.Count == 0)\par &lt;br /&gt;&lt;br /&gt;??            \{\par ??                \cf11 // get the defined site admins group\par ??\cf0                 \cf10 &lt;br /&gt;&lt;br /&gt;SPGroupCollection\cf0  groupCollection = selectedList.ParentWeb.SiteGroups;\par ??                \cf10 SPGroup\cf0  group = &lt;br /&gt;&lt;br /&gt;groupCollection[\cf13 "Site - Admins"\cf0 ];\par ??\par ??                \cf11 // get the full access role definition\par ??&lt;br /&gt;&lt;br /&gt;\cf0                 \cf10 SPRoleDefinitionCollection\cf0  roleDefCollection = selectedList.ParentWeb.RoleDefinitions;\par ??   &lt;br /&gt;&lt;br /&gt;             \cf10 SPRoleDefinition\cf0  roleDefinition = roleDefCollection[0];\par ??\par ??                \cf11 // create a &lt;br /&gt;&lt;br /&gt;role assignment based on the site admin group \par ??\cf0                 \cf11 // and bind to the full access role definition&lt;br /&gt;&lt;br /&gt;\par ??\cf0                 \cf10 SPRoleAssignment\cf0  roleAssignment = \cf2 new\cf0  \cf10 SPRoleAssignment\cf0 ((\cf10 &lt;br /&gt;&lt;br /&gt;SPPrincipal\cf0 )group);\par ??\par ??                roleAssignment.RoleDefinitionBindings.Add(roleDefinition);\par ??\par ??  &lt;br /&gt;&lt;br /&gt;              selectedList.RoleAssignments.Add(roleAssignment);\par ??            \}\par ??}&lt;br /&gt;--&gt;  &lt;div style="font-family: consolas; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 11&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; SetPermissionsForTheList(&lt;span style="color: teal"&gt;SPList&lt;/span&gt; selectedList)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 12&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 13&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// breaks the inheritance from the parent&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 14&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; selectedList.BreakRoleInheritance(&lt;span style="color: blue"&gt;true&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 15&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 16&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//removes all the permissions from the list, except for 'site - admins'&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 17&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;while&lt;/span&gt; (selectedList.RoleAssignments.Count &amp;gt; 0)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 18&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; selectedList.RoleAssignments.Remove(0);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 19&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 20&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (selectedList.RoleAssignments.Count == 0)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 21&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 22&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// get the defined site admins group&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 23&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: teal"&gt;SPGroupCollection&lt;/span&gt; groupCollection = selectedList.ParentWeb.SiteGroups;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 24&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: teal"&gt;SPGroup&lt;/span&gt; group = groupCollection[&lt;span style="color: maroon"&gt;&amp;quot;Site - Admins&amp;quot;&lt;/span&gt;];&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 25&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 26&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// get the full access role definition&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 27&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: teal"&gt;SPRoleDefinitionCollection&lt;/span&gt; roleDefCollection = selectedList.ParentWeb.RoleDefinitions;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 28&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: teal"&gt;SPRoleDefinition&lt;/span&gt; roleDefinition = roleDefCollection [0];&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 29&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 30&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// create a role assignment based on the site admin group &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 31&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// and bind to the full access role definition&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 32&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: teal"&gt;SPRoleAssignment&lt;/span&gt; roleAssignment = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: teal"&gt;SPRoleAssignment&lt;/span&gt;((&lt;span style="color: teal"&gt;SPPrincipal&lt;/span&gt;)group);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 33&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 34&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; roleAssignment.RoleDefinitionBindings.Add(roleDefinition);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 35&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 36&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; selectedList.RoleAssignments.Add(roleAssignment);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 37&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;As a final note, remember that all this can be accomplished via the interface and by doing this SharePoint will verify and test if any rule isn't being broken during the process. By doing this programmatically you are easily introducing a new level of complexity in the SharePoint ecosystem. Via code, you can set any kind of permissions you want to any given user. PLAN AHEAD. Make sure you are not overwriting permissions that can be conflicting with other areas in the site collection.&lt;/p&gt;  &lt;p align="justify"&gt;See you later.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-5123853773950180750?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/5123853773950180750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=5123853773950180750&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/5123853773950180750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/5123853773950180750'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2009/08/how-to-custom-splist-permission.html' title='How to apply custom permissions to a list in SharePoint'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_embTfvHYYPE/Snrj2FBJ32I/AAAAAAAADKg/nScr_5D8AzI/s72-c/sharepoint-splist-Untitled_thumb%5B2%5D.gif?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-5160562568913213950</id><published>2009-05-17T03:03:00.001+10:00</published><updated>2010-05-19T16:57:04.423+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>Funny Error Messages in SharePoint Designer</title><content type='html'>&lt;p align="justify"&gt;That’s a very curious one. I have setup a custom authentication provider for my project. I replaced the Windows Authentication and used my own which is based on the .NET custom membership provider. So I tried to open the site using SharePoint Designer and do a little master page update.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/Sg7xsMJl_YI/AAAAAAAADJI/Rid_u6kEA4g/s1600-h/ScreenShot001%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ScreenShot001" border="0" alt="ScreenShot001" src="http://lh4.ggpht.com/_embTfvHYYPE/Sg7xtQlA2dI/AAAAAAAADJQ/xEeCnSm3hvk/ScreenShot001_thumb%5B1%5D.png?imgmax=800" width="596" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;When I’ve received this “neat” error message which, by the way, does not help in anything:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/Sg7xudbqu4I/AAAAAAAADJU/y-okV_P2zP8/s1600-h/ScreenShot002%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ScreenShot002" border="0" alt="ScreenShot002" src="http://lh6.ggpht.com/_embTfvHYYPE/Sg7xvr3d5DI/AAAAAAAADJY/mJneWtqjCOk/ScreenShot002_thumb%5B1%5D.png?imgmax=800" width="598" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;That sounds pretty much like one of those debug messages used during COBOL times, when a programmer had to write something on the screen in order to verify if some criteria in the application logic was met.&lt;/p&gt;  &lt;p align="justify"&gt;Anyway…I just clicked the OK and then another error:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/Sg7xw_SakaI/AAAAAAAADJc/tndIcVr76cc/s1600-h/ScreenShot004%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ScreenShot004" border="0" alt="ScreenShot004" src="http://lh3.ggpht.com/_embTfvHYYPE/Sg7xyBYUhEI/AAAAAAAADJg/ApjBjdopSRI/ScreenShot004_thumb%5B1%5D.png?imgmax=800" width="587" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Surely that’s a more “understandable” error message. Or at least it sounds like a decent error message. Then I said myself: “ok, now maybe the next one can explain all this mess”&lt;/p&gt;  &lt;p align="justify"&gt;So I clicked ok and I’ve got this amazing one&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/Sg7xzQlfqXI/AAAAAAAADJk/KQ9fWBoU0O8/s1600-h/ScreenShot003%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ScreenShot003" border="0" alt="ScreenShot003" src="http://lh3.ggpht.com/_embTfvHYYPE/Sg7x0r4iY5I/AAAAAAAADJo/cBX5v1nErTg/ScreenShot003_thumb%5B1%5D.png?imgmax=800" width="587" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;“Found. Object moved. Object moved on here.” That’s awesome. By then my colleagues were all having a laugh at it. That’s almost like an urban legend coming to life. The case of the programmer who left debugging error messages in the application, forgot to remove the code and the application went to market with these messages.&lt;/p&gt;  &lt;p align="justify"&gt;Yeah, it smells like one of those programmer messages left in the application during test that ended up in production. Hopefully Microsoft will revamp the SharePoint Designer so we can have a decent environment up to the level required by WSS.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-5160562568913213950?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/5160562568913213950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=5160562568913213950&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/5160562568913213950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/5160562568913213950'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2009/05/funny-error-messages-in-sharepoint.html' title='Funny Error Messages in SharePoint Designer'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_embTfvHYYPE/Sg7xtQlA2dI/AAAAAAAADJQ/xEeCnSm3hvk/s72-c/ScreenShot001_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-2243162794984190822</id><published>2009-04-11T22:03:00.001+10:00</published><updated>2010-05-19T16:57:04.423+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>How To Recycle IIS Application Pool Manually via DOS Command ?</title><content type='html'>&lt;p align="justify"&gt;As a .NET programmer and an avid user of the Global Assembly Cache when dealing with SharePoint one of the things that I have to use most to test my solutions is to recycle the application pool, so that I can put my newly created DLLs and test them.&lt;/p&gt;  &lt;p align="justify"&gt;I use a lot WSPBuilder for this task, but I always wondered : &lt;strong&gt;How can I recycle the application pool via command prompt ?&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;In case you ever wonder the same and still don’t know how to do it, here’s how:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/SeCG9sxklAI/AAAAAAAADIA/hABFPkazvfw/s1600-h/restart-application-pool-script-2%5B10%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="restart-application-pool-script-2" border="0" alt="restart-application-pool-script-2" src="http://lh6.ggpht.com/_embTfvHYYPE/SeCG-IwN_pI/AAAAAAAADIE/Vn1lJPw4Yzw/restart-application-pool-script-2_thumb%5B8%5D.png?imgmax=800" width="504" height="60" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;the &lt;a href="http://msdn.microsoft.com/en-us/library/xazzc41b(VS.85).aspx"&gt;cscript command&lt;/a&gt; is pretty neat. And mostly the Microsoft Platform applications have a .vbs file assigned to them, so give it a try and try some other cool stuff in other apps. &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/SeCG-3O9YmI/AAAAAAAADII/nZ_nBoUhuzI/s1600-h/restart-application-pool-script-1%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="restart-application-pool-script-1" border="0" alt="restart-application-pool-script-1" src="http://lh6.ggpht.com/_embTfvHYYPE/SeCG_ybatVI/AAAAAAAADIM/kXWCEBffLMA/restart-application-pool-script-1_thumb%5B1%5D.png?imgmax=800" width="504" height="204" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;See you later,&lt;/p&gt;  &lt;p align="justify"&gt;-Edge&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-2243162794984190822?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/2243162794984190822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=2243162794984190822&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/2243162794984190822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/2243162794984190822'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2009/04/how-to-recycle-iis-application-pool.html' title='How To Recycle IIS Application Pool Manually via DOS Command ?'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_embTfvHYYPE/SeCG-IwN_pI/AAAAAAAADIE/Vn1lJPw4Yzw/s72-c/restart-application-pool-script-2_thumb%5B8%5D.png?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-802923591909248723</id><published>2009-04-10T22:50:00.002+10:00</published><updated>2010-05-19T16:57:04.424+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>Sharepoint Tips and How Tos</title><content type='html'>&lt;ul&gt;   &lt;li&gt;&lt;a href="http://novatecno.blogspot.com/2009/03/how-to-display-aspnet-error-messages.html"&gt;How to Display Friendly SharePoint error messages ?&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://novatecno.blogspot.com/2009/04/how-to-perform-sharepoint-deployment-by.html"&gt;How to Perform SharePoint Deployment by Features?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://novatecno.blogspot.com/2009/04/how-to-recycle-iis-application-pool.html"&gt;How to Recycle IIS Application Pools manually vis DOS Command?&lt;/a&gt;&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-802923591909248723?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/802923591909248723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=802923591909248723&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/802923591909248723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/802923591909248723'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2009/04/sharepoint-how-to-do-moss-things.html' title='Sharepoint Tips and How Tos'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-276146505430272452</id><published>2009-04-10T22:38:00.001+10:00</published><updated>2010-05-19T16:57:04.424+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>How to do Site Branding in SharePoint?</title><content type='html'>&lt;p align="justify"&gt;One of the main selling points for implementing SharePoint are its content management capabilities. &lt;/p&gt;  &lt;p align="justify"&gt;This week I went to a client demonstration of our new site and I noticed that a MOSS enabled website is really appealing to them (end users) but not so much because the underline features or that cool RSS integration you demonstrated but mainly because the ability to manage and roll out content on the web itself.&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/Sd89mwj2j-I/AAAAAAAADHo/rqknrKZZE1Q/s1600-h/sharepoint-sections%5B5%5D.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="sharepoint-sections" border="0" alt="sharepoint-sections" src="http://lh6.ggpht.com/_embTfvHYYPE/Sd89nmt81pI/AAAAAAAADHs/N90W6neTsAE/sharepoint-sections_thumb%5B3%5D.gif?imgmax=800" width="554" height="192" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;As a topic of later discussion amongst us something was obvious:&lt;strong&gt; people do not really understand what’s the concept of Site Branding&lt;/strong&gt;, and for that I believe it is paramount for us consultants to deliver this message for them very clear so they can have a better grasp of their brand new SharePoint site they will be maintaining themselves when we finish the project.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/Sd89oak-YrI/AAAAAAAADHw/TKwMqPrrL24/s1600-h/sharepoint-webpart%5B4%5D.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="sharepoint-webpart" border="0" alt="sharepoint-webpart" src="http://lh5.ggpht.com/_embTfvHYYPE/Sd89piKzj4I/AAAAAAAADH0/f2Yv1B8oGjY/sharepoint-webpart_thumb%5B2%5D.gif?imgmax=800" width="404" height="515" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;So what is site branding from SharePoint's point of view?&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;It is called &lt;strong&gt;Web Content Management,&lt;/strong&gt; WCM, and it’s function is to make a clear cut between what’s site branding and site content.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;Site Branding&lt;/strong&gt; is created by a marketing team, normally a group of designers and sometimes for developers. It responds to questions such as site navigation, look and feel, style etc. In other words, it is about HTML, CSS classes, icons, master pages, page layouts etc.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;Site Content&lt;/strong&gt; is created by site managers, contributors, editors etc. They have the task to choose the layout, choose the icons and images to be displayed in the site sections, they add videos to the pages, they populate the text with links to other relevant sites and contents etc.&lt;/p&gt;  &lt;p align="justify"&gt;So, now that we have this picture well defined we can infer that developing a SharePoint website is also to determine the underline appearance of the site itself.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/Sd89qWNVe_I/AAAAAAAADH4/xMLgykALWOk/s1600-h/sharepoint-master-page%5B3%5D.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="sharepoint-master-page" border="0" alt="sharepoint-master-page" src="http://lh5.ggpht.com/_embTfvHYYPE/Sd89rc6Yj1I/AAAAAAAADH8/W9jlEm5bHuM/sharepoint-master-page_thumb%5B1%5D.gif?imgmax=800" width="554" height="180" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Normally the task to develop the branding is handled over to a 3rd party company. Someone specialised in websites, and better matching colours and with experience to create a visual identity. As a matter of fact, Microsoft has made available to the general public all the CSS classes used by a typical &lt;strong&gt;Windows SharePoint Services application&lt;/strong&gt; (WSS), &lt;a href="http://msdn.microsoft.com/en-us/library/ms438349.aspx"&gt;they can be seen here&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Honestly that’s a concept one has to capture and, like most things in life, it takes practice.&lt;/p&gt;  &lt;p align="justify"&gt;If you are a power user, a site editor, a tester, business analyst, project manager or any other role involved in a SharePoint site that doesn’t need to know how the things works under the hood (workflows, code, architectural designs, service contracts etc) and you are interested in learn more about site customization using SharePoint I suggest to read this 3 part series from MSDN, specifically targeting the Web Content Management features of SharePoint.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa830818.aspx"&gt;Part 1: Understanding Web Content Management and Features&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa830815.aspx"&gt;Part 2: Extending WCM&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa830817.aspx"&gt;Part 3: Creating and Configuring WCM-Enabled Sites&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;You see, handling the client’s expectations with the project its not only meeting the deadlines and delivering the project but also empowering them on the tools they can within SharePoint itself so next time they come talk to you asking for a new variation they will be more aware of the things he can or can’t do.&lt;/p&gt;  &lt;p align="justify"&gt;If you need any more information about how to do branding in SharePoint feel free to email of leave a comment.&lt;/p&gt;  &lt;p align="justify"&gt;See you later&lt;/p&gt;  &lt;p align="justify"&gt;-Edge&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-276146505430272452?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/276146505430272452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=276146505430272452&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/276146505430272452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/276146505430272452'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2009/04/how-to-do-site-branding-in-sharepoint.html' title='How to do Site Branding in SharePoint?'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_embTfvHYYPE/Sd89nmt81pI/AAAAAAAADHs/N90W6neTsAE/s72-c/sharepoint-sections_thumb%5B3%5D.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-642472904075632461</id><published>2009-04-05T00:09:00.001+10:00</published><updated>2010-05-19T16:57:04.424+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>How to Design a SharePoint Application to the Cloud</title><content type='html'>&lt;p align="justify"&gt;There is a very common misconception about the uses for SharePoint and I would like to talk about one of them: Using SharePoint as a file repository. Of course SharePoint has great features to enable file sharing and versioning control across the enterprise, but is it so much more than this. So I decided to elaborate a challenge: &lt;strong&gt;How would you go about to setup a SharePoint/MOSS solution as an application architecture?&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;And let’s make the challenge a bit more interesting, shall we. WPF Composite Application Guidance (PRISM), Windows Azure, Sculpture, MVC, ASP.NET. What all these new technologies have in common? They all have deployment options for the Cloud.&amp;#160; So, our challenge will be not only design an application using SharePoint but also &lt;strong&gt;design a SharePoint application using the Cloud as subsystem&lt;/strong&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;How can we design an application for the Cloud?&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;There are many approaches, but I would say the most likely models are: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Line of Business running as services&amp;#160; that can keep their data in the Cloud and have web pages as UI.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Web applications hosted entirely in the Cloud.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Various systems designed as message-based applications using the Cloud as media and components like HTTP, REST and SOAP as protocols.&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;One of my passions is photography so let’s design an application where people can contribute with pictures to the cloud via SharePoint. In our case study, we have to consider the following scenario:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;many pictures can be uploaded by a single user.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;many users can submit their pictures at the same time from several locations across the world.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Every picture will have a little story about it. Whoever upload the picture must tell the story associated with it.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;the pictures and the stories can have multiple formats&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;many devices can be used to upload the pictures (desktop, notebook, mobiles)&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;In the other side, we will have customers (agencies) consuming these contents via exposed services:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;one agency can query as many times they want for shared and approved content.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;many agencies can submit their queries at the same time&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;many devices can be used to query the results (desktop, notebook, mobiles)&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;So let’s take a look at our suggested model:&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/SddqJArfahI/AAAAAAAADHY/pwilF9cqkBA/s1600-h/sharepoint-cloud%5B8%5D.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="sharepoint-cloud" border="0" alt="sharepoint-cloud" src="http://lh3.ggpht.com/_embTfvHYYPE/SddqKs8JcxI/AAAAAAAADHc/RmjaqeVDy7s/sharepoint-cloud_thumb%5B6%5D.gif?imgmax=800" width="550" height="362" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Our main enterprise application will be hosted in a SharePoint/MOSS application where the business owners can control it from there, use the BI tolls and apply KPI tools if they wish to. Also via developed custom web parts hosted in our SharePoint site they will have access and create reports targeting our File System impersonated by Windows Azure in the Cloud.&lt;/p&gt;  &lt;p align="justify"&gt;Web services will be developed and exposed using our own APIs to allow communication with our file system in the Cloud. At this point, we want to be agnostic and pragmatic. Just because we are using SharePoint and Microsoft Cloud, it does not mean we have to be attached to Microsoft tools. Since Web services and the Cloud itself work under well-known protocols any client can then interact with them. We can have desktops running Macs searching for pictures and text, we can have mobiles using embedded Java to upload pictures to our application and we can have other agencies using our own exposed API and integrating our system into theirs and querying the results via SQL Reporting Services via XML.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;What should be our focus when designing such application ?&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;It does not matter the chosen technology provider. IMHO, the most important factors to cover here are: Scalability and Application Services&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;Why Scalability?&lt;/strong&gt;    &lt;br /&gt;Let’s take a step back and think about how is this application going to be in 2 years time.&amp;#160; Scalability means provide a good tolerance for expansion without compromising the quality of service in our case. Overtime we expect a growing user base and file storage usage by pictures, descriptions, user profiles, texts or whatever it is; but not only this, we should expect a growing number of requests per day by users all over the place. If we wanted, we could even expose services as plug-in for third-party consumers to provide our services in their own applications. Scalability must provide enough room for this to grow in the future&lt;/p&gt;  &lt;p align="justify"&gt;That’s when comes a brand new concept: Infrastructure as a service. High scalability and high availability are the main features of such environment. Who today can offer such a worldwide service? the Cloud. and with another good thing to take: The Cloud is agnostic.&lt;/p&gt;  &lt;p align="justify"&gt;So, here we have our chosen infrastructure media.&lt;/p&gt;  &lt;p align="justify"&gt;We are going now to develop .NET custom code implementing the Windows Azure APIs and make them as components in our SharePoint application, which can be distributed in our SharePoint pages as web parts hosted on Web part Zones.&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;Why Application Services?&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Here the biggest concern is relating to the many devices allowed by the system per user. It is impossible nowadays to have an application dictating what the user/client must use or not, and if you ever do this it will be in no time your competitor's biggest strength.&lt;/p&gt;  &lt;p align="justify"&gt;At the same time, many RIA – Rich Internet Applications are available and will want to be using such a service base, like iPod Touch and other mobile devices. To implement these we need to think about Composition Interfaces. &lt;/p&gt;  &lt;p align="justify"&gt;Composition Interfaces are many pieces of various design patterns combined to allow writing flexible UIs according to the user. We can even use ASP.NET adaptable rendering controls to minimize our design time. So by using a ASP.NET text box within a custom web part in our SharePoint site page to upload pictures, it will be rendered with no problems when this page is accessed via Firefox browser or a Nokia cell phone as well. &lt;/p&gt;  &lt;p align="justify"&gt;Flexible UIs allows us to develop both simultaneously and with personalization according to the user’s needs. &lt;/p&gt;  &lt;p align="justify"&gt;This given scenario is also a great model for sub locating tasks to other groups via design by contract.&lt;/p&gt;  &lt;p align="justify"&gt;To design an application by contract is to specify, document and make available all the expected inputs and returned outputs from our system, in our case our SharePoint site, so others can develop targeting our platform in a very interesting way because now you can give them a task, tell them the APIs to use (for uploading photos or querying texts) and they then develop the module based on the contract. It also introduces a very important aspect of it which is the atomicity. If their part somehow breaks down or has a bug, it won’t affect the main system because the calls specified by contract are already sanitizing the inputs and outputs.&lt;/p&gt;  &lt;p align="justify"&gt;Another added benefit is that such architecture is modular enough from the solution interface. You can clearly give a demonstration to the project’s stakeholders explaining the contract’s model and the interfaces without touching the internal processes and they will most likely to understand. It is like having a helicopter view of the solution.&lt;/p&gt;  &lt;p&gt;So, there you go. Now when someone tells you that they use SharePoint to save files and share resources in their Intranet you can tell: “SharePoint can do so much more than this!”&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-642472904075632461?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/642472904075632461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=642472904075632461&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/642472904075632461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/642472904075632461'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2009/04/how-to-sharepoint-azure-cloud.html' title='How to Design a SharePoint Application to the Cloud'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_embTfvHYYPE/SddqKs8JcxI/AAAAAAAADHc/RmjaqeVDy7s/s72-c/sharepoint-cloud_thumb%5B6%5D.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-3476448859306816566</id><published>2009-04-04T16:34:00.001+10:00</published><updated>2010-05-19T16:57:04.425+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>How to Perform Sharepoint Deployment by Features</title><content type='html'>&lt;p align="justify"&gt;Today I would like to talk about Features in Sharepoint. Features is a model provided by Sharepoint what reduces the complexity of deploying site customizations and at the same time provides to the team a strong and consistent way to perform many deployments as necessary following a well-known and documented process.&lt;/p&gt;  &lt;p&gt;By wrapping up content deployment in Features, you are also likely to implement versioning control since each package can be labeled by version.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How to Implement a Sharepoint Feature?&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Let’s assume you are using Microsoft Visual Studio.NET. To implement a Feature, you should mimic the current Sharepoint file Path in your solution. Go ahead and create a path called &amp;lt;yoursolution&amp;gt;\12\TEMPLATE\FEATURES&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/Sdb-8hWZi8I/AAAAAAAADFQ/V_lxVrcYUN4/s1600-h/sharepoint-feature-deployment%5B12%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="sharepoint-feature-deployment" border="0" alt="sharepoint-feature-deployment" src="http://lh6.ggpht.com/_embTfvHYYPE/Sdb-9pdl2UI/AAAAAAAADFU/RoG4ReCeXZQ/sharepoint-feature-deployment_thumb%5B8%5D.png?imgmax=800" width="305" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;There you will place all the necessary content for the Feature. We will use WSPBuilder as a preferred tool to ease our task as well. If you don’t have WSPBuilder you can get it from our tools page.&lt;/p&gt;  &lt;p align="justify"&gt;You will see a file called Feature.XML, this file will tell you the location of the assemblies, files, references, resources etc included in your Feature deployment. The xml file also will allow you specify a friendly name for your feature. like: MySiteBrandingContenttell , for example.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/Sdb--FRR9jI/AAAAAAAADFY/NZMLwSQECF8/s1600-h/sharepoint-feature-deployment%20%282%29%5B7%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="sharepoint-feature-deployment (2)" border="0" alt="sharepoint-feature-deployment (2)" src="http://lh4.ggpht.com/_embTfvHYYPE/Sdb--_262jI/AAAAAAAADFc/sOuCDUQxPvc/sharepoint-feature-deployment%20%282%29_thumb%5B3%5D.png?imgmax=800" width="322" height="139" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;Now let’s say you want to add a whole bunch of images to your site. Just go to the Style Library/Images folder and add them there. Remember, our folder structure is mirroring the actual Sharepoint folder structure.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/Sdb-_sJ6DiI/AAAAAAAADFg/2Bs_YXJTrwQ/s1600-h/sharepoint-feature-deployment%20%281%29%5B6%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="sharepoint-feature-deployment (1)" border="0" alt="sharepoint-feature-deployment (1)" src="http://lh5.ggpht.com/_embTfvHYYPE/Sdb_ASKtnLI/AAAAAAAADFk/7u1HHHspzUI/sharepoint-feature-deployment%20%281%29_thumb%5B2%5D.png?imgmax=800" width="330" height="375" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now let’s take a look at the elements.xml file. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/Sdb_BZQsYtI/AAAAAAAADFo/V-AjNpnWB5g/s1600-h/sharepoint-feature-deployment%20%283%29%5B11%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="sharepoint-feature-deployment (3)" border="0" alt="sharepoint-feature-deployment (3)" src="http://lh4.ggpht.com/_embTfvHYYPE/Sdb_CWCMdmI/AAAAAAAADFs/IyVMfnWqcvQ/sharepoint-feature-deployment%20%283%29_thumb%5B7%5D.png?imgmax=800" width="554" height="406" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Note the section called ImageModule pointing to the url style library/Images.&lt;/p&gt;  &lt;p align="justify"&gt;This section will ultimately tell Sharepoint (via WSPBuilder) all the files that must be present inside your Feature package. So you should go and edit this file, adding all the images you want to distribute with your Feature.&lt;/p&gt;  &lt;p align="justify"&gt;That’s an OK process, but often we have dozens if not hundreds of images to deploy. So here’s a nice trick to quickly populate the section. &lt;/p&gt;  &lt;p&gt;First you open via windows explorer the location where all the images are located.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/Sdb_DQkUoSI/AAAAAAAADFw/DS6W5KJdibI/s1600-h/sharepoint-feature-deployment%20%284%29%5B6%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="sharepoint-feature-deployment (4)" border="0" alt="sharepoint-feature-deployment (4)" src="http://lh4.ggpht.com/_embTfvHYYPE/Sdb_EB8hnHI/AAAAAAAADF0/JrmrHtA6Ylc/sharepoint-feature-deployment%20%284%29_thumb%5B2%5D.png?imgmax=800" width="394" height="584" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Get the folder path, which depending of your solution can be quite big.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/Sdb_FY3XTnI/AAAAAAAADF4/VuHbK8lpRus/s1600-h/sharepoint-feature-deployment%20%285%29%5B7%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="sharepoint-feature-deployment (5)" border="0" alt="sharepoint-feature-deployment (5)" src="http://lh6.ggpht.com/_embTfvHYYPE/Sdb_GjgFuEI/AAAAAAAADF8/q_cCox_dO78/sharepoint-feature-deployment%20%285%29_thumb%5B3%5D.png?imgmax=800" width="554" height="418" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Make a list of all the files you want to add to the xml section into a text file. And here comes again another trick, from the good-old-days of DOS. The command below will list all the files, just the names and save it into a file in your computer.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/Sdb_HTd8wkI/AAAAAAAADGA/lHjd570dBtU/s1600-h/sharepoint-feature-deployment%20%286%29%5B7%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="sharepoint-feature-deployment (6)" border="0" alt="sharepoint-feature-deployment (6)" src="http://lh5.ggpht.com/_embTfvHYYPE/Sdb_IDY2IRI/AAAAAAAADGE/stCDik4a3fc/sharepoint-feature-deployment%20%286%29_thumb%5B3%5D.png?imgmax=800" width="554" height="70" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Open this file, select all the files and copy to an Excel spreadsheet (or any other similar toll like the OpenOffice Calc)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/Sdb_IzXEMHI/AAAAAAAADGI/qh0d94KIIjk/s1600-h/sharepoint-feature-deployment%20%287%29%5B7%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="sharepoint-feature-deployment (7)" border="0" alt="sharepoint-feature-deployment (7)" src="http://lh3.ggpht.com/_embTfvHYYPE/Sdb_Jkm2ebI/AAAAAAAADGM/92cTL3AzKLs/sharepoint-feature-deployment%20%287%29_thumb%5B3%5D.png?imgmax=800" width="554" height="470" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/Sdb_LMAHO2I/AAAAAAAADGQ/3z-s6Tb6XLo/s1600-h/sharepoint-feature-deployment%20%288%29%5B6%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="sharepoint-feature-deployment (8)" border="0" alt="sharepoint-feature-deployment (8)" src="http://lh6.ggpht.com/_embTfvHYYPE/Sdb_M10YBLI/AAAAAAAADGU/Z5HEUTfSGdY/sharepoint-feature-deployment%20%288%29_thumb%5B2%5D.png?imgmax=800" width="554" height="478" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Now, another trick. Use this formula within your spreadsheet. This when applied to the content will format the whole document perfectly for use inside your XML feature file.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/Sdb_Nnk8n0I/AAAAAAAADGY/spW8E4-VifA/s1600-h/ScreenShot001%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="ScreenShot001" border="0" alt="ScreenShot001" src="http://lh5.ggpht.com/_embTfvHYYPE/Sdb_OyCvFfI/AAAAAAAADGc/vq0b9D6LYEs/ScreenShot001_thumb%5B1%5D.png?imgmax=800" width="554" height="27" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now you just have to copy the content generated and copy/paste into your section.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/Sdb_PkP6I-I/AAAAAAAADGg/mYG3f365SB0/s1600-h/sharepoint-feature-deployment%20%289%29%5B6%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="sharepoint-feature-deployment (9)" border="0" alt="sharepoint-feature-deployment (9)" src="http://lh5.ggpht.com/_embTfvHYYPE/Sdb_Q8cD-5I/AAAAAAAADGk/ORv-nrrQTso/sharepoint-feature-deployment%20%289%29_thumb%5B2%5D.png?imgmax=800" width="554" height="277" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Right-click your solution and rebuild the project.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/Sdb_Rj32UwI/AAAAAAAADGo/5lx84BzeKAU/s1600-h/sharepoint-feature-deployment%20%2810%29%5B7%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="sharepoint-feature-deployment (10)" border="0" alt="sharepoint-feature-deployment (10)" src="http://lh4.ggpht.com/_embTfvHYYPE/Sdb_S_5SbPI/AAAAAAAADGs/U8DnbR2V66Q/sharepoint-feature-deployment%20%2810%29_thumb%5B3%5D.png?imgmax=800" width="377" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Voila! You’re ready to deploy your feature.&lt;/p&gt;  &lt;p align="justify"&gt;Now comes the part when WSPBuilder is really handy. If you have it installed in your computer you will notice the context-sensitive menu integrated within your Visual Studio environment.&amp;#160; Right-click again your solution and choose Build WSP&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/Sdb_TnQZyUI/AAAAAAAADGw/nsOM-Q5Xd5Y/s1600-h/sharepoint-feature-deployment%20%2811%29%5B6%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="sharepoint-feature-deployment (11)" border="0" alt="sharepoint-feature-deployment (11)" src="http://lh3.ggpht.com/_embTfvHYYPE/Sdb_U-eZdgI/AAAAAAAADG0/NOCkLqPkJwE/sharepoint-feature-deployment%20%2811%29_thumb%5B2%5D.png?imgmax=800" width="554" height="442" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;If everything went as expected, right-click again and then choose Deploy. This will effectively deploy the solution to your environment.&lt;/p&gt;  &lt;p align="justify"&gt;How Does WSPBuilder knows where my Sharepoint Site is? It will pick it up from the project properties/URL path.&lt;/p&gt;  &lt;p align="justify"&gt;In any case, the package will be created under your solution/bin/deploy folder. A batch file called deploy with stsadmn is also going to be created if you decide to deploy it manually without having to remember all the stsadmin –o directives for it, or if you want to take the Feature package to another server.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/Sdb_VjeEl3I/AAAAAAAADG4/fQ--dyoXfUw/s1600-h/sharepoint-feature-deployment%20%2812%29%5B7%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="sharepoint-feature-deployment (12)" border="0" alt="sharepoint-feature-deployment (12)" src="http://lh6.ggpht.com/_embTfvHYYPE/Sdb_WyAsW5I/AAAAAAAADG8/hjCIESowk9g/sharepoint-feature-deployment%20%2812%29_thumb%5B3%5D.png?imgmax=800" width="554" height="444" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;Now go you your website and see all the changes applied. Your feature should have been deployed successfully!&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;Why I can not see my deployed features?&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;That’s because you need to disable the feature and then re-enabled it again to see it in action. By doing this you are forcing the files to be copied over to the actual Sharepoint site.&lt;/p&gt;  &lt;p&gt;You do this. Go to modify all your site settings:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/Sdb_XySwJ1I/AAAAAAAADHA/blMDhAmtfaU/s1600-h/sharepoint-feature-deployment%20%2813%29%5B6%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="sharepoint-feature-deployment (13)" border="0" alt="sharepoint-feature-deployment (13)" src="http://lh6.ggpht.com/_embTfvHYYPE/Sdb_ZaeyJNI/AAAAAAAADHE/Zw-CtC14Emo/sharepoint-feature-deployment%20%2813%29_thumb%5B2%5D.png?imgmax=800" width="532" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Go to the site features, where you can see all the listed features in your site.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/Sdb_aUB07pI/AAAAAAAADHI/A-Bf9eOzYcc/s1600-h/sharepoint-feature-deployment%20%2814%29%5B6%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="sharepoint-feature-deployment (14)" border="0" alt="sharepoint-feature-deployment (14)" src="http://lh5.ggpht.com/_embTfvHYYPE/Sdb_brgcYjI/AAAAAAAADHM/-CYqCq5MW7Q/sharepoint-feature-deployment%20%2814%29_thumb%5B2%5D.png?imgmax=800" width="554" height="309" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Then manually deactivate and activate the feature.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/Sdb_cvZfxCI/AAAAAAAADHQ/6jB8Qi1MOA4/s1600-h/sharepoint-feature-deployment%20%2815%29%5B6%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="sharepoint-feature-deployment (15)" border="0" alt="sharepoint-feature-deployment (15)" src="http://lh6.ggpht.com/_embTfvHYYPE/Sdb_d37o91I/AAAAAAAADHU/38xvbvLDzb4/sharepoint-feature-deployment%20%2815%29_thumb%5B2%5D.png?imgmax=800" width="554" height="403" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;There you go! Your feature is got to be there now.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-3476448859306816566?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/3476448859306816566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=3476448859306816566&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/3476448859306816566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/3476448859306816566'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2009/04/how-to-perform-sharepoint-deployment-by.html' title='How to Perform Sharepoint Deployment by Features'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_embTfvHYYPE/Sdb-9pdl2UI/AAAAAAAADFU/RoG4ReCeXZQ/s72-c/sharepoint-feature-deployment_thumb%5B8%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-2198490516317237865</id><published>2009-03-25T16:48:00.001+10:00</published><updated>2010-05-19T16:57:04.425+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>How to display Asp.Net error messages instead of the default SharePoint error messages on a website?</title><content type='html'>&lt;p&gt;When configuring, developing or performing any sort of action inside the Sharepoint environment not very often we see error messages, assuming you’ve been doing the right things. For all those other cases when you can’t Sharepoint might display this default error message:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/ScnTit5E-oI/AAAAAAAADC0/2zQz9GRWNdE/s1600-h/ScreenShot010%5B5%5D.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="default basic sharepoint error message" border="0" alt="default basic sharepoint error message" src="http://lh3.ggpht.com/_embTfvHYYPE/ScnTkdLIbTI/AAAAAAAADC4/3wqLAatsTcQ/ScreenShot010_thumb%5B3%5D.png?imgmax=800" width="554" height="272" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So, how do you know where did your application break?&lt;/p&gt;  &lt;p&gt;You certainly can go to the ULS (Universal Logging Service) and trace the enormous log file or you can do this.&lt;/p&gt;  &lt;p&gt;Open the web.config file of the website and change these values:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/ScnTlmmT-bI/AAAAAAAADC8/RjsMSKcWKlA/s1600-h/ScreenShot009%5B5%5D.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="web.config changes to display full error message in sharepoint MOSS" border="0" alt="web.config changes to display full error message in sharepoint MOSS" src="http://lh4.ggpht.com/_embTfvHYYPE/ScnTnQ0VKSI/AAAAAAAADDA/N6I_VXRibAY/ScreenShot009_thumb%5B3%5D.png?imgmax=800" width="554" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And this one:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/ScnTodQ8TDI/AAAAAAAADDE/h0FG2zYx3pY/s1600-h/ScreenShot008%5B5%5D.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="web.config changes to display full error message in sharepoint MOSS" border="0" alt="web.config changes to display full error message in sharepoint MOSS" src="http://lh4.ggpht.com/_embTfvHYYPE/ScnTpev9dCI/AAAAAAAADDI/yDf5wscc88k/ScreenShot008_thumb%5B3%5D.png?imgmax=800" width="554" height="264" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Next time you try to run your application you will see the full stack trace, just like any regular .Net application.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/ScnTqkLzKmI/AAAAAAAADDM/ZPUuq15uCA8/s1600-h/sharepoint-error-4%5B5%5D.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Sharepoint MOSS full error stack to debug in asp.net on browser" border="0" alt="Sharepoint MOSS full error stack to debug in asp.net on browser" src="http://lh6.ggpht.com/_embTfvHYYPE/ScnTsxqh-qI/AAAAAAAADDQ/N7kmTwQ1T9U/sharepoint-error-4_thumb%5B3%5D.png?imgmax=800" width="554" height="342" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Obviously, this is a development tip. The best practices probably won’t recommend you to do this on a live website.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-2198490516317237865?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/2198490516317237865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=2198490516317237865&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/2198490516317237865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/2198490516317237865'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2009/03/how-to-display-aspnet-error-messages.html' title='How to display Asp.Net error messages instead of the default SharePoint error messages on a website?'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_embTfvHYYPE/ScnTkdLIbTI/AAAAAAAADC4/3wqLAatsTcQ/s72-c/ScreenShot010_thumb%5B3%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-1692227997939017044</id><published>2009-03-19T13:00:00.000+10:00</published><updated>2010-05-19T16:57:04.426+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>SQL Server 2005 queries running slower then SQL Server 2000</title><content type='html'>&lt;p mce_keep="true"&gt;&lt;img src="http://www.tctl.co.uk/images/sql%20logo2.gif" style="float: left;" mce_src="http://www.tctl.co.uk/images/sql%20logo2.gif"&gt;Here there is something interesting that I would like to share with you guys. &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Even thou &lt;a href="http://www.blogger.com/www.microsoft.com/sqlserver" mce_href="http://www.blogger.com/www.microsoft.com/sqlserver"&gt;Microsoft SQL Server 2005&lt;/a&gt; is out for quite some time, it is still common to see people working in projects using Microsoft SQL Server 2000 and often in mixed environments. &lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;That's the case I want to talk about: The mixed environment, and I am working in a project where some applications have that hybrid configuration. &lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;So someone told me that my report &lt;a href="http://www.microsoft.com/net/" mce_href="http://www.microsoft.com/net/"&gt;developed in .NET 2.0&lt;/a&gt; was running slower than the similar one done in the old fashioned ASP. Of course I denied, just to see later the proof I was wrong. &lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Yes, the same stored procedure executed from the same page from, in the same machine was running faster in the old environment while it was slower in the new &lt;span style="font-style: italic;"&gt;(and supposedly improved)&lt;/span&gt; environment. How's that possible? I traced the execution, used the SQL profiler but nothing gave me a good clue. Than I found this in the Microsoft website. &lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: italic;"&gt;In SQL Server 2000, the execution plan for the query uses an Index Seek operator. In SQL Server 2005, the execution plan for the query uses an Index Scan operator. The optimizer produces an index spool for the Index Scan operation. When you use the FORWARD_ONLY cursor, SQL Server scans the index for every FETCH statement. Each fetch takes a long time. Therefore, the query takes a long time to execute&lt;/span&gt;. &lt;/div&gt;See that example below: &lt;br /&gt;&lt;p style="margin: 0px; background: white none repeat scroll 0% 50%; font-size: 8pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: Courier New;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p style="margin: 0px; background: white none repeat scroll 0% 50%; font-size: 8pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: Courier New;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;50&lt;/span&gt; &lt;span style="color: green;"&gt;declare @p1 int&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p style="margin: 0px; background: white none repeat scroll 0% 50%; font-size: 8pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: Courier New;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;51&lt;/span&gt; &lt;span style="color: green;"&gt;set @p1=0&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p style="margin: 0px; background: white none repeat scroll 0% 50%; font-size: 8pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: Courier New;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;52&lt;/span&gt; &lt;span style="color: green;"&gt;declare @p3 int&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p style="margin: 0px; background: white none repeat scroll 0% 50%; font-size: 8pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: Courier New;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;53&lt;/span&gt; &lt;span style="color: green;"&gt;set @p3=16388&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p style="margin: 0px; background: white none repeat scroll 0% 50%; font-size: 8pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: Courier New;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;54&lt;/span&gt; &lt;span style="color: green;"&gt;declare @p4 int&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p style="margin: 0px; background: white none repeat scroll 0% 50%; font-size: 8pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: Courier New;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;55&lt;/span&gt; &lt;span style="color: green;"&gt;set @p4=8194&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p style="margin: 0px; background: white none repeat scroll 0% 50%; font-size: 8pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: Courier New;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;56&lt;/span&gt; &lt;span style="color: green;"&gt;declare @p5 int&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p style="margin: 0px; background: white none repeat scroll 0% 50%; font-size: 8pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: Courier New;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;57&lt;/span&gt; &lt;span style="color: green;"&gt;set @p5=0&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p style="margin: 0px; background: white none repeat scroll 0% 50%; font-size: 8pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: Courier New;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;58&lt;/span&gt; &lt;span style="color: green;"&gt;exec sp_cursoropen @p1 output, &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;Transact-SQL statement&amp;gt;&lt;/span&gt;&lt;span style="color: green;"&gt; ,@p3 output,@p4 output,@p5 output&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This code will run faster if you are &lt;span style="font-weight: bold;"&gt;NOT &lt;/span&gt;using the .NET 2005 SQL Connectors or running in a SQL Server 2000. Here we are using the &lt;a href="http://msdn2.microsoft.com/en-us/library/Aa172588.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/Aa172588.aspx"&gt;sp_cursoropen&lt;/a&gt; to open a cursor, then specifying the forward-only option in the parameter list. &lt;/p&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;This is a bug you can only experience if you are using a lot of cursor-based stored procedures from a SQL 2000 to a SQL 2005 environment, and here we have a VERY HIGH cursor usage. &lt;span style="font-style: italic;"&gt;(not that I like them neither I defend its usage, it is just a fact from the environment here)&lt;/span&gt; &lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;How to fix this?&lt;/span&gt; &lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;If you do not want to download and apply the patch and want to fix this in the code itself use &lt;span style="font-weight: bold;"&gt;"OPTION (FAST 1)"&lt;/span&gt; in the stored procedure call. That will make it run faster in the SQL 2005 machine. &lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;See ya later&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-1692227997939017044?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/1692227997939017044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=1692227997939017044&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/1692227997939017044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/1692227997939017044'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2009/03/sql-server-2005-queries-running-slower.html' title='SQL Server 2005 queries running slower then SQL Server 2000'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-4703758278616970293</id><published>2009-03-18T19:31:00.000+10:00</published><updated>2010-05-19T16:58:54.825+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>Why adding more memory won't fix your Out of Memory error ?</title><content type='html'>&lt;p align="justify"&gt;Here an interesting case. Consider there 2 scenarios:&lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="center"&gt;&lt;img src="http://farm3.static.flickr.com/2001/2389271787_9ba084337c.jpg" mce_src="http://farm3.static.flickr.com/2001/2389271787_9ba084337c.jpg"&gt; &lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="justify"&gt;Both are running the same website, both have the same amount of users connected.&lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="justify"&gt;Now imagine this website has a page to upload pictures, just like any regular photo-album website.&lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="justify"&gt;For some reason, at some point the users complain that they see an error page indicating out of memory error. &lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="justify"&gt;So, you wonder: &lt;i&gt;How come? they are just uploading a photo to my website, and I still have plenty of memory in my server anyway&lt;/i&gt;.&lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="justify"&gt;Anyhow, you stop thinking about this and go for the &lt;i&gt;easiest, quick and dirty &lt;/i&gt;solution: If the system tells me that my computer does not have enough memory then &lt;b&gt;I just need to add more memory&lt;/b&gt;. Right?&lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="justify"&gt;And guess what? you still will get the error message.&lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="center"&gt;&lt;img src="http://farm3.static.flickr.com/2220/2390103968_2c86acc65f.jpg" mce_src="http://farm3.static.flickr.com/2220/2390103968_2c86acc65f.jpg"&gt; &lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="justify"&gt;That's a very common mistake. Having a machine with 10GB of memory does not mean you will have 10GB of memory available. I explain.&lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="justify"&gt;It does not matter if your computer or server has 512 MB, 1 GB, 2 GB, 4 GB or 8 GB of RAM. If your machine is a 32-bit machine it will only be able to see/manage 4 GB. That's mathematics, that's life, that's the way things are and you can't do nothing about it. A 32-bit machine can not do more than that.&lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="center"&gt;&lt;img src="http://farm4.static.flickr.com/3030/2390103346_8be8580061.jpg" mce_src="http://farm4.static.flickr.com/3030/2390103346_8be8580061.jpg"&gt; &lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="justify"&gt;Additional memory may increase your system performance, but it won't increase the memory availability. Sure your computer will use less the hard disk for swapping operations and will be able put more stuff in memory and start some programs faster, but 4GB is the limit; after this point the memory management module will start doing disk swap and to use the famous page file.&lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="justify"&gt;And here comes more bad news: Your Windows system on a 32-bit machine requires 2 GB allocated only for it. &lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="justify"&gt;So, if you have 4 GB installed, effectively you will have 2 GB only for applications; your windows will be using alone 2 GB.&lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="center"&gt;&lt;img src="http://farm4.static.flickr.com/3141/2390103884_02673e964a.jpg" mce_src="http://farm4.static.flickr.com/3141/2390103884_02673e964a.jpg"&gt; &lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="justify"&gt;So, what does out of memory means?&lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="justify"&gt;Well, according to some people at Microsoft, this limit for an average configuration is reached between 600 MB and 800 MB of utilization. That 800 number is NOT A RULE, is a baseline. Generally speaking the largest majority of configurations with website, .NET and SQL Server database might have a problem around this point. Of course, this can vary from system to system...as a matter of fact a system can be out of memory at just 600 MB.&lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="justify"&gt;Yes, it does sounds crazy. You look so happy now that you just bought a 4GB RAM notebook and your computer is breaking with just 800MB, hun?&lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="center"&gt;&lt;img src="http://farm3.static.flickr.com/2347/2390103928_2612aa2f3d.jpg" mce_src="http://farm3.static.flickr.com/2347/2390103928_2612aa2f3d.jpg"&gt; &lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="justify"&gt;Here is another point for you. Have you ever seen someone bragging that he/she bought a 10-megapixel camera and now he/she believes their pictures are going to be better because of this?&lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="justify"&gt;Well, guess what? Just like the number of megapixels in a camera box does not have much to do with picture quality, RAM memory does not have much to do with hard disk space.&lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="justify"&gt;That's a common mistake: &lt;b&gt;&lt;i&gt;People buy RAM as if they were buying a hard disk&lt;/i&gt;&lt;/b&gt;.&lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="justify"&gt;RAM usage needs to me continuous, unlike hard disk. A simple 5MB Microsoft Word document when saved in a hard disk can be split up in hundreds of pieces; When you open this file in memory, the RAM requires those 5MB to be allocated continuously.&lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="justify"&gt;Can you see now the reason for the 'out of memory' message?&lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="justify"&gt;Yes, it really means &lt;i&gt;&lt;b&gt;'there is not enough continuous memory to place that file in memory'&lt;/b&gt;&lt;/i&gt;. Your system might have 2GB of RAM but unfortunately it might be too busy with stuff running and there is no enough continuous memory to put the picture you are uploading.&lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="center"&gt;&lt;img src="http://farm3.static.flickr.com/2042/2390103910_1bc0b92982.jpg" mce_src="http://farm3.static.flickr.com/2042/2390103910_1bc0b92982.jpg"&gt; &lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="justify"&gt;Yeah, you can not do much but you can buy a 64-bit machine then when you add more memory you can really use it more efficiently. And yes, we have &lt;a href="http://www.microsoft.com/windows/" mce_href="http://www.microsoft.com/windows/"&gt;Microsoft Windows systems for 64-bit machines&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="justify"&gt;If you do not want to buy a new system of upgrade you current server to a better version then you should think other solutions in the business process, such as to avoid users upload pictures with more than 1 MB in size to be uploaded.&lt;/p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;p align="justify"&gt;See you later.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-4703758278616970293?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/4703758278616970293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=4703758278616970293&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/4703758278616970293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/4703758278616970293'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2009/03/why-adding-more-memory-wont-fix-your.html' title='Why adding more memory won&apos;t fix your Out of Memory error ?'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2001/2389271787_9ba084337c_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-477049336217460166</id><published>2009-03-14T21:37:00.001+10:00</published><updated>2010-05-19T16:58:54.826+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>What Do You Do After Speaking To a Customer?</title><content type='html'>&lt;p align="justify"&gt;I am an IT guy. That's clear but often I think about many situations from a salesman's point of view, trying to view the world from another angle that I sometimes have no idea how it could be. &lt;/p&gt;  &lt;p align="justify"&gt;What do I mean by that? I'll explain but before please let me share with you this.   &lt;br /&gt;&lt;/p&gt;  &lt;p align="justify"&gt;I must recognize, even thou IT is a really cool area to work and even thou because the pace it is so demanding we must run everyday just to remain in the same place, unfortunately not always we have the chance to deal with cool and state-of-the-art technology. Yes, sometimes we have to deal with repetitive tasks, sometimes boring tasks, sometimes old products etc. If you are an IT person you know that and might agree with me. Legacy base is a consequence of this fast paced world, as well.   &lt;br /&gt;&lt;/p&gt;  &lt;p align="justify"&gt;In those situations we wonder: Mate, I am doing this because it was handed over to me out of nowhere and I know this is no rocket-science and despite that I must finish it by tomorrow. I bet we all at some point of our carreers dealt with this scenario, which normally leaves a strange taste in our mouth telling us there is nothing new to be learn from that experience.&lt;/p&gt;  &lt;p align="justify"&gt;Fear not my friends, there is always something to learn does not matter the scenario. &lt;/p&gt;  &lt;p align="justify"&gt;Now, let's get back to the sales person thing I was talking about. &lt;/p&gt;  &lt;p align="justify"&gt;The sales guy after a contact, client visit, sales performed, email delivered to a potential customer, whatever the reason, there is something they must do which is ask himself : &lt;b&gt;What could I have done better ?&lt;/b&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Sounds easy and trivial but that's a hard thing to do and as a matter of fact that's something I am trying to do with myself: &lt;b&gt;What have I done today that I've could do better ? What I've done wrong today ? &lt;/b&gt;    &lt;br /&gt;    &lt;br /&gt;As the time goes by this becomes a habit just like drinking coffee at 3pm and soon you'll picture yourself in a state of eternal improvement, or at least awareness of it. I am not telling you this is a magic rule to follow in order to achieve the perfection, far from it; but it certainly does something to us which IMHO is a must for a better version of ourselves: &lt;b&gt;It takes us out of our comfort zone.&lt;/b&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Yet there are people out there who pay for this kind of professional service, Personal Coaching. Honestly, would be great to pay for one of those but I still prefer to put my hard earned money into my mortgage or my kid's school fees. So why not we become our own Personal Coach?&lt;/p&gt;  &lt;p align="justify"&gt;&lt;b&gt;How do I do?&lt;/b&gt;    &lt;br /&gt;I ask myself: What could I have done better? and I write them on paper. I make a list. I put them on paper because I want that document to be a reminder, and you know what? writing it's free and doesn't hurt, specially the bad things and mistakes we made. Yes, the mistakes are important also because they will be like beacons in this dark ocean of our tries, but I try not to concentrate too much on them after all mistakes are consequences of tries. If you do not do many mistakes it means you haven't tried enough.    &lt;br /&gt;    &lt;br /&gt;Just to illustrate look at our mailboxes with lots of emails trying to sell us stuff. Pay attention to them, I could say that the vast majority is really badly written, from the sales point of view of course. Lots of information about the product requirements, features and prices but very few information about how it would make my life easier or things like why I should buy it now and save effectively&amp;#160; 1 hour of coding everyday.    &lt;br /&gt;    &lt;br /&gt;&lt;strong&gt;The truth is: very few of them talk about benefits. Very few of them mention how their product will help the customer with its problems.&lt;/strong&gt;    &lt;br /&gt;    &lt;br /&gt;So, here it goes a good exercise: Try to find out what else that message wants to say in the email selling you stuff. Why I should go for this product instead the competition? How would you write the message to appeal to people like yourself. And how to put yourself in other situations out of your comfort zone? Try to think about markets you don't know much about, like think how would you manage that coffee shop. If you were an attendant how would you receive a client like yourself looking for a good coffee during the working day?    &lt;br /&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Excellence is not a point to reach, it is a trajectory made up of very very small baby steps. Hundreds of them taken one at a time, one each day.   &lt;br /&gt;&lt;/p&gt;  &lt;p align="justify"&gt;See you later. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-477049336217460166?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/477049336217460166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=477049336217460166&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/477049336217460166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/477049336217460166'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2009/03/what-do-you-do-after-speaking-to.html' title='What Do You Do After Speaking To a Customer?'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-6773276265524510322</id><published>2009-03-14T21:35:00.001+10:00</published><updated>2010-05-19T16:58:54.826+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>Why hiding my wireless Internet SSID will not make my connection safer ?</title><content type='html'>&lt;p align="justify"&gt;This weekend I went to a friend's house and we talked a lot about photography, another passion of mine. So I decided to use my iTouch to show him my online portfolio: &lt;/p&gt;  &lt;p align="justify"&gt;&lt;i&gt;- sorry man - he said - I have to tell you my home network name. Otherwise you won't see it available to connect.&lt;/i&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;i&gt;- what do you mean? Do you hide your wireless SSID?&lt;/i&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;i&gt;- Yeah, I do this for security reasons.&lt;/i&gt;&lt;/p&gt;  &lt;p align="justify"&gt;And yet again here we go, another old security myth: Hiding your wireless SSID makes your home network safer.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;b&gt;First of all, what is this ?&lt;/b&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/superedge/SDLYoaGkRWI/AAAAAAAABeQ/rECT6wf2vac/s1600-h/DSC09008a%5B3%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="161" alt="DSC09008a" src="http://lh4.ggpht.com/superedge/SDLYpaGkRXI/AAAAAAAABeY/jC2hY4w5xeY/DSC09008a_thumb%5B3%5D.png?imgmax=800" width="550" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;In your house you may have Internet access. If you have a laptop what the people normally do is to buy a router, then connect the Internet cable to the router and then the router will 'emit' the signal to the air. This will allow you to connect to your Internet from your bedroom, kitchen, talk to your mother over MSN while walking around your house etc. Everything wirelessly, as long as you can still get the signal. And for that we give a friendly name to this signal called SSID, so you know where to connect.&lt;/p&gt;  &lt;p align="justify"&gt;The thing is, everyone who has a computer with wireless connection also sees your signal. &lt;/p&gt;  &lt;p align="justify"&gt;&lt;b&gt;So how to avoid them to connect to your Internet and make them surf by stealing your connection?&lt;/b&gt; Well, you set a password to connect to your router, so when anyone try to connect they will be asked for it.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/superedge/SDLYqKGkRYI/AAAAAAAABeg/rSUsFQMXjLY/s1600-h/DSC09008b%5B9%5D.png"&gt;&lt;img height="191" alt="DSC09008b" src="http://lh3.ggpht.com/superedge/SDLYrKGkRZI/AAAAAAAABeo/mfdsrEzoz2M/DSC09008b_thumb%5B9%5D.png?imgmax=800" width="550" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;And here we get to the point: &lt;b&gt;the SSID is not a password&lt;/b&gt;. As a matter of fact, the SSID was designed to be public, yes. So by making it public or hidden it really does not change much the security scenario. And besides remember what all the security experts say: there is no security by obscurity. Just because it's hidden it does not mean that it is safe.&lt;/p&gt;  &lt;p align="justify"&gt;So he decided to hide the SSID. Ok. It does not matter, it is not much hidden anyway. Let's see.&lt;/p&gt;  &lt;p align="justify"&gt;The wireless network that you have at home send packages of data-to-air, some are encrypted, some are not, and inside those who are not encrypted they also contain your SSID name. Simple like that and written in plain-text.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;b&gt;So if I am a hacker&lt;/b&gt;, I could use a sniffer program to capture the packages and open up to see what's inside. A lot of them I would see crazy stuff, those are encrypted; but in some of them I would see things of the like: trying to connect to SSID name 'myhomenetwork'.&lt;/p&gt;  &lt;p align="justify"&gt;So there we go, our secret is now gone. Do you still think you're safer after that?&lt;/p&gt;  &lt;p align="justify"&gt;&lt;b&gt;Can you reduce the amount of packages without encrypted information?&lt;/b&gt; Yes, but you can not stop them 100%, so at some point they will be sent.&lt;/p&gt;  &lt;p align="justify"&gt;Another thing to worry about. If you use Windows XP we can observe an interesting behaviour. If your SSID is hidden, but the laptop is connected to the Internet, XP still apparently keeps sending requests to join the network, continuously. And guess what? The router will reply to your requests using non-encrypted messages.&lt;/p&gt;  &lt;p align="justify"&gt;Funny thing. If we think about it what we are doing here is make our hidden network sends over and over and over again a bunch of replies with not encrypted data with your so-cool-and-hidden SSID. &lt;/p&gt;  &lt;p align="justify"&gt;&lt;b&gt;Why Windows XP and Windows Vista behave like this by default?&lt;/b&gt; because SSIDs were, as I mentioned before, designed to be public and I my guess is that Microsoft did this to comply with some governments cyber-laws. I've heard that in some countries, like the USA, it is a crime to keep your SSID hidden and to use hidden identities and hidden networks... all that stuff. I can't confirm that, so it is a guess, but it makes sense to me.&lt;/p&gt;  &lt;p align="justify"&gt;Hiding the SSID won't hide you from the wireless world. Unfortunately people still relates hidden things with secure things.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;b&gt;So how to make my wireless Internet at home more secure?&lt;/b&gt; Use something called WPA/WPA2. That's good enough mostly the times. If you are using WEP, change to WPA2. If you are running Windows XP and you have applied all the updates, you are safe. For Windows Vista is even easier because WPA2 comes with it out-of-the-box.&lt;/p&gt;  &lt;p align="justify"&gt;Here some stuff about securing your &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=269902e8-fc41-4eb1-9374-44612e64f0fb&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=269902e8-fc41-4eb1-9374-44612e64f0fb&amp;amp;displaylang=en"&gt;wireless internet&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;See you later &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-6773276265524510322?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/6773276265524510322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=6773276265524510322&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/6773276265524510322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/6773276265524510322'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2009/03/why-hiding-my-wireless-internet-ssid.html' title='Why hiding my wireless Internet SSID will not make my connection safer ?'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/superedge/SDLYpaGkRXI/AAAAAAAABeY/jC2hY4w5xeY/s72-c/DSC09008a_thumb%5B3%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-1735727789498079270</id><published>2009-03-14T21:34:00.001+10:00</published><updated>2010-05-19T16:58:54.827+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>The Economics of Software Performance</title><content type='html'>&lt;p align="justify"&gt;It does not matter the current state in which an application is, everyone always wants a bigger, better and faster version. Yesterday talking to my peers we discussed this point: If you have to choose amongst these items, which one would you leave for last? I said performance.&lt;/p&gt;  &lt;p align="justify"&gt;My point is: To design for high performance is expensive and on these times of ROI is a good thing to save some for when we need it most.   &lt;br /&gt;In my first job about a decade ago, I had to work with protocols and microchip programming. In one of those projects I had to implement a little protocol to communicate 2 heaters. I asked to use C, after all I was studying it at the Uni.    &lt;br /&gt;At the same time, there was a group of cool people programming in Assembly and these guys told me to give Assembly a try, for performance reasons. I told them:&amp;quot;Guys, I do not have experience with this and I prefer to use C. It will be even better for my grades in the future tests.&amp;quot;    &lt;br /&gt;Truth must be said; the prototype was done and indeed it was too slow. Way too slow.&lt;/p&gt;  &lt;p align="justify"&gt;It was during my young years and I still remember all the comments I've heard about this bad performance. Those comments just fired me up! I was in a mission now to prove them wrong.   &lt;br /&gt;I asked for more time, and with more 2 friends we debugged the code. We were wasting too much time during the handshake. That's it! we found the bottleneck! I said. So we implemented just that handshake part in Assembly.    &lt;br /&gt;After some fine tuning: the application was now too fast!&lt;/p&gt;  &lt;p align="justify"&gt;Nowadays, I see people putting too much effort in new technologies, new methodologies and focusing too much about performance where is not really needed. use datasets or use MVC? Use an array list or a generic list? That’s something like over-engineering an application. IMHO, this can lead to complex and expensive systems to maintain.&lt;/p&gt;  &lt;p align="justify"&gt;So, lessons learned from this situation:   &lt;br /&gt;First, make sure you have freedom to use your skills in the area you know most. Sometimes we are forced to follow an already designed specification and there is not much freedom for our own ideas. The project priorities supersede our own priorities. If you have this ability then...&lt;/p&gt;  &lt;p align="justify"&gt;Second, do proof of concepts. When you find a proof that is modular enough to detach and that works good enough above the average, move on to the next module...and then...   &lt;br /&gt;Focus the effort in time and money with the most critical parts.     &lt;br /&gt;Be sure of that: Not even Jesus pleased everyone. At the end it does not matter how effort you placed in the application or how cool you did that module using a new logical path there is always people telling you it could be done better.&lt;/p&gt;  &lt;p align="justify"&gt;That's software, that's simple and that's life. &lt;/p&gt;  &lt;p align="justify"&gt;&lt;i&gt;but hey, these are the sort of comments that makes you want to be better, to improve and move stronger ahead, aren't they?&lt;/i&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-1735727789498079270?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/1735727789498079270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=1735727789498079270&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/1735727789498079270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/1735727789498079270'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2009/03/economics-of-software-performance.html' title='The Economics of Software Performance'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-5998924205939591956</id><published>2009-03-14T21:32:00.001+10:00</published><updated>2010-05-19T16:58:54.827+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>The Perfect Entity Model Development Framework</title><content type='html'>&lt;p&gt;The Entity Framework is out there and it is common term already in the framework talks. There are hundreds of sites dedicated to&amp;#160;&amp;#160; its best applications and best architectures tactics. &lt;/p&gt;  &lt;p&gt;When an architect is involved in these talks the good ones always bring the discussion up to a helicopter view, since the discussion will inevitably move towards the best model and to comparisons against the 'what-would-be-the-perfect'. &lt;/p&gt;  &lt;p&gt;Now seriously, is there any perfect framework model? &lt;/p&gt;  &lt;p&gt;The purists’ attacks against the Microsoft EF always say that &amp;quot;EF is not an independent layer neither multiplatform oriented&amp;quot;, so it can't be reused and integrated with ease across the other systems in the enterprise, for that would be the dreams of any architects. &lt;/p&gt;  &lt;p&gt;Since the introduction of shared folders you could easily for example place a text file in some URI and use it shared across many systems. Obviously as we can see the data would not be cached and few few mechanisms were available to raise a notification to the data holders about that update. The EF is not supposed to accomplish that task as it is a framework to access data using objects. &lt;/p&gt;  &lt;p&gt;So here it comes another point: should we put a data access layer above it? &lt;/p&gt;  &lt;p&gt;Remember, Microsoft data access methodologies have been changing dramatically over the last 5 years, which paves the way and gives us hints that in a near future it will change again. Legacy systems will be always a reality of the high paced IT market. The arguments against it is that having so many layers in an application will over-engineer the problem and will affect the performance and maybe the final costs rather than a simple refactoring. Remember the discussion about table normalization and de-normalization? It is pretty much the same here. These people are the same that advocate it is better to achieve the application's ROI before any major refactoring. And honestly, 5 years is not enough time for many application to break even the ROI. &lt;/p&gt;  &lt;p&gt;Here's a scenario for discussion: A programmer decides to use EF and he maps a common class against the database. He notices that it is very simple IF ONLY he follows 'the yellow-brick-road'. For what I have seen he must follow the EF rules; he must inherit and implement mandatory interfaces dictated by the EF so everything falls right in place. If not, the EF will be just one big expensive fancy feature. Yeah, there is a term for this: Persistence Ignorant. In a glance is like the EF do no adapt to the model, you have to make the model adapt to the EF. &lt;/p&gt;  &lt;p&gt;A model should be model ignorant especially nowadays where test-driven development is becoming common in the companies. You can actually test business rules in a higher level. That's why we start to see things like Linq for SQL and binding interfaces. They want to cover the gap left by the persistence ignorance. &lt;/p&gt;  &lt;p&gt;The consequence of this is that more and more people are using EF as a data access tool and left to using Linq in the business layer. The business layers will then return datasets within structures called ObjectContext. And good news, the ObjectContext is transactional meaning that you can use System.Transaction to keep the data update rules properties. EF, Linq and ObjectContext: Is this a new implementation being born? Only time will tell but at least they are simple to use, have good performance and gives the programmer good deliverable times...long gone are the days when developers wanted to stay long hours at the office. &lt;/p&gt;  &lt;p&gt;Strong points for the EF: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;All the query results are objects and you can parse and traverse them in memory without any cost;&lt;/li&gt;    &lt;li&gt;There is an embedded conceptual layer where you can do things like denormalize the data structure without affecting much the application.&lt;/li&gt;    &lt;li&gt;Linq can be restricted to be used ONLY when needed; Linq is great but it is no silver bullet and people are tempted to overusing it &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In a way, these properties are familiar to the typed dataset, aren't they? If you started programming with typed datasets, to migrate to EF is almost natural and has the advantage that now you can isolate a business logic layer with contracts. Translating: gives you scalability. Another good thing is the EF's capacity when compared against other great frameworks like nHibernate. &lt;/p&gt;  &lt;p&gt;But it is perfect? IMHO, it is not... and after all, what is perfection anyway?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-5998924205939591956?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/5998924205939591956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=5998924205939591956&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/5998924205939591956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/5998924205939591956'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2009/03/perfect-entity-model-development.html' title='The Perfect Entity Model Development Framework'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-1769077419474439081</id><published>2009-03-09T01:47:00.001+10:00</published><updated>2010-05-19T16:58:54.827+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>How to setup Sharepoint sites for HTTPS</title><content type='html'>&lt;p&gt;Hi guys, I want to share with you a discussion that I’ve participated recently.&lt;/p&gt;  &lt;p&gt;Consider this: you are a a host provider and your company will offer Sharepoint support to the public so they can pay you a monthly fee and then they setup a Sharepoint site with you.&lt;/p&gt;  &lt;p&gt;You go for a simplistic and cheap design. You have IIS, Sharepoint installed, and you create a web application on the port 80. Within this web app you create multiple site collections. They are the sites your clients will have control for their own setups.&lt;/p&gt;  &lt;p&gt;And how do you host multiple websites on the port 80 with a single IP address? Easy. I will use host headers – you say.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/SbPodRO3BWI/AAAAAAAAC-c/0dy2wkwLtng/s1600-h/a%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="a" border="0" alt="a" src="http://lh5.ggpht.com/_embTfvHYYPE/SbPofELtUiI/AAAAAAAAC-g/D3qPiHoxmF4/a_thumb%5B1%5D.jpg?imgmax=800" width="607" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/SbPogjD38LI/AAAAAAAAC-k/jq-1RKDCYr0/s1600-h/b%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="b" border="0" alt="b" src="http://lh5.ggpht.com/_embTfvHYYPE/SbPoiHtNATI/AAAAAAAAC-o/t_LxUtLKQoY/b_thumb%5B1%5D.jpg?imgmax=800" width="593" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And you think: I should be fine. I will setup in away so each client will have their own separate database, they will redirect to the given URL I will provide them and according to the hosting plan I enable disk quotas for each case. For instance, if my client pays me some little money and he is a ’silver client’ I offer them 10MB; if they are ‘platinum client’ and pay me some more I give them 50MB.&lt;/p&gt;  &lt;p&gt;All goes fine and well. You see everybody joining your company, the clients keep coming and your setup is totally independent.&lt;/p&gt;  &lt;p&gt;so, what’s the problem here? &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_embTfvHYYPE/SbPojaIirvI/AAAAAAAAC-s/UpGFLitgYrY/s1600-h/1%5B7%5D.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px; display: inline; border-top: 0px; border-right: 0px" title="1" border="0" alt="1" src="http://lh5.ggpht.com/_embTfvHYYPE/SbPok_Jad-I/AAAAAAAAC-w/9LCvbXFtAU4/1_thumb%5B5%5D.gif?imgmax=800" width="640" height="465" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;You are unable to offer HTTPS in that setup. If one of your clients wants to add a shopping cart area and want it to be secure, you can’t help them with that model.&lt;/p&gt;  &lt;p&gt;The thing is, IIS can not resolve an incoming HTTPS request like that. ISS will hold the request and it is going to ask himself: ok, to which website should I give this request? Unfortunately IIS as of now can not address this question following that setup. Everybody is under the same IP.&lt;/p&gt;  &lt;p&gt;To fix that one of the recommended approaches is to follow the diagram below:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/_embTfvHYYPE/SbPomwJ3yQI/AAAAAAAAC-0/D3lr1hk4bJ0/s1600-h/2%5B8%5D.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="2" border="0" alt="2" src="http://lh4.ggpht.com/_embTfvHYYPE/SbPooFRw_MI/AAAAAAAAC-4/NURZ2mvOb08/2_thumb%5B4%5D.gif?imgmax=800" width="640" height="474" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;On your IIS you will create multiple web applications, then for each web application you will want to give separate IPs and then host sites on these IPs, and then these web applications are the ones you will offer to your clients.&lt;/p&gt;  &lt;p&gt;That’s a little bit more elaborated solution, a little bit more expensive but the gains in scalability will overcome the headaches you might have in the future with an atomic structure that at some point needs to be flexible.&lt;/p&gt;  &lt;p&gt;And on that model IIS can finally then fix the SSL dilemma. Because then you will assign the applications to independent IP addresses on the ISS Manager.&lt;/p&gt;  &lt;p&gt;Sometimes it takes more than a quick and simplistic approach to design a solution if you only know partially the products involved. Once you have the proposed design please be aware of the issues that are basic in the parts involved. In our case, a knowledge of IIS would have avoided a big trouble in the beginning.&lt;/p&gt;  &lt;p&gt;See you later.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-1769077419474439081?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/1769077419474439081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=1769077419474439081&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/1769077419474439081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/1769077419474439081'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2009/03/how-to-setup-sharepoint-sites-for-https.html' title='How to setup Sharepoint sites for HTTPS'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_embTfvHYYPE/SbPofELtUiI/AAAAAAAAC-g/D3qPiHoxmF4/s72-c/a_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-1420005684615658881</id><published>2009-03-04T23:33:00.001+10:00</published><updated>2010-05-19T16:58:54.828+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>Filling the SOA gaps</title><content type='html'>&lt;p align="justify"&gt;Hi guys, &lt;/p&gt;  &lt;p align="justify"&gt;Let's talk architecture again, reference architecture, more &lt;/p&gt;  &lt;p align="justify"&gt;specifically SOA, and how can we map the available products and resources available from Microsoft given a SOA project?&lt;/p&gt;  &lt;p align="justify"&gt;Before I start, let me make a statement here: I will talk this from the Microsoft's point of view, since this is a blog about Microsoft technologies. &lt;/p&gt;  &lt;p align="justify"&gt;In any case, it doesn't matter what's your preferred provider as long as you are able to correctly do the mapping of functionalities to better fit your business' plans, budget and SLA. And just to revisit: SOA is an architecture where the functionalities of existing business applications are exposed and published as services. &lt;/p&gt;  &lt;p align="justify"&gt;And what would be a service? Services are software components that expose application functionalities in a given SOA architecture and they are: &lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;&lt;em&gt;- self-manageable;        &lt;br /&gt;- message-based oriented;         &lt;br /&gt;- can handle and support many protocols;         &lt;br /&gt;- can be published on a myriad of hosts;         &lt;br /&gt;- implement operational contracts, interfaces and message types;&lt;/em&gt;&lt;/strong&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Of course you can design some service that doesn't follow these rules, but let me tell you: Rules are made with a purpose and in our case the purpose is to design a solution where clients and services are highly decoupled, thus paving the way for the reuse of functionalities. One of the goals is to maximize the resource utilization in our project. &lt;/p&gt;  &lt;p align="justify"&gt;I won't talk here about governance, granularity, message routing, service level control etc. I won't go there for it is a much larger topic, so this post is about the technical view. Now, let's make our first diagram given what we've seen so far: &lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/_embTfvHYYPE/Sa6DL2ayHtI/AAAAAAAAC-M/yoOoGirO5XU/s1600-h/1%5B10%5D.gif" target="_blank"&gt;&lt;img title="1" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="226" alt="1" src="http://lh4.ggpht.com/_embTfvHYYPE/Sa6DNIoRixI/AAAAAAAAC-Q/R_fffImXLyg/1_thumb%5B6%5D.gif?imgmax=800" width="500" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;As we can see, we have here the common services of a SOA architecture such as the presentation services, collaboration, systems integration, orchestration services etc. &lt;/p&gt;  &lt;p align="justify"&gt;Looking at this diagram we can identify the aspects that we really want to map in our solution to be successful. Note that in some scenarios sometimes the security is critical, sometimes the orchestration is paramount, sometimes the platform integration is more important. &lt;/p&gt;  &lt;p align="justify"&gt;Now, visualize this filling the gaps with the products that Microsoft has to offer.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_embTfvHYYPE/Sa6DOh3sd-I/AAAAAAAAC-U/JoUqW1gY5DA/s1600-h/2%5B7%5D.gif"&gt;&lt;img title="2" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="219" alt="2" src="http://lh6.ggpht.com/_embTfvHYYPE/Sa6DPt5Ji6I/AAAAAAAAC-Y/ZHKAYkvtIUs/2_thumb%5B3%5D.gif?imgmax=800" width="500" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;An interesting conclusion we can take at first sight is that some products can cross domain frontiers and can handle various capacities at once, such as the Windows Workflow Foundation, which can be used for interoperability services and orchestration at the same time with BizTalk Server. &lt;/p&gt;  &lt;p align="justify"&gt;What's the best option to choose? Well, to be able to see this big picture and to choose the best piece in the puzzle is your job as architect. Unfortunately many architects fall in the problem to overkill the solution. &lt;/p&gt;  &lt;p align="justify"&gt;Also important is to choose not to overkill the solution. Sometimes a simple custom application can fill the gap enough to not require a bigger solution like Windows Workflow Foundation, for example. Otherwise the whole project just becomes harder to handle and to maintain...thus increasing the ROI overtime...and the developers patience. &lt;/p&gt;  &lt;p align="justify"&gt;The message to keep in mind: any good architecture is composed by many capacities. To identify these capacities and which one of them are important for our solution is as critical as choosing the technology provider.&lt;/p&gt;  &lt;p align="justify"&gt;See you later.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-1420005684615658881?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/1420005684615658881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=1420005684615658881&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/1420005684615658881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/1420005684615658881'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2009/03/filling-soa-gaps.html' title='Filling the SOA gaps'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_embTfvHYYPE/Sa6DNIoRixI/AAAAAAAAC-Q/R_fffImXLyg/s72-c/1_thumb%5B6%5D.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-5631239314914342691</id><published>2008-07-12T14:38:00.000+10:00</published><updated>2009-03-14T20:11:57.378+10:00</updated><title type='text'>New home</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div style="text-align: center;" class="flickr-frame"&gt; &lt;a href="http://www.superedge.net" title="www.superedge.net"&gt;&lt;img src="http://weblogs.asp.net/blogs/edgepereira/sydney-opera-house2.jpg" class="flickr-photo" alt="www.superedge.net" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;/div&gt;    &lt;p class="flickr-yourcomment"&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-5631239314914342691?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/5631239314914342691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=5631239314914342691&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/5631239314914342691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/5631239314914342691'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2008/02/new-home.html' title='New home'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-3898766355403045685</id><published>2008-05-07T01:45:00.001+10:00</published><updated>2010-05-19T16:58:54.828+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>File Upload and Canonical Issues</title><content type='html'>&lt;p align="justify"&gt;Never trust the user input. The incoming data can be the source of many devils and a security flaw can be there just waiting for the right moment and the right person to break your application.&lt;/p&gt;  &lt;p align="justify"&gt;After finishing with the upload control I finally did the integration with the website. Now the users can select the files and send it to the website to be processed.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh5.ggpht.com/superedge/SCB9HW3jD_I/AAAAAAAABbI/oPtg2L0_DYo/s1600-h/1%5B6%5D.gif"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="133" alt="1" src="http://lh4.ggpht.com/superedge/SCB9IG3jEAI/AAAAAAAABbQ/6mP14AYyf2k/1_thumb%5B4%5D.gif?imgmax=800" width="336" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;What are the security risks here? Something that can be called 'canonicalization issue'.&lt;/p&gt;  &lt;p align="justify"&gt;For a start all data can be seen on its canonical form. A canonical form is the most simple and most stardard form that any data can be represented, thus canonicalization is the process of converting the data to its canonical form.&lt;/p&gt;  &lt;p align="justify"&gt;Proficient JavaScript programmers are very aware of what I am talking about, and as a matter of fact in our system the user can search for a name using wildcards. So you can ask him: &lt;i&gt;&amp;quot;Retrieve me a list of all the instances where its canonical form includes Bill as mandatory prefix&amp;quot; &lt;/i&gt;The user will probably say: &lt;i&gt;&amp;quot;Retrieve what???&amp;quot;&lt;/i&gt; but if you ask them: &lt;i&gt;&amp;quot;Give me a list of all the users where their names start with Bill&amp;quot;&lt;/i&gt; they will type in the system 'bill*'. The user normally does not know that but he is doing is performing a &lt;i&gt;'type of canonical query'&lt;/i&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;Now, back to our file upload issue. A file name is a very common canonical type. You can call the same file as:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;thairecipes.doc&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;c:\recipes\thairecipes.doc&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;c:\\recipes\\thairecipes.doc&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;c:\&amp;#160;&amp;#160; recipes\thairecipes.doc&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;c:%3A%5Crecipes%5Cthairecipes.doc        &lt;br /&gt;&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;As you probably figured the last one is the issue. Your Windows operating system will recognize the symbols %5C and %3A.&lt;/p&gt;  &lt;p align="justify"&gt;You see now because we are giving to the user the option to save in our system just about any file name he wants to at the same time we are also opening a door for a sort of canonical attack. Remember : Never trust the user. And by user I am not only talking about a person. In our context an user is any entity who uses a given resource or service, and for that matter an user indeed can be another system or another application.&lt;/p&gt;  &lt;p align="justify"&gt;A hacker would think: &amp;quot;how can I break into this site? Does it allow any easy access to any of its resources?&amp;quot;. In our case, yes our website must allow the user to upload files. &lt;/p&gt;  &lt;p align="justify"&gt;What to do now? How to handle a file upload to a web server?&lt;/p&gt;  &lt;p align="justify"&gt;Well, first as a general rule you must not design a website that accept just about any file names created by the user and save it like that. As a matter of fact, any input must be validated and sanitized&amp;#160; if possible, not only in client-side but on the server-side as well. &lt;/p&gt;  &lt;p align="justify"&gt;A better design: Do not allow the user to save the file in the web server with the filename that he wants to use. Accept the file, keep the original filename somewhere and let the application rename that file with another name and then save it. I would suggest you to use a GUID string for that matter. That way you are not only closing the doors for a possible canonical attack but also you do not give a chance to a malicious user to try to find out the filenames you might have in your server. For example, If a hacker knows that there is a file called http:\\mywebsite\mydocs\clientid1\&lt;b&gt;file1.doc&lt;/b&gt; he will try something like http:\\mywebsite\mydocs\clientid1\&lt;b&gt;file2.doc&lt;/b&gt;, and then http:\\mywebsite\mydocs\clientid1\&lt;b&gt;file3.doc&lt;/b&gt; and so on. By using an internal name rule creation you minimize his surface.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/superedge/SCB9JG3jEBI/AAAAAAAABbY/2UWyaE6w8X0/s1600-h/2%5B5%5D.gif"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="248" alt="2" src="http://lh4.ggpht.com/superedge/SCB9KG3jECI/AAAAAAAABbg/xTOfyAorsSg/2_thumb%5B3%5D.gif?imgmax=800" width="491" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Another thing to observe: You don't have to fight against and defeat a malicious user, probably there can be hundreds of hackers trying to break your code and you are just one guy against them &lt;i&gt;( and you don't want to have any sleepless nights during weekends, do you? )&lt;/i&gt; They always find a way to break your code. The best option is to minimize their attack surface. Chances are they are going to move on and concentrate their efforts to break a &amp;quot;weaker website&amp;quot; if your site if strong enough for the first rounds of attack.     &lt;br /&gt;    &lt;br /&gt;These would be some instinctive considerations and additionally I would suggest to take a look at implementing &lt;a href="http://msdn.microsoft.com/en-us/library/aa302423.aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa302423.aspx"&gt;File I/O guidelines&lt;/a&gt; as well. At the end of the day, it all depends about how secure you want to be, how much time you have available to implement it and how rigid the specifications were given.&lt;/p&gt;  &lt;p&gt;See you later.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-3898766355403045685?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/3898766355403045685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=3898766355403045685&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/3898766355403045685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/3898766355403045685'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2008/05/file-upload-and-canonical-issues.html' title='File Upload and Canonical Issues'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/superedge/SCB9IG3jEAI/AAAAAAAABbQ/6mP14AYyf2k/s72-c/1_thumb%5B4%5D.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-5441045761199358662</id><published>2008-04-19T22:14:00.001+10:00</published><updated>2010-05-19T16:58:54.829+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>Uploading files and bubbling events</title><content type='html'>&lt;p align="justify"&gt;This week while I was awaiting for a new project confirmation I saw myself doing some code fixing for another project, that's something quite common and I really don't mind that. One of my tasks was to develop a little page to upload images to a server. That's not a problem, so I decided to try something new. Yes, I was very keen to use &lt;a href="http://www.silverlight.net"&gt;Silverlight&lt;/a&gt; for the task, but I used some good old javascript and a very cool concept similar to the called &lt;a href="http://msdn2.microsoft.com/en-us/library/aa719644(VS.71).aspx"&gt;bubbling events&lt;/a&gt;, which is basically to raise an event from a determined and let it propagate up in the chain until it is captured. &lt;/p&gt;  &lt;p align="justify"&gt;My first idea was : I will create a web user control that can be easily added to a common web page and this guy will pass the list like a &lt;em&gt;bubbled event&lt;/em&gt;. &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/superedge/SAnh7bAXN-I/AAAAAAAABVs/LRscpykO834/s1600-h/1%5B4%5D.gif"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="223" alt="1" src="http://lh5.ggpht.com/superedge/SAnh8LAXN_I/AAAAAAAABV0/fE_x4vHhGsw/1_thumb%5B2%5D.gif?imgmax=800" width="400" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;This control will implement an interface to select and hold a list of files and will be able to send that list to the page and notify the page the list is ready to upload. Let's call it &lt;em&gt;MyUpload&lt;/em&gt; control.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/superedge/SAnh87AXOAI/AAAAAAAABV8/9dyWOnwH_QE/s1600-h/2%5B3%5D.gif"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="109" alt="2" src="http://lh3.ggpht.com/superedge/SAnh9rAXOBI/AAAAAAAABWE/spUTe_wGCPU/2_thumb%5B1%5D.gif?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;being a user control any programmer can then drag and drop this guy to any page and it must be atomic enough to not be too attached to the parent. So it inherits from &lt;a href="http://msdn2.microsoft.com/en-us/library/system.web.ui.usercontrol.aspx"&gt;usercontrol&lt;/a&gt;, and will have, at least for now, 2 methods called upload and a click. Here the things are getting cool. This click event is an &lt;a href="http://msdn2.microsoft.com/en-us/library/edzehd2t.aspx"&gt;event raiser&lt;/a&gt;.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/superedge/SAnh-rAXOCI/AAAAAAAABWM/IFYIrV3F0KM/s1600-h/3%5B3%5D.gif"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="96" alt="3" src="http://lh6.ggpht.com/superedge/SAnh_bAXODI/AAAAAAAABWU/JNQI5gJ5S4I/3_thumb%5B1%5D.gif?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;When a programmer use this control, by calling the click method it will pass the selected file collection to the page. How? sending the list as arguments of the call.&lt;/p&gt;  &lt;p align="justify"&gt;The upload method must then be responsible populate the list and send this list to the caller.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh5.ggpht.com/superedge/SAniALAXOEI/AAAAAAAABWc/OeR8567Jk_Y/s1600-h/4%5B3%5D.gif"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="155" alt="4" src="http://lh4.ggpht.com/superedge/SAniA7AXOFI/AAAAAAAABWk/el2gv-WioAo/4_thumb%5B1%5D.gif?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Once the event is triggered in the webpage this page will loop through the items in the received file list and for each instance I will &lt;em&gt;'save file as...'&lt;/em&gt; and provide the path in the web server directory. This will move the file to the desired location as specified in the document request. &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/superedge/SAniBrAXOGI/AAAAAAAABWs/RRcuJ_L8E3w/s1600-h/5%5B3%5D.gif"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="110" alt="5" src="http://lh6.ggpht.com/superedge/SAniCbAXOHI/AAAAAAAABW0/gPjlE-ePtnM/5_thumb%5B1%5D.gif?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Could I save the files in the database? Yes, I could but all the specs for the task are done and that was the mission. So I won't discuss any matters of&amp;#160; a better solution for this given scenario.&lt;/p&gt;  &lt;p align="justify"&gt;My upload control will have two buttons add and remove files which will be responsible for maintaining the list of files I want to upload. Why is that? because we want to upload a list of files in one shot and not one by one. Indeed, I'll spend more hours implementing this solution but at the end this will be a reusable control and as I said, any other programmers will then just drag and drop it should they need to implement a similar solution. &lt;/p&gt;  &lt;p align="justify"&gt;How do implement the code for add and remove files? That's the most difficult part and requires a good amount of &lt;a href="http://support.microsoft.com/kb/154585"&gt;javascript&lt;/a&gt; knowledge. Just this javascript routine can be subject of a post by itself. For now let's say the control has a private method called &lt;em&gt;buildjavascript&lt;/em&gt; which &lt;a href="http://msdn2.microsoft.com/en-us/library/system.web.ui.page.clientscript(VS.80).aspx"&gt;renders in the page all the javascript methods&lt;/a&gt; necessary to maintain this object list.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/superedge/SAniC7AXOII/AAAAAAAABW8/YvepeTsHkbg/s1600-h/6%5B3%5D.gif"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="115" alt="6" src="http://lh3.ggpht.com/superedge/SAniDrAXOJI/AAAAAAAABXE/lA4sLOsoWkI/6_thumb%5B1%5D.gif?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Returning to our code behind, this list will be a collection and the best way to keep it and pass it by posting is to make it inherit from a very cool and useful class for this situation: the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.web.httpfilecollection(vs.71).aspx"&gt;HttpFileCollection&lt;/a&gt;. &lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh5.ggpht.com/superedge/SAniELAXOKI/AAAAAAAABXM/cuyuMZTx8Jg/s1600-h/7%5B3%5D.gif"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="128" alt="7" src="http://lh4.ggpht.com/superedge/SAniE7AXOLI/AAAAAAAABXU/b9pjFezsuuQ/7_thumb%5B1%5D.gif?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;The upload button in the control will call the upload method which does nothing but raise the event to the page. The page who has the control implements already the method expected to parse the list as an HttpFileCollection object. Now, we only have to save the object as new name, being in a new location.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/superedge/SAniFrAXOMI/AAAAAAAABXc/GEf2NR87loM/s1600-h/8%5B3%5D.gif"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="240" alt="8" src="http://lh6.ggpht.com/superedge/SAniGbAXONI/AAAAAAAABXk/-h5mIdOqe2o/8_thumb%5B1%5D.gif?imgmax=800" width="156" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;My initial design is done and I am doing the javascript side of things. This week was hectic but once things come back to normality and some time is left for me, I will share my code here somewhere.&lt;/p&gt;  &lt;p align="justify"&gt;See you later.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-5441045761199358662?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/5441045761199358662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=5441045761199358662&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/5441045761199358662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/5441045761199358662'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2008/04/uploading-files-and-bubbling-events.html' title='Uploading files and bubbling events'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/superedge/SAnh8LAXN_I/AAAAAAAABV0/fE_x4vHhGsw/s72-c/1_thumb%5B2%5D.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-824808215198786437</id><published>2008-03-03T05:27:00.002+10:00</published><updated>2010-05-19T16:58:54.829+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>Old Memories, Hard Disk</title><content type='html'>&lt;p&gt; &lt;/p&gt;    &lt;p align="center"&gt;&lt;a href="http://lh4.google.com/superedge/R8r_ql476rI/AAAAAAAABTU/e_ppHqH0vOQ/hd%5B2%5D"&gt;&lt;img style="border: 0px none ;" alt="hd" src="http://lh4.google.com/superedge/R8r_rl476sI/AAAAAAAABTc/iTKASLPfWRQ/hd_thumb" border="0" height="202" width="244" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="font-style: italic;" align="center"&gt;Do you remember those days ?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-824808215198786437?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/824808215198786437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=824808215198786437&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/824808215198786437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/824808215198786437'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2008/03/old-memories-hard-disk.html' title='Old Memories, Hard Disk'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-7597124958956707925</id><published>2008-02-20T22:10:00.001+10:00</published><updated>2010-05-19T16:58:54.830+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><category scheme='http://www.blogger.com/atom/ns#' term='funny'/><title type='text'>The Hot Side of the Dark Side of the Force</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_embTfvHYYPE/R7wY_NSTXhI/AAAAAAAABSw/T4gfgbq7knw/s1600-h/lado-negro-da-forca-dark-side-of-the-force.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_embTfvHYYPE/R7wY_NSTXhI/AAAAAAAABSw/T4gfgbq7knw/s400/lado-negro-da-forca-dark-side-of-the-force.jpg" alt="" id="BLOGGER_PHOTO_ID_5169033946491739666" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-7597124958956707925?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/7597124958956707925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=7597124958956707925&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/7597124958956707925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/7597124958956707925'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2008/02/hot-side-of-dark-side-of-force.html' title='The Hot Side of the Dark Side of the Force'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_embTfvHYYPE/R7wY_NSTXhI/AAAAAAAABSw/T4gfgbq7knw/s72-c/lado-negro-da-forca-dark-side-of-the-force.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-5286415942413437824</id><published>2008-02-15T13:43:00.002+10:00</published><updated>2010-05-19T16:58:54.831+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>Stored procedure takes longer run SQL2005 than 2000</title><content type='html'>&lt;img style="float: left;" src="http://www.tctl.co.uk/images/sql%20logo2.gif" /&gt;Here there is something interesting that I would like to share with you guys.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Even thou &lt;a href="http://www.blogger.com/www.microsoft.com/sqlserver"&gt;Microsoft SQL Server 2005&lt;/a&gt; is out for quite some time, it is still common to see people working in projects using Microsoft SQL Server 2000 and often in mixed environments.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;That's the case I want to talk about: The mixed environment, and I am working in a project where some applications have that hybrid configuration.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;So someone told me that my report &lt;a href="http://www.microsoft.com/net/"&gt;developed in .NET 2.0&lt;/a&gt; was running slower than the similar one done in the old fashioned ASP. Of course I denied, just to see later the proof I was wrong.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Yes, the same stored procedure executed from the same page from, in the same machine was running faster in the old environment while it was slower in the new &lt;span style="font-style: italic;"&gt;(and supposedly improved)&lt;/span&gt; environment.  How's that possible? I traced the execution, used the SQL profiler but nothing gave me a good clue. Than I found this in the Microsoft website.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: italic;"&gt;In SQL Server 2000, the execution plan for the query uses an Index Seek operator. In SQL Server 2005, the execution plan for the query uses an Index Scan operator. The optimizer produces an index spool for the Index Scan operation. When you use the FORWARD_ONLY cursor, SQL Server scans the index for every FETCH statement. Each fetch takes a long time. Therefore, the query takes a long time to execute&lt;/span&gt;.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;See that example below:&lt;!-- {\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs16         \cf15 ///\cf11  \cf15 &lt;code&gt;\par ??\cf0         \cf15 ///\cf11  declare @p1 int\par ??\cf0         \cf15 ///\cf11  set @p1=0\par ??\cf0         \cf15 ///\cf11  declare @p3 int\par ??\cf0         \cf15 ///\cf11  set @p3=16388\par ??\cf0         \cf15 ///\cf11  declare @p4 int\par ??\cf0         \cf15 ///\cf11  set @p4=8194\par ??\cf0         \cf15 ///\cf11  declare @p5 int\par ??\cf0         \cf15 ///\cf11  set @p5=0\par ??\cf0         \cf15 ///\cf11  exec sp_cursoropen @p1 output, \cf15 &lt;transact-sql&gt;\cf11  ,@p3 output,@p4 output,@p5 output\par ??\cf0         \cf15 ///\cf11  \cf15 &lt;/code&gt;\par ??} --&gt;&lt;br /&gt;&lt;div    style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-family:Courier New;font-size:8pt;color:black;"&gt;&lt;br /&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   50&lt;/span&gt;         &lt;span style="color:green;"&gt;declare @p1 int&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   51&lt;/span&gt;         &lt;span style="color:green;"&gt;set @p1=0&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   52&lt;/span&gt;         &lt;span style="color:green;"&gt;declare @p3 int&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   53&lt;/span&gt;         &lt;span style="color:green;"&gt;set @p3=16388&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   54&lt;/span&gt;         &lt;span style="color:green;"&gt;declare @p4 int&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   55&lt;/span&gt;         &lt;span style="color:green;"&gt;set @p4=8194&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   56&lt;/span&gt;         &lt;span style="color:green;"&gt;declare @p5 int&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   57&lt;/span&gt;         &lt;span style="color:green;"&gt;set @p5=0&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   58&lt;/span&gt;         &lt;span style="color:green;"&gt;exec sp_cursoropen @p1 output, &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;Transact-SQL statement&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt; ,@p3 output,@p4 output,@p5 output&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;This code will run faster if you are &lt;span style="font-weight: bold;"&gt;NOT &lt;/span&gt;using the .NET 2005 SQL Connectors or running in a SQL Server 2000. Here we are using the &lt;a href="http://msdn2.microsoft.com/en-us/library/Aa172588.aspx"&gt;sp_cursoropen&lt;/a&gt; to open a cursor, then specifying the forward-only option in the parameter list.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;This is a bug you can only experience if you are using a lot of cursor-based stored procedures  from a SQL 2000 to a SQL 2005 environment, and here we have a VERY HIGH cursor usage. &lt;span style="font-style: italic;"&gt;(not that I like them neither I defend its usage, it is just a fact from the environment here)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How to fix this?&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If you do not want to download and apply the patch and want to fix this in the code itself use &lt;span style="font-weight: bold;"&gt;"OPTION (FAST 1)"&lt;/span&gt; in the stored procedure call. That will make it run faster in the SQL 2005 machine. Otherwise download &lt;a href="http://kbalertz.com/Feedback.aspx?kbNumber=946608/LN"&gt;here&lt;/a&gt; and &lt;a href="http://kbalertz.com/Feedback.aspx?kbNumber=937137/LN"&gt;here&lt;/a&gt; the patches.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;See ya later&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-5286415942413437824?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/5286415942413437824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=5286415942413437824&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/5286415942413437824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/5286415942413437824'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2008/02/stored-procedure-takes-longer-run.html' title='Stored procedure takes longer run SQL2005 than 2000'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-6360313296142168932</id><published>2008-02-12T12:47:00.000+10:00</published><updated>2010-05-19T16:58:54.831+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tfs'/><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><category scheme='http://www.blogger.com/atom/ns#' term='team system'/><category scheme='http://www.blogger.com/atom/ns#' term='msf'/><title type='text'>TeamSystem and TFS add-on to Count Lines of Code and Predict Errors</title><content type='html'>&lt;div style="text-align: justify;"&gt;Here another cool thing. From the &lt;a href="http://www.microsoft.com/downloads"&gt;Microsoft download website&lt;/a&gt; you can find this:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: italic;"&gt;"Microsoft IT partnered with Microsoft Research to create a VSTS 2005 extension &lt;span style="font-weight: bold;"&gt;that counts &lt;a href="http://novatecno.blogspot.com/2007/11/safer-code.html"&gt;lines of code&lt;/a&gt; and predicts system defects&lt;/span&gt;. In the software development environment, insight into the volume of code being produced, and the changes applied to that code, provide measurements of productivity and quality.&lt;span style="font-weight: bold;"&gt; The Line of Code (LOC) counter&lt;/span&gt; provides a flexible and extensible framework for automating the LOC counting process."&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Isn't that amazing ? Finally a cool software metric add-on for Team System, and if you wanted another reason to stop using &lt;a href="http://novatecno.blogspot.com/2004/06/versioning-control.html"&gt;SourceSafe &lt;/a&gt;and start using&lt;a href="http://novatecno.blogspot.com/2007/07/start-slow-tfs-and-team-system.html"&gt; Team Foundation System&lt;/a&gt; guess what: It also works with TFS.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;If you use Team System or TFS, &lt;a title="microsoft team system and team foundation server TFS utility to count lines of code and predict bugs" href="http://www.microsoft.com/downloads/details.aspx?familyid=5af387c5-55c7-4bb1-97cd-e3f742de99da&amp;amp;displaylang=en"&gt;get it here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;See you later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-6360313296142168932?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/6360313296142168932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=6360313296142168932&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/6360313296142168932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/6360313296142168932'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2008/02/teamsystem-and-tfs-add-on-to-count.html' title='TeamSystem and TFS add-on to Count Lines of Code and Predict Errors'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-5573690582282101367</id><published>2008-02-07T22:47:00.000+10:00</published><updated>2010-05-19T16:58:54.832+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><category scheme='http://www.blogger.com/atom/ns#' term='meetings'/><title type='text'>How to Make Productive Project Meetings</title><content type='html'>&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://farm3.static.flickr.com/2092/2079782713_e30c5af6ea.jpg" border="0" /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;strong&gt;Project Meetings can be very productives&lt;/strong&gt; but also can be a real waste of time and money. &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;Recently while working on a client where I was responsible to have a project development meeting as meeting coordinator. The group of participants were an heterogeneous group and despite the fact that I did not know some of the atendees, the meeting was a big success.&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;During a conversation on our coffee break I was asked about meetings strategies and how to conduct them. &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;So I am going to share with you guys here what I told them, and what I effectivly did during that particular meeting:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;Every meeting MUST have 3 elements: &lt;strong&gt;purpose, agenda and maximum duration&lt;/strong&gt;. If any of these items is missing, the meeting is meaningless and should not happen.&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;strong&gt;Make sure you are able to define a purpose for the meeting in a maximum of 2 sentences&lt;/strong&gt;, for instance:&lt;em&gt;"This meeting is to plan the new developments for the project X"&lt;/em&gt;. This way, everyone will know why they are there, what needs to be done and how to proceed in order to well-succeed. &lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;strong&gt;Define a clear agenda in advance&lt;/strong&gt;. Make a list of all the items to be discussed, revised, analysed, displayed etc. When I conduct meetings, my personal strategy is to allocate a time limit for each item in the agenda and to assign the responsability to lead the discussion to someone in the group. Works as a charm. &lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;strong&gt;Define a duration for the meeting&lt;/strong&gt;, how many minutes/hours it should last. From the start make crystal clear to everyone what time the meeting will start and, sometimes more importantly, when it will end. It is amazing the number of managers who have absolutely no control of their meetings and do not know how to enforce the finishing rule. If you think you have this habit...CHANGE THIS !!! &lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;strong&gt;Do not wait for the delayed people&lt;/strong&gt;. Meetings must start on the agreeded time. Do not wait about late arrivals. Do not wait for those who need to be called for the meeting. You just make sure everyone gets notified, then when someone arrives after the meeting have started, DO NOT STOP TO REVIEW WHAT WAS SAID. Do this as a proof of respect to those who arrived on time. &lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;strong&gt;If the meeting's organizer is late, Consider the meeting cancelled&lt;/strong&gt;, and get back to work. How long is considered late? Depends on the company, but I would not wait more than 5 minutes. &lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;strong&gt;Document your meeting&lt;/strong&gt;. What I do is to put someone in charge of writing down the notes. What to put in the meeting notes? Basically the name of the attendants, the discussed subject, the agreed points, the next developments and/or actions with dates and their respective responsibles.&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;strong&gt;When the meeting is over - do not wait more than 24 hours - the meeting notes must be sent&lt;/strong&gt; to: All the participants, to those who could not make it to the meeting and to those who might be influenced by upcoming decisions.&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;strong&gt;Keep the focus&lt;/strong&gt;. Every meeting must have a regulator to notify the others when someone is discussing any subject outside the scope of the current topic. Ask one of the presents to volunteer for this task when the meeting is about to start. His/her task is to interrupt the meeting at any given time when the focus is lost and bring back the main subject. This new outside topic can maybe then be noted and even can be discussed in future meetings. In case of doubt regarding a specific topic being in or outside the scope, the meeting organizer has the final word. &lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;I hope these notes can be of any help in your next meetings. If you have any comments or other meetings ideas, please feel free to leave them here and share as well. &lt;/p&gt;&lt;p align="justify"&gt;See ya later.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-5573690582282101367?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/5573690582282101367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=5573690582282101367&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/5573690582282101367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/5573690582282101367'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2008/02/how-to-make-productive-project-meetings.html' title='How to Make Productive Project Meetings'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2092/2079782713_e30c5af6ea_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-40551958564885677</id><published>2007-11-11T22:38:00.001+10:00</published><updated>2010-05-19T16:58:54.833+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>A safer code</title><content type='html'>&lt;div align="center"&gt;&lt;img src="http://farm2.static.flickr.com/1129/1312731004_b7c9f1da40.jpg" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;During my professional career up to now, I had the chance to work with all sorts of developers. From the reasonable to the excellent ones; and talking with some colleagues this week about that fact I have to say, it does not matter how bad or good they were I must say in every case I learnt something good with them. And one thing specially was common in all the cases: how to write a more secure code. &lt;br /&gt;&lt;br /&gt;Which brings me to another point of discussion: how do you measure yourself as a code-writer? do you think you are a good coder? What makes you such a good developer? How do you approach a problem before you start coding? &lt;br /&gt;&lt;br /&gt;And when I stop to think about the last sentence I remember an article I read about making your code safer and a concept I've learned reading the book &lt;em&gt;"Decline and fall of the American programmer" from Edward Yourdon&lt;/em&gt; : The silver bullet. Basically the silver bullet is the only thing that can kill a werewolf, portrayed as a software bug or a business problem, and unfortunately just like this mythical creature there is no silver bullet for the real life issues we face everyday. There is no &lt;em&gt;'exact and single'&lt;/em&gt; solution for our problems.&lt;br /&gt;&lt;br /&gt;So, to &lt;a href="http://novatecno.blogspot.com/2007/04/even-god-reach-out-to-audacious.html"&gt;make you code safer is literally up to you. Nobody else&lt;/a&gt;, therefore excluding the programming language you use. Just because you are using C# it does not means it will be a better product than if you were using Visual Basic 6. OK, it will save you development and release time but just the language won't make your product better or your code safer. Again, only the developer can predict and treat the vulnerabilities.&lt;br /&gt;&lt;br /&gt;And because of this we go to another layer of the development cycle: The design. A better and safer design can do much more for the final product than the language used to develop it. Safer products are a result from safer designs and good code practices.&lt;br /&gt;&lt;br /&gt;It does not matter how good the product is. Once it is released, it can be attacked. No, that's not a sad destiny. As a matter of fact, as a good developer you must find this absolutely normal and expected. I write code with this in mind. Everyday. And even thou the clients tell me: &lt;em&gt;"this is only going to be used within our department"&lt;/em&gt;, I still do not change my mind. It can lead to a little bit longer development time, yes, but the gains in security and stability in the application are far greater.&lt;br /&gt;&lt;br /&gt;So, I do not worry about the securities holes the application might have in a future because the application will run in a new platform and I should have done &lt;em&gt;"this"&lt;/em&gt; instead of &lt;em&gt;"that".&lt;/em&gt; Again: I accept the fact the application one day will be attacked. My biggest concern here is: How my code will behave when it gets attacked?&lt;br /&gt;&lt;br /&gt;So, spend the time you want in improving your code. We should be proud of our coding skills just like a father is proud of his offspring.&lt;br /&gt;&lt;br /&gt;And we know sometimes the parents can be blind about their sons skills and abilities. To avoid this pitfall with your code, ask someone senior to review your code. Meet someone who really knows what's he is talking about and ask him to review your work.&lt;br /&gt;&lt;br /&gt;If this person is really good, I have two words of advice for you: Be humble and prepare yourself. Asking someone to review your work can be an amazing learning experience about yourself and the way you see the problems.&lt;br /&gt;&lt;br /&gt;Remember what I mentioned: you always can learn something new, from the good and from the not so good. This is a big lesson from life to those who have an open mind to learn.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-40551958564885677?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/40551958564885677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=40551958564885677&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/40551958564885677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/40551958564885677'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2007/11/safer-code.html' title='A safer code'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm2.static.flickr.com/1129/1312731004_b7c9f1da40_t.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-9149695189594333400</id><published>2007-09-15T20:00:00.000+10:00</published><updated>2010-05-19T16:58:54.834+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>Fix Visual Studio 2005 Slow Start</title><content type='html'>&lt;div align="center"&gt;&lt;img alt="Microsoft Visual Studio 2005" src="http://msdn2.microsoft.com/en-us/teamsystem/bb381620.header.gif" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;If you are, like me, a heavy user of &lt;a href="http://msdn2.microsoft.com/en-us/vstudio/aa973782.aspx"&gt;Microsoft Visual Studio 2005&lt;/a&gt;, chances are that you have experienced at some point a very slow application start. Once my visual studio 2005 was taking about 30 seconds just to load the interface.&lt;br /&gt;&lt;br /&gt;After some good research, I could find a very interesting point: my visual studio was referencing a solution that I haven't worked in the last 8 months. Going deep on this, I saw this registry key:&lt;br /&gt;&lt;strong&gt;HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\ProjectMRUList&lt;/strong&gt; &lt;em&gt;(MRU stands for "Most Recently Used")&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;If you have never touched this key via any regedit application, chances are that it is holding the last 20 projects you worked using VS 2005, and it does not matter how many are listed in your MRU list in your&lt;em&gt; "File menu".&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Why does Visual Studio 2005 saves the last 20 projects even thou I choose to save only the last 5 ones is still a a mistery.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;So, happens that some of the solutions in my list were pointing to remote drives that I do not access anymore, thus creating this delay when loading Visual Studio.&lt;br /&gt;&lt;br /&gt;To fix that I simply deleted the values for this key and it is all good now. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-9149695189594333400?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/9149695189594333400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=9149695189594333400&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/9149695189594333400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/9149695189594333400'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2007/09/fix-visual-studio-2005-slow-start.html' title='Fix Visual Studio 2005 Slow Start'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-1557428056354910491</id><published>2007-09-13T23:56:00.001+10:00</published><updated>2010-05-19T16:58:54.835+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>Even God reach out to the Audacious</title><content type='html'>&lt;div align="center"&gt;&lt;a href="http://tinyurl.com/cjc2do"&gt;&lt;img src="http://tinyurl.com/cjc2do" width="500px" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;Yes, this is something for us to think about. Even God reach out for the audacious ones.&lt;br /&gt;Among the many lessons I have learn in this life, here it is a very important one: &lt;strong&gt;Face the reality, nobody will/can do anything for you unless yourself.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Every single thing you conquer in this life, is directly related to what you do or don't do. Nothing is sacred. Absolutely everything in this life can be changed for better or for worse at anytime you want.&lt;br /&gt;&lt;br /&gt;Those who take ownership of their acts, those who assume the responsibilities of their actions are the real winners in this life. Winners face all the challenges, even during those times when there are no guarantees of success. &lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;Based on that, I would like to share with you the one of the best declarations of self-love, self-esteem, conviction and willing to win I've seen in a long time: &lt;em&gt;&lt;strong&gt;"The traditional way to face the outer space exploration has been to carry all the fuel needed to bring the astronauts back in case of an emergency or when something goes wrong; but in order to reach out further in the vast space, we must be audacious. This first audacious expedition team needs to travel to the Moon without the fuel to return back to Earth; So, they must be able to produce their necessary fuel there, on the Moon.&lt;br /&gt;Sounds crazy, but we can do this in 7 years, and I intend to lead this expedition.&lt;br /&gt;There was a time when people did audacious things to expand new frontiers. Unfortunately, as a whole, it seems that we forgot those days and how to do this. Today, we live in a moment where we need to be audacious again." - words from Bill Stone, Explorer.&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;When I saw this man talking about these things, I confess shivers crossed my spine. To get inside a space shuttle heading to the moon without the fuel to return?!!! That's crazy!&lt;br /&gt;&lt;br /&gt;And once again, this brings back the &lt;a href="http://novatecno.blogspot.com/2006/08/gift-of-risk.html"&gt;idea of the fear and the risk&lt;/a&gt;. We need it to feel alive. Without it, we are just robots, or like plants in a jar.&lt;br /&gt;&lt;br /&gt;In this world sometimes we are so full of ourselves, our cars, our dream houses, our status, our jobs and our titles, our fancy mobiles, our nice looking ties, our web systems with our strong passwords, that when someone comes out with such a simple concept and at the same time so unbearable, this one person breaks all the mediocrity, all the plastic convictions that we learn from the TV shows and shows us what is the reality of things.&lt;br /&gt;&lt;br /&gt;The beauty of Bill's speech goes beyond the courage to risk. The beauty is that he is taking ownership of the risks and the challenges of it. He is being his own lab mouse. If someone have to risk anything for what I believe, let it be me; if someone have to die for anything I believe, let it be me; take your life according to your own convictions, never ask someone to do something that you would not do it yourself, do not explore others, do not bet on someone's head, do not step on nobody's toes, do not take advantage of the other's weaknesses; pay all your taxes, never ask someone to bring you a cup of water, stand up and go get it yourself; drink your own wine; use your own products; be the customer of your own company; challenge all the Gods, because if any of those Gods really exists, he/she would expect you to be fearless, audacious, untamed and not a couch potato with a remote control in one hand and a can of nutella in the other; &lt;strong&gt;This God would expect you to be unbearable, to see you in the unknown, in the darkness searching for a new light, breaking new grounds&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Yeah, you probably have heard something like:&lt;em&gt;” it is being hard to bring my ideas from the paper to the reality"&lt;/em&gt;. Pure non sense!! I've never met no one who haven't written his ideas on a paper and did not try them in a real life scenario; but in other hand, I know hundreds who never tried their own cool ideas simply because they never tried to write them down on paper first.&lt;br /&gt;&lt;br /&gt;How would you know what to do, when to do, how to do, why to do, what comes first, what comes last, if you keep saving these ideas for yourself only?&lt;br /&gt;&lt;br /&gt;I know...you are too busy, the projects consume too much of your time etc. but again, if you don't do it, who will do it for you? Stand up! get you own cup of coffee! Remember?&lt;br /&gt;&lt;br /&gt;Are you ready to get on board on a travel to the unknown and find your way out once there? Remember, you have only this life to try it. Do your best. Think about it.&lt;br /&gt;&lt;br /&gt;See you all. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-1557428056354910491?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/1557428056354910491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=1557428056354910491&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/1557428056354910491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/1557428056354910491'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2007/04/even-god-reach-out-to-audacious.html' title='Even God reach out to the Audacious'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-3844631006637206838</id><published>2007-09-07T01:07:00.000+10:00</published><updated>2010-05-19T16:58:54.835+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>What is Marketing ?</title><content type='html'>&lt;div align="center"&gt;&lt;img alt="iPod marketing share" src="http://farm1.static.flickr.com/26/41419570_fd95e06dc9.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Dear friends, today Apple released to the market the brand new iPod. Speaking of business, the iPod is such a extraordinary creation that no one could see it coming a few year ago and reaching the levels they are today and its relevance in the world market. The iPod created a brand new market for itself, and its market share is just amazing. To have an iPod today is to have status. Apple really did it, again.&lt;/div&gt;&lt;br /&gt;But not always was like that. So let me tell you a story.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;---- --- -- -&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;The year was 1997. &lt;strong&gt;Steve Jobs&lt;/strong&gt;, who was previously fired from the company he created with a friend, was called back to Apple with a mission to rescue the company from the certain death. Once he got there, one of the first things he did, he fired the company who used to produce Apple's marketing campaigns and immediately put up Apple's marketing account up for grabs. &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;Mr. Jon Steel, owner of one of the agencies crazy to get such a big client, remember the exact moment when he met Jobs. According to his words, it was something like that: &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;em&gt;"Me and my partner were almost 2 hours inside this huge meeting room with 2 others Apple's executives. Then Jobs came in. He literally broke the amazingly boring presentation we were watching. Those 2 guys were doing a presentation about Apple's history, profile, the "win-win" ideology, the key factors for success inside the company, Apple's vast portfolio, investment plans, yada yada yada. &lt;/em&gt;&lt;/div&gt;&lt;br /&gt;&lt;em&gt;Jobs briefly greeted us and then came straight away, without even turning his head towards the actual Apple's executives. He said:&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;em&gt;- I am 100% sure this beautiful talk that you guys just heard from the "dynamic duo" here is all crap. So, here is the deal: The Apple is about to break. We are going for bankruptcy! but I believe that if we can make 2 or 3 things very well done, things with world class appeal, we will manage our way out of this. During the last days I rejected 11 projects that were presented to me, only 2 were left: &lt;strong&gt;called G4 and iMac&lt;/strong&gt;. For me, they are the ONLY projects capable to represent what we want this company to become: Technologically superb, visually fantastic. And I will bet Apple's future on them.&lt;/em&gt;&lt;/div&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;em&gt;We left the meeting with all the ideas from Jobs himself. A few days later, we got the news that the "dynamic duo" had been fired later that same day.”&lt;/em&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;---- --- -- -&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;Well, my point is. What is marketing for you? Let's call this case the &lt;em&gt;"Marketing 1.0".&lt;/em&gt; Until mid-90s, that was the kind of marketing that trashed companies around the world, with those companies mission statements, with empty messages, boring...but very well formatted. Nowadays, this marketing does not deserve any of our attention anymore. &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;Sometimes I think some &lt;em&gt;"marketing people"&lt;/em&gt; are trying to make a &lt;em&gt;"cartel", a "gang".&lt;/em&gt; This gang would be made of their cool-other-marketing-creative-friends-from-other-companies, they create large campaigns based on repetition-repetition-repetition-repetition of the same campaigns of the past, just because there is a saying in this niche: You have to publish 10 times the same campaign, so the client will pay attention to the message. Just like those crazy rug sellers on the TV screaming every 0.5 seconds the prices out loud, treating us at home as deaf or blind consumers.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;I say, that's rubbish! We can do better than this! They MUST do better than this!&lt;br /&gt;&lt;br /&gt;That's why the &lt;strong&gt;Marketing 2.0&lt;/strong&gt; is coming powerful in the Internet age. Now, you can see very funny, creative, innovative campaigns from the Internet itself. And guess who created them? teenagers, retired people, even people who never worked with marketing before. The media revolution gave them power so other can see and tell: Hey, those guys are really cool! And they never went to those marketing schools to learn those same-same marketing laws.&lt;br /&gt;&lt;br /&gt;Right now, the main problem of the Marketing 2.0 is the ROI, or the lack of it. It still does not have metrics, it still does not give us better "leads" for new businesses, they still do not have a strategy to align the field vendors and the employees using several communication pipes online and offline. &lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;And that's going to be just a matter of time, and then one day those guys and this new marketing era will be able to predict entire product forecasts and compose projects budgets with efficiency. And in a new way!&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;The marketing 1.0 will be dead then; and with it, those who were not able to pick up the pace.&lt;br /&gt;&lt;br /&gt;If you are a marketeer, and you like your job, think about it. What would Jobs tell about you in your next PowerPoint presentation? Would he interrupt you ? Would he support you?&lt;br /&gt;&lt;br /&gt;And then, comes the Demand 2.0.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;We should concentrate our business efforts in the clients, but those with the highest chances to turn from formal proposals to real contracts. To real money. Use the marketing 2.0 to collect, Analise the market and then create customized approaches. Now, speak clearly what is the BEST reason why this client would want to make business with you or to buy your product. When talking to the bosses, be straight, be business-oriented, goal-oriented. Stop selling only for your regular buyer.&lt;br /&gt;&lt;br /&gt;Discover what does the client wants, what other problems they have. Attack them! Now share those ideas with those who can help to find a solution. Which bring another point: surround yourself of good people. good soldiers. DON'T LET THEM GO to another company. &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;Transform your website in a portal that educates the visitor about how you can help them, what solutions do you have, what problems can you solve. Place there you most successful cases. Make a blog. Let others now that your company is a good one for work, in an open-shared environment where ideas flow.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;Start selling your product before the client is ready to buy!&lt;br /&gt;&lt;br /&gt;Yes, the end of the Marketing 1.0 is near and it is coming. Throw away the old myths, open space for the new. The Marketing 2.0 is right here, right now.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;Let's share ideas. I can share mine with you as well. If you don't share, how would we exchange and grow? if not here, where? if not now, when?&lt;/div&gt;&lt;br /&gt;Think about it. See you guys later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-3844631006637206838?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blogspot.com/feeds/3844631006637206838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7250242&amp;postID=3844631006637206838&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/3844631006637206838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7250242/posts/default/3844631006637206838'/><link rel='alternate' type='text/html' href='http://novatecno.blogspot.com/2007/09/what-is-marketing.html' title='What is Marketing ?'/><author><name>blog da scarlet</name><uri>http://www.blogger.com/profile/05922234548510879781</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/_embTfvHYYPE/SX541AZqLVI/AAAAAAAAC2I/rdpHbWPljyI/S220/DSC_0056.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm1.static.flickr.com/26/41419570_fd95e06dc9_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7250242.post-115518885600882931</id><published>2007-08-31T01:14:00.000+10:00</published><updated>2010-05-19T16:58:54.838+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='brisbane'/><title type='text'>The Risk</title><content type='html'>&lt;div align="center"&gt;&lt;img src="http://farm1.static.flickr.com/124/410523258_cd42014c41.jpg" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Last night I had a conversation with some new friends here in the &lt;strong&gt;Beautiful&lt;/strong&gt; &lt;strong&gt;Australia&lt;/strong&gt; and I would like to share something with you guys to reflect upon:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;"Those people you see, on the National Geographic or Discovery Chanel, who try to reach the top of the Everest, are they crazy or what ?" &lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Now, picture this. For many decades, many men and women have tried... and there, they lost their lives. As a matter of fact, most of these people were not even able to return to their loved ones. &lt;strong&gt;Despite this tragic statistic, more and more people tried&lt;/strong&gt;... risking... knowing that they probably will die during this journey, leaving family, children, wives behind.&lt;br /&gt;&lt;br /&gt;So, &lt;em&gt;why they still did/do this ?&lt;/em&gt; &lt;strong&gt;Because it was worth it doing it. In the very risk, a transformation happens in you, something is born inside you&lt;/strong&gt;. No other experience can give you this. It only can be developed in the risk. That's the beauty of risk.&lt;br /&gt;&lt;br /&gt;So, here we are, talking about the idea of &lt;em&gt;"live your live to the most"&lt;/em&gt;, no regrets, no looking back.&lt;br /&gt;&lt;br /&gt;Then another question arise: &lt;em&gt;"Can you remember when did you feel most alive?"&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;For some, it was when they managed to speak a second language for first time, for others was when they first did bungie-jumping in New Zealand or Switzerland, for others was when their first child was born.&lt;br /&gt;&lt;br /&gt;Now, if you remember &lt;em&gt;"your special moment"&lt;/em&gt;, I bet a shiver will run through your spine and your heartbeat increase. If I ask you to describe this feeling, you will be talking about this moment, proud of yourself and about how cool was it.&lt;br /&gt;&lt;br /&gt;I can almost tell a pattern where people will :&lt;br /&gt;&lt;br /&gt;&lt;em&gt;- Talk about &lt;strong&gt;a scenario in which the risk pushed themselves &lt;/strong&gt;out of their comfort zone and;&lt;br /&gt;- The outcome of the risk is not the main goal, instead &lt;strong&gt;the journey is what they remember most&lt;/strong&gt; and;&lt;br /&gt;- They &lt;strong&gt;finish the story with a big smile &lt;/strong&gt;and sparkling eyes. &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;So, there it goes. Think again about that first question I mentioned. Now, my idea is that the beauty of the risk doesn't lie in the final result - it lies in &lt;strong&gt;who you become in the process&lt;/strong&gt;. Confident. Engaged. Alive. I risk to say more: this is not something you do every summer&lt;br /&gt;- it becomes a habit, and it can be contagious. It gives you a new approach to life. After doing it, your life is just not the same anymore, otherwise you will feel stagnant, bored.&lt;br /&gt;&lt;br /&gt;So, just like that famous question:&lt;em&gt;"when was the last time you did something for the first time?"&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;See you all later! &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7250242-115518885600882931?l=novatecno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://novatecno.blo
