<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Wictor Wilén</title><link>http://www.wictorwilen.se/</link><description>The blog of Wictor Wilén</description><language>en-us</language><image><link>http://www.wictorwilen.se/</link><url>http://www.wictorwilen.se/images/wwicon_32.png</url><title>Wictor Wilén</title></image><copyright>Copyright 2006-2009, Wictor Wilén</copyright><managingEditor>wictor@wictorwilen.se (Wictor Wilén)</managingEditor><generator>WW</generator><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
      <atom:name>wictor@wictorwilen.se (Wictor Wilén)</atom:name>
    </atom:author><cf:listinfo xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005"> 
      <cf:sort label="Date" element="pubDate" default="true" data-type="date" />
      <cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" />
      <cf:sort element="title" label="Title" data-type="text" />
      <cf:group element="category" label="Category/tag" />
    </cf:listinfo><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/WictorWilen" type="application/rss+xml" /><feedburner:emailServiceId>WictorWilen</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Microsoft publishes three posters on upgrading to SharePoint 2010</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/rAi7EA1L_N0/Microsoft-publishes-three-posters-on-upgrading-to-SharePoint-2010.aspx</link><category>SharePoint</category><category>SharePoint 2010</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Sun, 18 Oct 2009 17:11:33 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Microsoft-publishes-three-posters-on-upgrading-to-SharePoint-2010.aspx</guid><description>&lt;p&gt;Just hours before the &lt;a href="http://sharepoint.microsoft.com/" target="_blank"&gt;SharePoint&lt;/a&gt;&amp;#160;&lt;a href="http://www.mssharepointconference.com/Pages/default.aspx" target="_blank"&gt;Conference 2009&lt;/a&gt; starts in Vegas, and all information will flood out from the conference, blogs and twitter, &lt;a href="http://www.microsoft.com" target="_blank"&gt;Microsoft&lt;/a&gt; released &lt;strike&gt;three&lt;/strike&gt; four posters that should help you in planning and updating your SharePoint 2007 installation to SharePoint 2010.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=e8b66eb3-27c7-4a39-a2e1-3e7d18b12ee1" target="_blank"&gt;Microsoft SharePoint Server 2010 Upgrade Approaches&lt;/a&gt; (&lt;em&gt;added since original posting&lt;/em&gt;)   &lt;br /&gt;Visually describes the different upgrade approaches&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=eef6f604-9faa-4ea8-b000-569c656b7420#tm" target="_blank"&gt;Microsoft SharePoint Server 2010 Upgrade Planning&lt;/a&gt;   &lt;br /&gt;Takes you through how to upgrade hardware and software on your servers. Shows the available upgrade paths.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=d7389d9f-f70f-4226-89aa-a96a05a497f0#tm" target="_blank"&gt;Microsoft SharePoint Server 2010 — Test Your Upgrade Process&lt;/a&gt;   &lt;br /&gt;How to set up a test farm and then install your customizations, copy data and review the results.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=8a6ce527-1ac3-4642-bd04-5e93efc364f6#tm" target="_blank"&gt;Microsoft SharePoint Server 2010 — Services Upgrade&lt;/a&gt;   &lt;br /&gt;Perhaps the most exciting poster of them all with information on how to do an in-place upgrade of the Shared Service Providers in 2007 and how these services work in 2010.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/Microsoftreleasesthree_80E7/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Service comparison of 2007 and 2010" border="0" alt="Service comparison of 2007 and 2010" src="http://www.wictorwilen.se/WindowsLiveWriter/Microsoftreleasesthree_80E7/image_thumb.png" width="244" height="126" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;They are all a good read and should be printed by all SharePoint admins out there...&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-104AnYchqD2Cf4Zi3h1v_45zZw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-104AnYchqD2Cf4Zi3h1v_45zZw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-104AnYchqD2Cf4Zi3h1v_45zZw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-104AnYchqD2Cf4Zi3h1v_45zZw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=rAi7EA1L_N0:PlokYRRTeAg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=rAi7EA1L_N0:PlokYRRTeAg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=rAi7EA1L_N0:PlokYRRTeAg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=rAi7EA1L_N0:PlokYRRTeAg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=rAi7EA1L_N0:PlokYRRTeAg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=rAi7EA1L_N0:PlokYRRTeAg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=rAi7EA1L_N0:PlokYRRTeAg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=rAi7EA1L_N0:PlokYRRTeAg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/rAi7EA1L_N0" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-10-19 00:11:33Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-10-19 00:11:33Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=504</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Microsoft-publishes-three-posters-on-upgrading-to-SharePoint-2010.aspx</feedburner:origLink></item><item><title>Last Service Pack for PerformancePoint Server 2007 is out</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/B4KrmZ7ly7A/Last-Service-Pack-for-PerformancePoint-Server-2007-is-out.aspx</link><category>SharePoint</category><category>SharePoint 2010</category><category>Performance Point</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Thu, 15 Oct 2009 07:25:30 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Last-Service-Pack-for-PerformancePoint-Server-2007-is-out.aspx</guid><description>&lt;p&gt;The long awaited service pack for &lt;a href="http://www.microsoft.com/business/performancepoint/" target="_blank"&gt;PerformancePoint Server 2007&lt;/a&gt; is now released to the web - Service Pack 3. This is the last service pack for PerformancePoint Server since the PerformancePoint Server bits will from &lt;a href="http://www.mssharepointconference.com/Pages/default.aspx" target="_blank"&gt;next week&lt;/a&gt; be turned into PerformancePoint Services in &lt;a href="http://sharepoint.microsoft.com/" target="_blank"&gt;SharePoint&lt;/a&gt; 2010.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/LastServicePackforPerformancePointServer_146C5/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="PerformancePoint Server 2007" border="0" alt="PerformancePoint Server 2007" src="http://www.wictorwilen.se/WindowsLiveWriter/LastServicePackforPerformancePointServer_146C5/image_thumb.png" width="467" height="55" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Service Pack 3 is the last update to the standalone version of PerformancePoint, which was &lt;a href="http://blogs.msdn.com/bi/archive/2009/01/23/microsoft-bi-strategy-update.aspx" target="_blank"&gt;announced in January this year&lt;/a&gt; when &lt;a href="http://www.microsoft.com" target="_blank"&gt;Microsoft&lt;/a&gt; changed their BI strategy. After this update Microsoft will not invest any further into the 2007 version and as you hopefully are aware of - the Planning module will not exist in the upcoming 2010 version. The Planning module is instead offered as source code - now called the &lt;a href="http://blogs.msdn.com/bi/archive/2009/06/18/financial-planning-accelerator-announced.aspx" target="_blank"&gt;&lt;em&gt;Financial Planning Accelerator&lt;/em&gt;&lt;/a&gt;, so that you can safely still use any investments in the Planning Module.&lt;/p&gt;  &lt;p&gt;You can grab the bits here: &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=90c596a5-aca4-4ded-9072-facf834bc0c6#tm" target="_blank"&gt;32-bit&lt;/a&gt; and &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=3AD75AE5-D2CD-4953-87CF-5F74D79804C6&amp;displaylang=en" target="_blank"&gt;64-bit&lt;/a&gt;. Documentation on the different upgrade scenarios can be &lt;a href="http://technet.microsoft.com/en-us/library/cc514367.aspx" target="_blank"&gt;found on Technet&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;So far the &lt;a href="http://support.microsoft.com/kb/975250" target="_blank"&gt;KB (975250) article&lt;/a&gt; on what's changed and updated is not live. Some things have popped up on Technet though, such as a &lt;a href="http://technet.microsoft.com/en-us/library/bb838784.aspx" target="_blank"&gt;updated importsecurity command&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DT_YSLLuq0PQR5XLpr5IjD0ovrI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DT_YSLLuq0PQR5XLpr5IjD0ovrI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DT_YSLLuq0PQR5XLpr5IjD0ovrI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DT_YSLLuq0PQR5XLpr5IjD0ovrI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=B4KrmZ7ly7A:dF-iF7rKNao:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=B4KrmZ7ly7A:dF-iF7rKNao:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=B4KrmZ7ly7A:dF-iF7rKNao:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=B4KrmZ7ly7A:dF-iF7rKNao:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=B4KrmZ7ly7A:dF-iF7rKNao:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=B4KrmZ7ly7A:dF-iF7rKNao:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=B4KrmZ7ly7A:dF-iF7rKNao:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=B4KrmZ7ly7A:dF-iF7rKNao:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/B4KrmZ7ly7A" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-10-15 14:25:30Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-10-15 14:25:30Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=503</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Last-Service-Pack-for-PerformancePoint-Server-2007-is-out.aspx</feedburner:origLink></item><item><title>Useful Delegate Controls in Windows SharePoint Services 3.0</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/1LgjQzFmBgA/Useful-Delegate-Controls-in-Windows-SharePoint-Services-30.aspx</link><category>SharePoint</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Wed, 07 Oct 2009 05:18:50 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Useful-Delegate-Controls-in-Windows-SharePoint-Services-30.aspx</guid><description>&lt;p&gt;Delegate Controls in &lt;a href="http://sharepoint.microsoft.com/" target="_blank"&gt;SharePoint&lt;/a&gt; is a blessing when you are customizing the features and interface of SharePoint. The Delegate Controls are areas in the out-of-the-box SharePoint pages where you are allowed to inject your own controls. This is heavily used by &lt;a href="http://www.microsoft.com" target="_blank"&gt;Microsoft&lt;/a&gt; Office SharePoint Server 2007, which essentially is a set of features on top of Windows SharePoint Services. For example the standard WSS user information page redirects to the MOSS My Site, this redirection is done by inserting a delegate control into a specific delegate control on the userdisp.aspx page. This nifty delegate control can be used in a WSS solution when you want to create a custom profile page, without modifying any of the OOB files and easily reverts to it's original state when you deactivate the feature.&lt;/p&gt;  &lt;p&gt;Read more about &lt;a href="http://msdn.microsoft.com/en-us/library/ms463169.aspx" target="_blank"&gt;Delegate Controls here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;There are several places where you can inject your own code, and very few of them are documented, hence this blog post, which has lived as a OneNote page for me for some time. This is not a complete reference, but contains the most important (imho) delegate controls.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="600"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="234"&gt;&lt;strong&gt;AdditionalPageHead&lt;/strong&gt;           &lt;br /&gt;&lt;em&gt;(allows multiple)&lt;/em&gt;&lt;/td&gt;        &lt;td valign="top" width="366"&gt;Exists in all the default master pages and allows you to insert controls in the head element of the page.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="234"&gt;&lt;strong&gt;SmallSearchInputBox&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="366"&gt;The search input box present on all pages. WSS automatically adds the searcharea.ascx control here. MOSS replaces this one with the MOSS Search input box&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="234"&gt;&lt;strong&gt;GlobalSiteLink0&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="366"&gt;Exists in the default.master. MOSS uses this one to publish the variations menu&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="234"&gt;&lt;strong&gt;GlobalSiteLink1&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="366"&gt;Exists in the default.master. MOSS uses this one to add the link to My Site&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="234"&gt;&lt;strong&gt;GlobalSiteLink2&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="366"&gt;Exists in the default.master. MOSS uses this one to publish the My Links feature&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="234"&gt;&lt;strong&gt;CentralAdminLeftNavBarTop&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="366"&gt;Used in Central Admin by MOSS. Located in the top of the Quick Launch&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="234"&gt;&lt;strong&gt;DelctlCreateSiteCollectionPanel&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="366"&gt;Exists on the create site collection page and used by MOSS to insert the categorization of Site Collections.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="234"&gt;&lt;strong&gt;DelctlCreateSitePanel1&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="366"&gt;Same as above but when creating Sites&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="234"&gt;&lt;strong&gt;DelctlProfileRedirection&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="366"&gt;Exists on the userdisp.aspx page. MOSS uses this one to redirect user the the MySite.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Do you have any favorite Delegate Controls?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HEFwESuQiz1HaoJ-ZsnGvkMeTrw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HEFwESuQiz1HaoJ-ZsnGvkMeTrw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HEFwESuQiz1HaoJ-ZsnGvkMeTrw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HEFwESuQiz1HaoJ-ZsnGvkMeTrw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=1LgjQzFmBgA:jcrjlAbDLyQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=1LgjQzFmBgA:jcrjlAbDLyQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=1LgjQzFmBgA:jcrjlAbDLyQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=1LgjQzFmBgA:jcrjlAbDLyQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=1LgjQzFmBgA:jcrjlAbDLyQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=1LgjQzFmBgA:jcrjlAbDLyQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=1LgjQzFmBgA:jcrjlAbDLyQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=1LgjQzFmBgA:jcrjlAbDLyQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/1LgjQzFmBgA" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-10-07 12:18:50Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-10-07 12:18:50Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=502</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Useful-Delegate-Controls-in-Windows-SharePoint-Services-30.aspx</feedburner:origLink></item><item><title>How to export and reuse the Data View Web Part</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/zJ5pez_cblY/How-to-export-and-reuse-the-Data-View-Web-Part.aspx</link><category>SharePoint</category><category>Web Parts</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Fri, 02 Oct 2009 20:07:04 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/How-to-export-and-reuse-the-Data-View-Web-Part.aspx</guid><description>&lt;p&gt;Inspired by the latest &lt;a href="http://www.sharepointpodshow.com/" target="_blank"&gt;SharePoint PodShow&lt;/a&gt; topic; &lt;a href="http://www.sharepointpodshow.com/archive/2009/09/29/the-sharepoint-data-view-web-part-episode-31.aspx"&gt;The SharePoint Data View Web Part-Episode 31&lt;/a&gt; and &lt;a href="http://www.sharepoint911.com/blogs/laura/" target="_blank"&gt;Laura Rogers&lt;/a&gt; post on building a &lt;a href="http://www.sharepoint911.com/blogs/laura/archive/2009/10/02/your-very-own-permissions-dashboard.aspx" target="_blank"&gt;permissions dashboard&lt;/a&gt; I just had to write this post. In the last paragraph Laura quickly mentions how you can reuse the created Data View Web Part. I think this is really important to know how to export and import this Web Part. What I don't want people to do is to fire up &lt;a href="http://sharepoint.microsoft.com/" target="_blank"&gt;SharePoint&lt;/a&gt; Designer and create these Data View Web Parts in the production environment so that the pages get's unghosted or customized. Also when you are working with solutions packages and features to deploy your applications in environments it's necessary to know how to do this.&lt;/p&gt;  &lt;h3&gt;Exporting&lt;/h3&gt;  &lt;p&gt;Once you have created and finalized your Data View Web Part in your development environment or sandbox, then you can export your customizations. This is the same for all kinds of Web Parts, as long as they allow exporting. When you export a Web Part through the web interface you will get a .webpart file (&lt;a href="http://www.wictorwilen.se/Post/Web-Part-Properties-part-3-the-webpart-file.aspx" target="_blank"&gt;read earlier published post on this&lt;/a&gt;), containing all the properties and metadata specified for the Web Part.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/HowtoexportandreusetheDataViewWebPart_96A5/image_2.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="Export..." border="0" alt="Export..." align="right" src="http://www.wictorwilen.se/WindowsLiveWriter/HowtoexportandreusetheDataViewWebPart_96A5/image_thumb.png" width="200" height="121" /&gt;&lt;/a&gt; Just open the Web Part menu on the Web Part and select &lt;em&gt;Export...&lt;/em&gt; to export the Web Part. You will be prompted for a location to save the file.&lt;/p&gt;  &lt;p&gt;Once you saved it you will have a nnn.webpart file on your disk, which essentially is an XML file with the metadata.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Your exported Web Part will contain the exact properties as you specified in your original location. For example if you connected to it to a list this list id will not be present in the location where you import it. So before importing it you might have to change some values in the .webpart file or at least edit the properties of the Web Part after uploading it.&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;Importing to the Web Part Gallery&lt;/h3&gt;  &lt;p&gt;If you have created a Data View Web Part that you will reuse many times throughout a Site Collection it might be worth uploading it to the Web Part Gallery. Just go to the Site Settings and then the Web Part Gallery and select Upload and upload your .webpart file. After this your Web Part is available for all authors to use.&lt;/p&gt;  &lt;h3&gt;Importing to a page&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/HowtoexportandreusetheDataViewWebPart_96A5/image_4.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="Advanced Web Part gallery options" border="0" alt="Advanced Web Part gallery options" align="right" src="http://www.wictorwilen.se/WindowsLiveWriter/HowtoexportandreusetheDataViewWebPart_96A5/image_thumb_1.png" width="263" height="100" /&gt;&lt;/a&gt; Importing the Web Part is not that difficult, though it can be hard to find where to do it. To import the Web Part, go to the page where you want to insert it and edit the page and then choose to add a new Web Part. Then you have to select &lt;em&gt;Advanced Web Part gallery options&lt;/em&gt;, located in the lower right corner. When the page is re-loaded click on the &lt;em&gt;Browse&lt;/em&gt; header and choose &lt;em&gt;Import.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/HowtoexportandreusetheDataViewWebPart_96A5/image_8.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Find the Import functionality..." border="0" alt="Find the Import functionality..." src="http://www.wictorwilen.se/WindowsLiveWriter/HowtoexportandreusetheDataViewWebPart_96A5/image_thumb_3.png" width="285" height="225" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="200"&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/HowtoexportandreusetheDataViewWebPart_96A5/image_12.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="One Web Part imported" border="0" alt="One Web Part imported" src="http://www.wictorwilen.se/WindowsLiveWriter/HowtoexportandreusetheDataViewWebPart_96A5/image_thumb_5.png" width="266" height="276" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;After that you can click on &lt;em&gt;Browse&lt;/em&gt; to select your .webpart file and finally click &lt;em&gt;Upload&lt;/em&gt;. Once the upload is done the Web Part will appear and you can drag and drop it onto your Web Part page.&lt;/p&gt;  &lt;p&gt;Once it is on the page you may have to edit the properties of the Data View Web Part. You might have to change the data sources, if you for instance configured your Data View Web Part to work with a certain Site id or a List id.&lt;/p&gt;  &lt;h3&gt;Using the Web Part in features&lt;/h3&gt;  &lt;p&gt;You can also reuse this exported .webpart file in your SharePoint features and have them added to the Web Part gallery when activating the feature. &lt;/p&gt;  &lt;p&gt;Another scenario, which I've used to build dashboards and dashboard sites is that you use the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webpartpages.splimitedwebpartmanager.aspx" target="_blank"&gt;SPLimitedWebPartManager&lt;/a&gt; to create dashboards on feature activations or certain events. The SPLimitedWebPartManager has an &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webpartpages.splimitedwebpartmanager.importwebpart.aspx" target="_blank"&gt;ImportWebPart&lt;/a&gt; method that takes an XmlReader as input, which essentially is your .webpart file.&lt;/p&gt;  &lt;p&gt;I hope you got something interesting out of this and if you haven't listened to the &lt;a href="http://www.sharepointpodshow.com/archive/2009/09/29/the-sharepoint-data-view-web-part-episode-31.aspx" target="_blank"&gt;SharePoint PodShow about the Data View Web Part&lt;/a&gt; - do that immediately and understand the power of it!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/UxqEJ8EeT0PrNQptXjiingu2Kdw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UxqEJ8EeT0PrNQptXjiingu2Kdw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/UxqEJ8EeT0PrNQptXjiingu2Kdw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UxqEJ8EeT0PrNQptXjiingu2Kdw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=zJ5pez_cblY:bIY-074iffM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=zJ5pez_cblY:bIY-074iffM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=zJ5pez_cblY:bIY-074iffM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=zJ5pez_cblY:bIY-074iffM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=zJ5pez_cblY:bIY-074iffM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=zJ5pez_cblY:bIY-074iffM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=zJ5pez_cblY:bIY-074iffM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=zJ5pez_cblY:bIY-074iffM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/zJ5pez_cblY" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-10-03 03:07:04Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-10-03 03:07:04Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=501</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/How-to-export-and-reuse-the-Data-View-Web-Part.aspx</feedburner:origLink></item><item><title>Time for new adventures</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/E-vXaLVdh8I/Time-for-new-adventures.aspx</link><category>Personal</category><category>SharePoint</category><category>SharePoint 2010</category><category>Presentations</category><category>Performance Point</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Thu, 01 Oct 2009 07:15:23 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Time-for-new-adventures.aspx</guid><description>&lt;p&gt;I'm glad and proud to tell you all about that next month I will start a new job. I will start as a &lt;a href="http://sharepoint.microsoft.com/" target="_blank"&gt;SharePoint&lt;/a&gt; Architect at &lt;a href="http://www.connecta.se" target="_blank"&gt;Connecta&lt;/a&gt;. This is a fantastic opportunity for me and it will let me work with some of the finest SharePoint minds and developers here in Sweden as well as some really awesome customers.&lt;/p&gt;  &lt;p&gt;I've been working with basically the same company now since 2000, when I and two good friends founded it, &lt;a href="http://www.ibizkit.se" target="_blank"&gt;iBizkit&lt;/a&gt;. We all came from consultancy firms working with WCM, portals and intranet solutions and had a dream of making a really good semi-product for these kind of solutions. And we did! In 2001 we integrated our product with the first version of SharePoint. We continued this integration in the upcoming versions of SharePoint, but have since the release of SharePoint 2007 focused more and more on the SharePoint platform, and I have personally lived in that world for the latest years. About two years ago, we &lt;a href="http://www.wictorwilen.se/Post/Summing-up-the-year-of-2007-and-embracing-2008.aspx" target="_blank"&gt;sold the company&lt;/a&gt; to &lt;a href="http://www.pdb.se" target="_blank"&gt;Pdb DataSystem&lt;/a&gt;, a natural step to expand and evolve the business.&lt;/p&gt;  &lt;p&gt;During the last years I have been headhunted (or is headhaunted?) numerous times and finally I/we found a perfect match.&lt;/p&gt;  &lt;p&gt;So in November I will be joining the &lt;a href="http://www.connecta.se/" target="_blank"&gt;Connecta&lt;/a&gt; forces and have 100% focus on SharePoint and especially the upcoming SharePoint 2010. This will allow me to grow and evolve as a SharePoint architect and developer, which is what I thrive on.&lt;/p&gt;  &lt;p&gt;The only downside with this is that I won't be attending the (awesome, fantastic and once-in-a-life-time) &lt;a href="http://www.mssharepointconference.com/Pages/default.aspx" target="_blank"&gt;SharePoint Conference 2009&lt;/a&gt; in Las Vegas. To all you SharePointers - have a good time and I'll follow the tweets and blogs from over here! I'll even drink a pint while reading them. I hope to join you on upcoming conferences...&lt;/p&gt;  &lt;p&gt;But if you're anxious to meet up, then head on over to the &lt;a href="http://www.seforum.se/" target="_blank"&gt;SharePoint and Exchange Forum&lt;/a&gt; in Sweden (SEF09) and come listen to me talk about PerformancePoint Services 2010 or come visit the &lt;a href="http://www.addskills.se/Utbildning/Seminarier/Nyheterna-i-SharePoint-2010/" target="_blank"&gt;free SharePoint 2010 overview event&lt;/a&gt;, organized by &lt;a href="http://www.addskills.se" target="_blank"&gt;AddSkills&lt;/a&gt; and &lt;a href="http://www.connecta.se" target="_blank"&gt;Connecta&lt;/a&gt;, where I'll show you some cool stuff that can be done with the ECM features in SharePoint 2010.&lt;/p&gt;  &lt;p&gt;Until next time...&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8ZWhrOpm33w43wos2yhc4WZFKzc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8ZWhrOpm33w43wos2yhc4WZFKzc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8ZWhrOpm33w43wos2yhc4WZFKzc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8ZWhrOpm33w43wos2yhc4WZFKzc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=E-vXaLVdh8I:uL8ZsyAk35w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=E-vXaLVdh8I:uL8ZsyAk35w:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=E-vXaLVdh8I:uL8ZsyAk35w:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=E-vXaLVdh8I:uL8ZsyAk35w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=E-vXaLVdh8I:uL8ZsyAk35w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=E-vXaLVdh8I:uL8ZsyAk35w:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=E-vXaLVdh8I:uL8ZsyAk35w:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=E-vXaLVdh8I:uL8ZsyAk35w:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/E-vXaLVdh8I" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-10-01 14:15:23Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-10-01 14:15:23Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=500</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Time-for-new-adventures.aspx</feedburner:origLink></item><item><title>Avoiding Xml Based SharePoint Features - Use The API Way</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/3SY9IL3N4w8/Avoiding-Xml-Based-SharePoint-Features-Use-The-API-Way.aspx</link><category>SharePoint</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Wed, 23 Sep 2009 07:11:27 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Avoiding-Xml-Based-SharePoint-Features-Use-The-API-Way.aspx</guid><description>&lt;p&gt;Developing solutions and features for &lt;a href="http://sharepoint.microsoft.com/" target="_blank"&gt;SharePoint&lt;/a&gt; is a nightmare for all beginners, and even for the experienced SharePoint developers. If you ever have had the opportunity to create a SharePoint solution you most probably have had to make a lot of hacking in a bunch of XML files, just to build a simple feature. This is the way you have to do it, and the way taught by tutors and &lt;a href="http://www.microsoft.com" target="_blank"&gt;Microsoft&lt;/a&gt;, when using it with &lt;a href="http://msdn.microsoft.com/en-us/vstudio/default.aspx" target="_blank"&gt;Visual Studio&lt;/a&gt; and no add-ins. This is the way it was, and has been, for most of us SharePoint programmers since the beta releases of SharePoint version 3. &lt;/p&gt;  &lt;p&gt;Nowadays you have several tools that help you out; such as &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=FB9D4B85-DA2A-432E-91FB-D505199C49F6&amp;displaylang=en" target="_blank"&gt;Visual Studio Extensions for WSS&lt;/a&gt;, &lt;a href="http://wspbuilder.codeplex.com" target="_blank"&gt;WSPBuilder&lt;/a&gt;, &lt;a href="http://stsdev.codeplex.com" target="_blank"&gt;STSDev&lt;/a&gt; and more. Some have a user interface that helps you a lot; such as VSeWSS and &lt;a href="http://spvisualdev.codeplex.com/" target="_blank"&gt;SPVisualDev&lt;/a&gt; and some does not help much there; such as STSDev. But whatever tool you use you will find that you are digging yourself deep into hacking those Xml files. Unfortunately the documentation is quite poor, but we have the fantastic SharePoint bloggers and MVPs that made their code and samples available through&lt;strike&gt; &lt;/strike&gt;&lt;a href="http://www.google.com" target="_blank"&gt;&lt;strike&gt;Google&lt;/strike&gt;&lt;/a&gt;, sorry &lt;a href="http://www.bing.com" target="_blank"&gt;Bing&lt;/a&gt;.&lt;/p&gt;  &lt;h3&gt;Lots of XML&lt;/h3&gt;  &lt;p&gt;For example when you have a site and you would like to create a custom list, you will have to define a Content Type, a list schema, a list template and a list instance and then you have a feature manifest and a solution manifest - that counts to at least &lt;strong&gt;five&lt;/strong&gt; different XML files and a few different schemas. This is an awful amount of job in the beginning and I think in some cases it's a waste of time, especially if it's a custom list that only will be used once. Then we have the thing when we want to update the list or content type when it's deployed...a whole lotta XML in combination with compiled code (for example when updating Content Types)!&lt;/p&gt;  &lt;p&gt;I have in my recent projects abandoned the &lt;em&gt;XML way&lt;/em&gt; (declarative/&lt;a href="http://en.wikipedia.org/wiki/CAML" target="_blank"&gt;CAML&lt;/a&gt;) in favor of the &lt;em&gt;The &lt;a href="http://en.wikipedia.org/wiki/Api" target="_blank"&gt;API&lt;/a&gt; way &lt;/em&gt;(Object Model). &lt;/p&gt;  &lt;h3&gt;The API Way&lt;/h3&gt;  &lt;p&gt;Almost everything that these XML files can do can be done using compiled .NET code and utilizing the SharePoint API's. Take the example above - those XML files can be replaced with a few lines of &lt;a href="http://www.wictorwilen.se/Category/C.aspx" target="_blank"&gt;C#&lt;/a&gt; code. Create a Content Type, create a List, add a Content Type to the List. There are still few XML files left; the feature and solution manifests; but those two are easy to handle. &lt;/p&gt;  &lt;p&gt;All you have to do is put this initialization and creation code in the Feature Receivers of the Features.&lt;/p&gt;  &lt;p&gt;Upgrading and developing these features using the API way are also very easy and straightforward. I think it also fits better into a &lt;a href="http://en.wikipedia.org/wiki/Test-driven_development" target="_blank"&gt;TDD&lt;/a&gt; kind of development way. If you have a list that is created through the Feature Receiver and you find that you need to add a field to that list, I just de-activates and activates that feature. This is done by a set of extension I use to create fields if they don't exist, in Lists or Content Types.&lt;/p&gt;  &lt;h3&gt;API way - Pros&lt;/h3&gt;  &lt;p&gt;Using the API way has several benefits:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;As a beginner, but experienced .NET developer, it might be easier to start working with the SharePoint API &lt;/li&gt;    &lt;li&gt;Mistakes are easier discovered:      &lt;ul&gt;       &lt;li&gt;You have to deploy and test your feature to find small mistakes in the XML &lt;/li&gt;        &lt;li&gt;Some errors are detected during compilation phases &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Debugging - yea try that with XML based features! &lt;/li&gt;    &lt;li&gt;Upgrading experience is far much better (de-activate and activate) &lt;/li&gt;    &lt;li&gt;Development time is most often faster, just re-register the assembly &lt;/li&gt;    &lt;li&gt;Easy to staple the feature, and it's receiver, to Site Defintions &lt;/li&gt;    &lt;li&gt;Testing, and TDD, is possible even outside of the SharePoint scope &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;API way - Cons&lt;/h3&gt;  &lt;p&gt;Of course there are cons of using the API way. First of all there are some things that you can't do&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create List Templates - for reusable lists, i.e. lists available for the end-user to create &lt;/li&gt;    &lt;li&gt;Create Site Definitions &lt;/li&gt;    &lt;li&gt;Create Custom Actions &lt;/li&gt;    &lt;li&gt;Configure Delegate Controls &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The cons with the API way are for example:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Requires installation of assemblies in the GAC      &lt;ul&gt;       &lt;li&gt;This is in many installations prohibited due to the fact that it requires that you run in full trust. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;I find it easier in some situations to re-use configurations created in XML files &lt;/li&gt;    &lt;li&gt;When using XML definitions you can specify ID's of Content Types etc which are required in many situations, for example when you are re-using your Content Type in many farms or Site Collections. &lt;/li&gt;    &lt;li&gt;Requires that you really understand how the provisioning works in SharePoint &lt;/li&gt;    &lt;li&gt;Requires that you take care of the clean-up when deactivating &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Most pros and cons are of course a personal consideration, but as I said, I almost every time nowadays use the API way for my features.&lt;/p&gt;  &lt;p&gt;How do you develop your Features, Lists and Content Types? &lt;/p&gt;  &lt;p&gt;Basically I try to have a clean and simple Site Definition and then staple my features and it's receivers onto that Site Definition. It comes down to very little XML and some compiled code - very maintainable.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Ed8Vx42ywdia44I2Jn-JQ7tQ70M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ed8Vx42ywdia44I2Jn-JQ7tQ70M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Ed8Vx42ywdia44I2Jn-JQ7tQ70M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ed8Vx42ywdia44I2Jn-JQ7tQ70M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=3SY9IL3N4w8:kkY1YQ6AeUk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=3SY9IL3N4w8:kkY1YQ6AeUk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=3SY9IL3N4w8:kkY1YQ6AeUk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=3SY9IL3N4w8:kkY1YQ6AeUk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=3SY9IL3N4w8:kkY1YQ6AeUk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=3SY9IL3N4w8:kkY1YQ6AeUk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=3SY9IL3N4w8:kkY1YQ6AeUk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=3SY9IL3N4w8:kkY1YQ6AeUk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/3SY9IL3N4w8" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-09-23 14:11:27Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-09-23 14:11:27Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">7</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=499</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Avoiding-Xml-Based-SharePoint-Features-Use-The-API-Way.aspx</feedburner:origLink></item><item><title>ChartPart 2.0 for SharePoint - Release To Web</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/QOxc0rL8KGk/ChartPart-20-for-SharePoint-Release-To-Web.aspx</link><category>SharePoint</category><category>CodePlex</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Sun, 13 Sep 2009 04:24:38 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/ChartPart-20-for-SharePoint-Release-To-Web.aspx</guid><description>&lt;p&gt;Finally I’ve found the time to make the last work on &lt;a href="http://chartpart.codeplex.com/"&gt;ChartPart 2.0 for SharePoint&lt;/a&gt;. I have been working on and off on this release for quite some time – but now it’s here!&lt;/p&gt;  &lt;p&gt;ChartPart 2.0 for SharePoint is a Web Part that allows you to instantly create charts based on your existing SharePoint lists. You can make columns, bars, pies and even 3D charts. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/ChartPart2.0forSharePointReleaseToWeb_120EB/image_2.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="ChartPart 1.0 stats" border="0" alt="ChartPart 1.0 stats" align="right" src="http://www.wictorwilen.se/WindowsLiveWriter/ChartPart2.0forSharePointReleaseToWeb_120EB/image_thumb.png" width="244" height="159" /&gt;&lt;/a&gt; &lt;a href="http://chartpart.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=20006"&gt;ChartPart version 1.0&lt;/a&gt; was released last year and have had up until now close to 10.000 downloads, which I’m very proud of. I’ve received awesome feedback on the &lt;a href="http://www.codeplex.com/"&gt;Codeplex&lt;/a&gt; site, on Twitter, my blog and when I met people and told them that I was the one who made it.&lt;/p&gt;  &lt;p&gt;ChartPart 2.0 has been in beta/RC for quite some time and has had about 4.000 downloads, which also is awesome! People have been asking me when is it due, when is it ready…and now it’s done! It’s uploaded and free to download. You can even get the source and make your own implementation.&lt;/p&gt;  &lt;h3&gt;New Features&lt;/h3&gt;  &lt;p&gt;ChartPart 2.0 contains a number of new features such as; better 3D charts, more customization etc. But the most interesting two things are 1) you don’t have to install it in the GAC (which several people asked med about) and 2) you can connect the ChartPart to a list view and filter the graph.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/ChartPart2.0forSharePointReleaseToWeb_120EB/ChartPart2-1_2.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="3D graphs with SharePoint" border="0" alt="3D graphs with SharePoint" align="right" src="http://www.wictorwilen.se/WindowsLiveWriter/ChartPart2.0forSharePointReleaseToWeb_120EB/ChartPart2-1_thumb.png" width="184" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;For a full list of features just head on over to the ChartPart 2.0 website on Codeplex.&lt;/p&gt;  &lt;p&gt;Another interesting feature that is new in 2.0 is that you can edit the .webpart files and set a &lt;em&gt;Lock Down Mode&lt;/em&gt;. This allows you to restrict your users from editing certain properties, such as colors, graph types etc. This is one feature that I hope can make the ChartPart 2.0 be used in larger companies.&lt;/p&gt;  &lt;p&gt;I’d like to thank all the thousands of people who has helped me out by downloading ChartPart 1.0 and those who has submitted issues on Codeplex. A special thanks to those who helped me with the translation into other languages; Arash Aghajani, Frank, Alexander Bautz, Anders Dissing..&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/ChartPart2.0forSharePointReleaseToWeb_120EB/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ChartPart 2.0 in Chinese" border="0" alt="ChartPart 2.0 in Chinese" src="http://www.wictorwilen.se/WindowsLiveWriter/ChartPart2.0forSharePointReleaseToWeb_120EB/image_thumb_1.png" width="195" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;What are you waiting for, &lt;a href="http://chartpart.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=32940"&gt;go download it…&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HvHODvwB3rDFuiWlXFOGz7sqij0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HvHODvwB3rDFuiWlXFOGz7sqij0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HvHODvwB3rDFuiWlXFOGz7sqij0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HvHODvwB3rDFuiWlXFOGz7sqij0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=QOxc0rL8KGk:1sYSrJmrwbc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=QOxc0rL8KGk:1sYSrJmrwbc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=QOxc0rL8KGk:1sYSrJmrwbc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=QOxc0rL8KGk:1sYSrJmrwbc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=QOxc0rL8KGk:1sYSrJmrwbc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=QOxc0rL8KGk:1sYSrJmrwbc:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=QOxc0rL8KGk:1sYSrJmrwbc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=QOxc0rL8KGk:1sYSrJmrwbc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/QOxc0rL8KGk" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-09-13 11:24:38Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-09-13 11:24:38Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">9</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=498</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/ChartPart-20-for-SharePoint-Release-To-Web.aspx</feedburner:origLink></item><item><title>SharePoint User Group meeting 2009-09-08 recap</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/9_xL0X7os5A/SharePoint-User-Group-meeting-20090908-recap.aspx</link><category>SharePoint</category><category>SharePoint 2010</category><category>Presentations</category><category>Business Intelligence</category><category>Performance Point</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Tue, 08 Sep 2009 18:59:18 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/SharePoint-User-Group-meeting-20090908-recap.aspx</guid><description>&lt;p&gt;Last night we had a &lt;a href="http://sharepoint.microsoft.com"&gt;SharePoint&lt;/a&gt; &lt;a href="http://www.sharepointcommunity.se/"&gt;User Group Meeting here in Stockholm&lt;/a&gt;, Sweden. It was a great evening with a lot of attendees, thank you all for showing up. It's always fun to see new and old faces, sorry I didn't have time to talk so much with you (due to my VM's crashing just before my demos…).&lt;/p&gt;  &lt;p&gt;First, a big thanks to &lt;a href="http://www.knowit.se"&gt;KnowIT&lt;/a&gt; and Jonas who provided us with a great place to host the meeting and some good food and beer!&lt;/p&gt;  &lt;p&gt;Two sessions were on the agenda; &lt;a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx"&gt;PowerShell&lt;/a&gt; and &lt;a href="http://www.microsoft.com/business/performancepoint/"&gt;PerformancePoint&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.powershell.nu/"&gt;Niklas Goude&lt;/a&gt; started the meeting with some SharePoint and PowerShell love. Great session and demo. Really looking forward to see his, and &lt;a href="http://mysharepointofview.com/"&gt;Mattias Karlssons&lt;/a&gt;, &lt;a href="http://www.sharepointandpowershell.com/"&gt;book project&lt;/a&gt; come to life. You can find &lt;a href="http://www.powershell.nu/2009/09/08/moss-2007-script-collection/"&gt;Niklas awesome PowerShell scripts here&lt;/a&gt; and &lt;a href="http://mysharepointofview.com/2009/09/web-application-builder/"&gt;Mattias automagic create your farm in Excel script here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The second session was held by yours truly, and I did a brief introduction to PerformancePoint 2007 with some demos on how to create dashboards and publish it to SharePoint. I'm thinking about writing up a post on the last "Dangerous Lists" demo, would you like that? You can find &lt;a href="http://www.wictorwilen.se/files/PerformancePoint2007-2009-09-08.pdf"&gt;my presentation here&lt;/a&gt;. And here are the links that I referred to regarding PerformancePoint 2007 and Microsoft BI.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/bi/"&gt;http://www.microsoft.com/bi/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="http://technet.microsoft.com/en-us/library/bb794633.aspx" href="http://technet.microsoft.com/en-us/library/bb794633.aspx"&gt;http://technet.microsoft.com/en-us/library/bb794633.aspx&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/bi/"&gt;http://blogs.msdn.com/bi/&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;And if you would like to know some more on what will happen with PerformancePoint in the upcoming 2010 release, please attend the &lt;a href="http://www.seforum.se/"&gt;SharePoint &amp; Exchange Forum 2009&lt;/a&gt; and my session on &lt;em&gt;PerformancePoint Services 2010&lt;/em&gt;, that will take place in Stockholm in November. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rwpJ9KzIObmEOX--wJzcEamMBqA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rwpJ9KzIObmEOX--wJzcEamMBqA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rwpJ9KzIObmEOX--wJzcEamMBqA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rwpJ9KzIObmEOX--wJzcEamMBqA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=9_xL0X7os5A:Tx6-k7Qd53Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=9_xL0X7os5A:Tx6-k7Qd53Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=9_xL0X7os5A:Tx6-k7Qd53Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=9_xL0X7os5A:Tx6-k7Qd53Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=9_xL0X7os5A:Tx6-k7Qd53Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=9_xL0X7os5A:Tx6-k7Qd53Q:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=9_xL0X7os5A:Tx6-k7Qd53Q:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=9_xL0X7os5A:Tx6-k7Qd53Q:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/9_xL0X7os5A" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-09-09 01:59:18Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-09-09 01:59:18Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=497</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/SharePoint-User-Group-meeting-20090908-recap.aspx</feedburner:origLink></item><item><title>New Permission Reporting Solution in SharePoint Administration Toolkit</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/hnPIr1m0O8s/New-Permission-Reporting-Solution-in-SharePoint-Administration-Toolkit.aspx</link><category>SharePoint</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Tue, 01 Sep 2009 17:03:12 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/New-Permission-Reporting-Solution-in-SharePoint-Administration-Toolkit.aspx</guid><description>&lt;p&gt;The latest version, 4.0, of the great &lt;a href="http://sharepoint.microsoft.com"&gt;SharePoint&lt;/a&gt; Administration Toolkit has been released, &lt;a href="http://blogs.msdn.com/sharepoint/archive/2009/08/27/announcing-the-fourth-release-of-the-microsoft-sharepoint-administration-toolkit.aspx"&gt;read all about it in the post by the SharePoint Team&lt;/a&gt;. It contains a lot of interesting and great stuff that you could use for everyday usage.&lt;/p&gt;  &lt;p&gt;One new part of the Administration Toolkit is a SharePoint solution called &lt;em&gt;Permission Reporting Solution&lt;/em&gt;. This is a solution package that hugely improves the permissions management of your Site Collections and Sites in SharePoint.&lt;/p&gt;  &lt;h3&gt;Note&lt;/h3&gt;  &lt;p&gt;The Administration Toolkit was first released about a week ago. It was quickly pulled back, since it contained some erroneous files. It's not currently available from the download site but these links will get you to it; &lt;a href="http://go.microsoft.com/fwlink/?LinkId=141504"&gt;x86&lt;/a&gt; and &lt;a href="http://go.microsoft.com/fwlink/?LinkID=142035"&gt;x64&lt;/a&gt;.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Note: &lt;/strong&gt;I actually started out writing this post while trying to install the permissions reporting solution but eventually found out that the DLL that was released was not signed properly and couldn't be installed into the GAC. My guess is that's why they pulled the release back.&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;Prerequisites&lt;/h3&gt;  &lt;p&gt;Before installing the PermissionReporting solution you have to have upgraded your farm to at least the April 09 Cumulative Update and have a version that is equal or higher than 6504.&lt;/p&gt;  &lt;h3&gt;Installation&lt;/h3&gt;  &lt;p&gt;After installing the SharePoint Administration Toolkit you have to install the WSP package like this:&lt;/p&gt;  &lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;stsadm.exe –o addsolution –filename &lt;b&gt;[Full path]&lt;/b&gt;PermissionReporting.wsp
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;stsadm.exe –o deploysolution –name PermissionReporting.wsp –immediate -allowgacdeployment 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;stsadm.exe –o activatefeature –name PermissionReporting&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;The PermissionReporting.wsp is normally found in the c:\Program Files\Microsoft\SPAdministrationToolkit\PermissionReporting\ directory.&lt;/p&gt;

&lt;p&gt;I also had to run this command to get it working:&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;stsadm.exe -o copyappbincontent&lt;/pre&gt;&lt;/pre&gt;

&lt;h3&gt;&lt;/h3&gt;

&lt;h3&gt;How to use it&lt;/h3&gt;

&lt;p&gt;When you go to &lt;em&gt;Site Settings&lt;/em&gt; on a site you will normally find three options under &lt;em&gt;Users and Permissions&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/NewPermissionReportingSolutioninSharePoi_14A2C/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Users and Permissions - before" border="0" alt="Users and Permissions - before" src="http://www.wictorwilen.se/WindowsLiveWriter/NewPermissionReportingSolutioninSharePoi_14A2C/image_thumb.png" width="223" height="115" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;After activating the PermissionReporting feature, on the farm, you have a set of new options.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/NewPermissionReportingSolutioninSharePoi_14A2C/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Permission Reporting Solution installed" border="0" alt="Permission Reporting Solution installed" src="http://www.wictorwilen.se/WindowsLiveWriter/NewPermissionReportingSolutioninSharePoi_14A2C/image_thumb_2.png" width="222" height="171" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It will also add new functions to lists and list items:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/NewPermissionReportingSolutioninSharePoi_14A2C/image_8.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Check Effective Permissions on a list or document library" border="0" alt="Check Effective Permissions on a list or document library" src="http://www.wictorwilen.se/WindowsLiveWriter/NewPermissionReportingSolutioninSharePoi_14A2C/image_thumb_3.png" width="356" height="162" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/NewPermissionReportingSolutioninSharePoi_14A2C/image_10.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Check Effective Permissions on a document" border="0" alt="Check Effective Permissions on a document" src="http://www.wictorwilen.se/WindowsLiveWriter/NewPermissionReportingSolutioninSharePoi_14A2C/image_thumb_4.png" width="218" height="242" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;&lt;/h3&gt;

&lt;h3&gt;Check Effective Permissions &lt;/h3&gt;

&lt;p&gt;The Check Effective Permissions is a really nice feature that allows you to check what are the effective permissions for a specific user on a list, list item or a site.&lt;/p&gt;

&lt;p&gt;This is how it looks like when I check the effective permissions for a specific user on a document in a document library:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/NewPermissionReportingSolutioninSharePoi_14A2C/image_12.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Check effective permissions on a document" border="0" alt="Check effective permissions on a document" src="http://www.wictorwilen.se/WindowsLiveWriter/NewPermissionReportingSolutioninSharePoi_14A2C/image_thumb_5.png" width="404" height="314" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;This user is member of the Visitors group and has read permissions but has been given contribute permissions directly on the object. Handy right?&lt;/p&gt;

&lt;h3&gt;Compare Permission Sets&lt;/h3&gt;

&lt;p&gt;When you are working out some permissions issues the &lt;em&gt;Compare Permissions Sets&lt;/em&gt; feature is great. It's simply a tree view of your lists and sites in which you can see exactly what permissions are set on a site or a list.&lt;/p&gt;

&lt;h3&gt;Broken Inheritance Report&lt;/h3&gt;

&lt;p&gt;The &lt;em&gt;Broken Inheritance Report&lt;/em&gt; feature is a report job that every 20 minutes creates XML report files of broken sites in the site collection.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/NewPermissionReportingSolutioninSharePoi_14A2C/image_14.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="A created report" border="0" alt="A created report" src="http://www.wictorwilen.se/WindowsLiveWriter/NewPermissionReportingSolutioninSharePoi_14A2C/image_thumb_6.png" width="455" height="177" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;The GrpMembership.xml file shows you what groups users are members of, Rights.xml shows you the rights set for your site collection and Permissions.xml shows you where permission inheritance has been broken and what permissions are set on those objects.&lt;/p&gt;

&lt;p&gt;All these XML files can be opened in Excel for easier reading.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;With SharePoint 2010 around the corner, we can hope that these features are there from start and we don't have to wait for three years before handy features like this appears :-)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/W3_aZ8KyIBmIrk4t6zMufCI0IEo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W3_aZ8KyIBmIrk4t6zMufCI0IEo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/W3_aZ8KyIBmIrk4t6zMufCI0IEo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W3_aZ8KyIBmIrk4t6zMufCI0IEo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=hnPIr1m0O8s:lS5vHBWhqmw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=hnPIr1m0O8s:lS5vHBWhqmw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=hnPIr1m0O8s:lS5vHBWhqmw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=hnPIr1m0O8s:lS5vHBWhqmw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=hnPIr1m0O8s:lS5vHBWhqmw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=hnPIr1m0O8s:lS5vHBWhqmw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=hnPIr1m0O8s:lS5vHBWhqmw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=hnPIr1m0O8s:lS5vHBWhqmw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/hnPIr1m0O8s" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-09-02 00:03:12Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-09-02 00:03:12Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=496</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/New-Permission-Reporting-Solution-in-SharePoint-Administration-Toolkit.aspx</feedburner:origLink></item><item><title>Using custom authentication provider users in SharePoint Timer Jobs</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/ks8LJxv7k48/Using-custom-authentication-provider-users-in-SharePoint-Timer-Jobs.aspx</link><category>SharePoint</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Tue, 01 Sep 2009 00:54:52 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Using-custom-authentication-provider-users-in-SharePoint-Timer-Jobs.aspx</guid><description>&lt;p&gt;Today I stumbled upon Yet Another &lt;a href="http://sharepoint.microsoft.com"&gt;SharePoint&lt;/a&gt; Problem (YASP) with a custom timer job. The custom timer job is supposed to synchronize some user information between site collections (on a WSS 3.0 installation). In some cases the timer job has to add users to site collections. Sounds like a no-brainer, right!&lt;/p&gt;&lt;p&gt;The problem is that we are using this installation as an internet facing site and the external users are stored in AD LDS (Active Directory Lightweight Directory Services, formerly known as ADAM) and our own custom authentication provider.&lt;/p&gt;&lt;p&gt;When the timer job was running it found users in one site collection and could not add them to the other site collections, using &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.ensureuser.aspx"&gt;EnsureUser&lt;/a&gt;(). It just threw an exception and stated that it could not locate the user.&lt;/p&gt;&lt;p&gt;We made sure we had the right privileges, that the timer service was running under correct account etc. Finally we hooked up the debugger and set some breakpoints in our custom authentication provider to see where it failed when it tried to resolve the users. But the Visual Studio debugger never loaded our provider assembly!&lt;/p&gt;&lt;p&gt;Then it struck me; how would the OWSTimer.exe know what assembly our custom authentication provider is located in, in Central Administration you only specify the name/prefix of the forms authentication provider. The definition for the custom authentication provider is only specified in the web.config of our web application.&lt;/p&gt;&lt;p&gt;So we added a configuration file to the OWSTimer.exe, called OWSTimer.exe.config and specified the authentication provider, see below. Then after a restart of the service, everything worked like a charm.&lt;/p&gt;&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; &lt;span style="color: #0000ff"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;configuration&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;system.web&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;membership&lt;/span&gt; &lt;span style="color: #ff0000"&gt;defaultProvider&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;TODO&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;providers&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;        &lt;span style="color: #008000"&gt;&amp;lt;!-- Add providers here --&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;providers&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;membership&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;system.web&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;configuration&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;Everyday with SharePoint gives you new obstacles…&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pilJ51U4HjgDFOgFJXP1qGA-M4Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pilJ51U4HjgDFOgFJXP1qGA-M4Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pilJ51U4HjgDFOgFJXP1qGA-M4Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pilJ51U4HjgDFOgFJXP1qGA-M4Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=ks8LJxv7k48:D932PxKX0l0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=ks8LJxv7k48:D932PxKX0l0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=ks8LJxv7k48:D932PxKX0l0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=ks8LJxv7k48:D932PxKX0l0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=ks8LJxv7k48:D932PxKX0l0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=ks8LJxv7k48:D932PxKX0l0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=ks8LJxv7k48:D932PxKX0l0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=ks8LJxv7k48:D932PxKX0l0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/ks8LJxv7k48" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-09-01 07:54:52Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-09-01 07:54:52Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=495</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Using-custom-authentication-provider-users-in-SharePoint-Timer-Jobs.aspx</feedburner:origLink></item><item><title>Web Parts Connections - Introduction</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/xNfr29t2Je0/Web-Parts-Connections-Introduction.aspx</link><category>.NET</category><category>SharePoint</category><category>Web Parts</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Wed, 26 Aug 2009 05:35:40 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Web-Parts-Connections-Introduction.aspx</guid><description>&lt;p&gt;This is the first post in a series on Web Parts Connections. This spring I had a series on &lt;a href="http://www.wictorwilen.se/Category/WebPart.aspx"&gt;Web Part Properties&lt;/a&gt; that I think was very successful, they got some good comments and feedback and they get a lot of hits from search engines. Please help me out and evolve this new series of posts with some feedback and questions.&lt;/p&gt;  &lt;h3&gt;What is Web Parts Connections?&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/WebPartsConnectionsIntroduction_122AA/image_2.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="image" border="0" alt="image" align="right" src="http://www.wictorwilen.se/WindowsLiveWriter/WebPartsConnectionsIntroduction_122AA/image_thumb.png" width="194" height="244" /&gt;&lt;/a&gt;Web Parts Connections allows you to connect the Web Part server controls so that they can exchange information. Web Parts can either be a &lt;strong&gt;consumer&lt;/strong&gt; and/or a &lt;strong&gt;provider&lt;/strong&gt;. Once you connect a consumer with a provider the consumer starts receiving data from the provider, all this is done on the server side. Web Parts can be constructed in such way that it can have several consumer and provider connection-points, i.e.it can consume or provide information from several different sources. A provider connection-point can have several consumers but a consumer connection-point can have only one provider. &lt;/p&gt;  &lt;p&gt;The image, to the right, illustrates in the top; one Web Part connected to another. The middle sample shows how one provider Web Part is connected to two consumer Web Parts. The sample in the bottom shows a consumer Web Part that have two consumer end-points that are connected to two different provider Web Parts.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Web Parts Connections are a part of the ASP.NET 2.0 framework&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;Why Connecting Web Parts?&lt;/h3&gt;  &lt;p&gt;When you connect Web Parts you enhance the experience for the user. You can for example have one Web Part containing a list of items and let that one act as a provider and then have a consumer Web Part that shows detailed information of the item selected in the provider Web Parts.&lt;/p&gt;  &lt;p&gt;In &lt;a href="http://sharepoint.microsoft.com"&gt;SharePoint&lt;/a&gt; most of the default Web Parts are either consumers or providers. For example, with some easy clicks in the interface you can connect lists and make one a consumer and the other provider.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/WebPartsConnectionsIntroduction_122AA/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Connecting Custom Lists" border="0" alt="Connecting Custom Lists" src="http://www.wictorwilen.se/WindowsLiveWriter/WebPartsConnectionsIntroduction_122AA/image_thumb_1.png" width="304" height="141" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="200"&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/WebPartsConnectionsIntroduction_122AA/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Filtering" border="0" alt="Filtering" src="http://www.wictorwilen.se/WindowsLiveWriter/WebPartsConnectionsIntroduction_122AA/image_thumb_2.png" width="304" height="110" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;The image above shows two custom lists that are connected. The Regions list contains the names of the regions, used in the Sales list. With this simple action we have built a Filter Web Part to filter our Sales list. More about Filter Web Parts later on in the series. The left image shows how you make the actual connection and the image to the right shows you how you can filter the Sales list using the radio buttons on the Regions list.&lt;/p&gt;  &lt;p&gt;I've been working a lot building dashboards and applications for BI-solutions and similar. Using connected Web Parts have both made the end-user experience a whole lot better (and more good looking) as well as the development of the dashboards. &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;This was an introduction to Web Parts Connections, the next part will be up in a couple of days.&lt;/p&gt;  &lt;p&gt;Until next time.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lu9DPHvuenLOrIS3A_hkczOoTcI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lu9DPHvuenLOrIS3A_hkczOoTcI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lu9DPHvuenLOrIS3A_hkczOoTcI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lu9DPHvuenLOrIS3A_hkczOoTcI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=xNfr29t2Je0:Tm9MiX_sthY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=xNfr29t2Je0:Tm9MiX_sthY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=xNfr29t2Je0:Tm9MiX_sthY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=xNfr29t2Je0:Tm9MiX_sthY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=xNfr29t2Je0:Tm9MiX_sthY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=xNfr29t2Je0:Tm9MiX_sthY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=xNfr29t2Je0:Tm9MiX_sthY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=xNfr29t2Je0:Tm9MiX_sthY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/xNfr29t2Je0" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-08-26 12:35:40Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-08-26 12:35:40Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">6</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=494</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Web-Parts-Connections-Introduction.aspx</feedburner:origLink></item><item><title>SharePoint Saturday Copenhagen - Thank you!</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/iijrv6OeVn0/SharePoint-Saturday-Copenhagen-Thank-you.aspx</link><category>SharePoint</category><category>Presentations</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Sat, 22 Aug 2009 21:39:01 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/SharePoint-Saturday-Copenhagen-Thank-you.aspx</guid><description>&lt;p&gt;&lt;a href="http://www.sharepointsaturday.org/copenhagen/default.aspx"&gt;SharePoint Saturday Copenhagen&lt;/a&gt; is over after an awesome Saturday in Copenhagen. Thank you all organizers, attendees, speakers and sponsors, I had a blast. I will definitely attend more &lt;a href="http://sharepoint.microsoft.com"&gt;SharePoint&lt;/a&gt; Saturdays when I can. These kind of events really are special; everyone attending are there because they really love working with SharePoint, on a Saturday, when the sun is shining outside, for free…&lt;/p&gt;  &lt;p&gt;You can find my &lt;a href="/files/SPSaturday_Copenhagen_Wictor_Wilen.pdf"&gt;presentation &lt;strong&gt;SharePoint Online and Windows Azure - better together&lt;/strong&gt; here&lt;/a&gt; and the &lt;a href="/files/AzureDemo.zip"&gt;solution that I used for the demo here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Until next time…&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZnBPrHtRppwUuHaUVYwDWgOw8Yc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZnBPrHtRppwUuHaUVYwDWgOw8Yc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZnBPrHtRppwUuHaUVYwDWgOw8Yc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZnBPrHtRppwUuHaUVYwDWgOw8Yc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=iijrv6OeVn0:WMwVWjqmCLw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=iijrv6OeVn0:WMwVWjqmCLw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=iijrv6OeVn0:WMwVWjqmCLw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=iijrv6OeVn0:WMwVWjqmCLw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=iijrv6OeVn0:WMwVWjqmCLw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=iijrv6OeVn0:WMwVWjqmCLw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=iijrv6OeVn0:WMwVWjqmCLw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=iijrv6OeVn0:WMwVWjqmCLw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/iijrv6OeVn0" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-08-23 04:39:01Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-08-23 04:39:01Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=493</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/SharePoint-Saturday-Copenhagen-Thank-you.aspx</feedburner:origLink></item><item><title>Fix the SharePoint DCOM 10016 error on Windows Server 2008 R2</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/LR5GmjUpyxU/Fix-the-SharePoint-DCOM-10016-error-on-Windows-Server-2008-R2.aspx</link><category>SharePoint</category><category>Security</category><category>Windows Server 2003</category><category>Windows Server 2008</category><category>Windows Server 2008 R2</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Mon, 17 Aug 2009 16:52:24 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Fix-the-SharePoint-DCOM-10016-error-on-Windows-Server-2008-R2.aspx</guid><description>&lt;p&gt;If you have been installing &lt;a href="http://sharepoint.microsoft.com"&gt;SharePoint&lt;/a&gt; you have probably also seen and fixed the &lt;a href="http://support.microsoft.com/kb/920783"&gt;DCOM 10016 error&lt;/a&gt;. This error occurs in the event log when the SharePoint service accounts doesn't have the necessary permissions (Local Activation to the IIS WAMREG admin service). Your farm will still function, but your event log will be cluttered.&lt;/p&gt;  &lt;p&gt;On a Windows Server 2003 or Windows Server 2008 machine you would just fire up the &lt;strong&gt;dcomcnfg&lt;/strong&gt; utility (with elevated privileges) and enable Local Activation for your domain account. &lt;/p&gt;  &lt;p&gt;But for Windows Server 2008 &lt;strong&gt;R2&lt;/strong&gt; (and Windows 7, since they share the same core) you cannot do this, the property dialog is all disabled due to permission restrictions. It doesn't matter if you are logged in as an administrator or using elevated privileges. The change is probably due to some new security improvements.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/FixtheSharePointDCOM10016erroronWindowsS_7E26/image_2.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="DCOMCNG - all disabled" border="0" alt="DCOMCNG - all disabled" src="http://www.wictorwilen.se/WindowsLiveWriter/FixtheSharePointDCOM10016erroronWindowsS_7E26/image_thumb.png" width="185" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The reason for it being disabled is that this dialog is mapped to a key in the registry which the &lt;em&gt;Trusted Installer&lt;/em&gt; is owner of and everyone else only has read permissions. The key used by the IIS WAMREG admin is:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;HKEY_CLASSES_ROOT\AppID\{61738644-F196-11D0-9953-00C04FD919C1}&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/FixtheSharePointDCOM10016erroronWindowsS_7E26/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Registry permissions on R2" border="0" alt="Registry permissions on R2" src="http://www.wictorwilen.se/WindowsLiveWriter/FixtheSharePointDCOM10016erroronWindowsS_7E26/image_thumb_2.png" width="201" height="244" /&gt;&lt;/a&gt; &lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/FixtheSharePointDCOM10016erroronWindowsS_7E26/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Registry permissions on R1" border="0" alt="Registry permissions on R1" src="http://www.wictorwilen.se/WindowsLiveWriter/FixtheSharePointDCOM10016erroronWindowsS_7E26/image_thumb_4.png" width="202" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Image on the left shows the default permissions for Windows Server 2008 R2 and on the right the default settings for Windows Server 2008.&lt;/p&gt;  &lt;p&gt;To be able to change the Launch and Activation Permissions with dcomcnfg you have to change the ownership if this key. Start the registry editor (regedit), find the key, click &lt;em&gt;Advanced&lt;/em&gt; in the Permissions dialog of this key and select the &lt;em&gt;Owner&lt;/em&gt; tab. Now change the owner of the key to the administrators group for example, then set full control to the administrators group. Make sure not to change the permissions for the TrustedInstaller.&lt;/p&gt;  &lt;p&gt;Now you have to restart the dcomcnfg application and once find the IIS WAMREG application and then set the Launch and Activation settings that you need to get rid of the DCOM 10016 error.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/FixtheSharePointDCOM10016erroronWindowsS_7E26/image_8.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Unlocked!" border="0" alt="Unlocked!" src="http://www.wictorwilen.se/WindowsLiveWriter/FixtheSharePointDCOM10016erroronWindowsS_7E26/image_thumb_3.png" width="216" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Good luck!&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;WARNING: Changing the registry may seriously damage your server. All is on your own risk!&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/i4aQXbWNQ6bW3vvyOXUK08Khj-I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i4aQXbWNQ6bW3vvyOXUK08Khj-I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/i4aQXbWNQ6bW3vvyOXUK08Khj-I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i4aQXbWNQ6bW3vvyOXUK08Khj-I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=LR5GmjUpyxU:C1X-Nj072qI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=LR5GmjUpyxU:C1X-Nj072qI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=LR5GmjUpyxU:C1X-Nj072qI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=LR5GmjUpyxU:C1X-Nj072qI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=LR5GmjUpyxU:C1X-Nj072qI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=LR5GmjUpyxU:C1X-Nj072qI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=LR5GmjUpyxU:C1X-Nj072qI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=LR5GmjUpyxU:C1X-Nj072qI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/LR5GmjUpyxU" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-08-17 23:52:24Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-08-17 23:52:24Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">20</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=492</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Fix-the-SharePoint-DCOM-10016-error-on-Windows-Server-2008-R2.aspx</feedburner:origLink></item><item><title>SharePoint Saturday Copenhagen - I'll be there!</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/uv_bo03Bfyw/SharePoint-Saturday-Copenhagen-Ill-be-there.aspx</link><category>SharePoint</category><category>Presentations</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Wed, 05 Aug 2009 18:01:04 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/SharePoint-Saturday-Copenhagen-Ill-be-there.aspx</guid><description>&lt;p&gt;&lt;a href="http://www.sharepointsaturday.org/" target="_blank"&gt;SharePoint Saturday&lt;/a&gt; is a free informational and educational event that has been held &lt;em&gt;over-there&lt;/em&gt; in US several times with a huge success the last year and it is now coming to Europe and Copenhagen, Denmark to be more specific. A &lt;a href="http://www.microsoft.com/Sharepoint/default.mspx"&gt;SharePoint&lt;/a&gt; Saturday is an event for anyone interested in SharePoint and who like to meet similar-minded people and listen to SharePoint professionals and celebrities.&lt;/p&gt;  &lt;p&gt;I'm going to be there - it will be a blast! I will do a presentation called &lt;a href="http://www.microsoft.com/online/default.mspx"&gt;&lt;em&gt;SharePoint Online&lt;/em&gt;&lt;/a&gt;&lt;em&gt; and &lt;/em&gt;&lt;a href="http://www.microsoft.com/azure/default.mspx" target="_blank"&gt;&lt;em&gt;Windows Azure&lt;/em&gt;&lt;/a&gt;&lt;em&gt; - better together! &lt;/em&gt;And I will of course listen to all the other really cool people showing up such as SharePoint MVP's and gurus.&lt;/p&gt;  &lt;p&gt;If you would like to come, did I mention it's free, then head on over to &lt;a title="http://www.sharepointsaturday.org/copenhagen/" href="http://www.sharepointsaturday.org/copenhagen/"&gt;http://www.sharepointsaturday.org/copenhagen/&lt;/a&gt; and register yourself! I look forward to meeting you all!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_1W31tUpOH2e7GKighU-O5CkKnw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_1W31tUpOH2e7GKighU-O5CkKnw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_1W31tUpOH2e7GKighU-O5CkKnw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_1W31tUpOH2e7GKighU-O5CkKnw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=uv_bo03Bfyw:2or9qnGpW8w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=uv_bo03Bfyw:2or9qnGpW8w:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=uv_bo03Bfyw:2or9qnGpW8w:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=uv_bo03Bfyw:2or9qnGpW8w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=uv_bo03Bfyw:2or9qnGpW8w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=uv_bo03Bfyw:2or9qnGpW8w:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=uv_bo03Bfyw:2or9qnGpW8w:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=uv_bo03Bfyw:2or9qnGpW8w:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/uv_bo03Bfyw" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-08-06 01:01:04Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-08-06 01:01:04Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=491</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/SharePoint-Saturday-Copenhagen-Ill-be-there.aspx</feedburner:origLink></item><item><title>Use the LayoutsPageBase class when creating SharePoint Application Pages</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/7C_cYsKBDlc/Use-the-LayoutsPageBase-class-when-creating-SharePoint-Application-Pages.aspx</link><category>SharePoint</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Thu, 23 Jul 2009 20:30:25 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Use-the-LayoutsPageBase-class-when-creating-SharePoint-Application-Pages.aspx</guid><description>&lt;p&gt;In most custom &lt;a href="http://www.microsoft.com/Sharepoint/default.mspx"&gt;SharePoint&lt;/a&gt; solution projects you will have to create your own Application Pages, Web Part Pages or other ASP.NET pages to fulfill your requirements. If you are coming from the ASP.NET world you are pretty used to building web forms and similar .aspx pages. Your pages will most of the times then be derived from the &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.ui.page.aspx" target="_blank"&gt;System.Web.UI.Page&lt;/a&gt; class, but when working with SharePoint you should not use this class as a base.&lt;/p&gt;  &lt;p&gt;Instead you should &lt;strong&gt;always&lt;/strong&gt; use one of the following base classes provided in the &lt;a href="http://www.microsoft.com"&gt;Microsoft&lt;/a&gt; SharePoint APIs.&lt;/p&gt;  &lt;h3&gt;LayoutsPageBase class&lt;/h3&gt;  &lt;p&gt;The &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.layoutspagebase.aspx" target="_blank"&gt;LayoutsPageBase&lt;/a&gt; (in Microsoft.SharePoint.WebControls) class is the most common class to derive application pages from. This is a very basic class but makes your life a whole lot easier in the SharePoint world.&lt;/p&gt;  &lt;p&gt;Pages derived from this class should always reside in the &lt;strong&gt;_layouts&lt;/strong&gt; folder. These pages are called Application Pages (or _layouts pages) and are allowed to contain custom code, compared to Content Pages which reside in SharePoint (such as Web Part Pages). These pages cannot contain customizable Web Parts or Web Part Zones. Creating Content Pages is another story.&lt;/p&gt;  &lt;p&gt;The advantages with using the LayoutsPageBase as your base class is that you can easily access the current SharePoint Site or Site Collection with the built-in properties and control the security of the application page.&lt;/p&gt;  &lt;h4&gt;Access the SharePoint objects&lt;/h4&gt;  &lt;p&gt;With the LayoutsPageBase class you can use the built-in properties for the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.unsecuredlayoutspagebase.site.aspx" target="_blank"&gt;Site&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.unsecuredlayoutspagebase.web.aspx" target="_blank"&gt;Web&lt;/a&gt; to access the current Site Collection or Site (both these properties are derived from the UnsecuredLayoutsPageBase class, see below) or use the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spcontext.aspx" target="_blank"&gt;SPContext&lt;/a&gt; class to access the current site and web. &lt;/p&gt;  &lt;h4&gt;Stop long running operations&lt;/h4&gt;  &lt;p&gt;You have most certainly created some pages that creates reports or similar that may take a long time to generate and consumes server resources. Some times it takes so long that the user shut downs the web browser and go drink a cup of coffee instead. If you have those kind of pages you should use the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.unsecuredlayoutspagebase.stoprequestifclientisnotvalid.aspx" target="_blank"&gt;StopRequestIfClientIsNotValid&lt;/a&gt; method. This method ends the request if the client is no longer connected to the page and saves you of some CPU cycles. On the other hand, if you have these kind of pages - think over and use the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splongoperation.aspx" target="_blank"&gt;SPLongOperation&lt;/a&gt; class to inform the user that it will take a while.&lt;/p&gt;  &lt;p&gt;The page will also automatically call this method in several of the page events, such as OnLoad and Render.&lt;/p&gt;  &lt;h4&gt;Security in the Application Page&lt;/h4&gt;  &lt;p&gt;The LayoutsPageBase class contains a virtual property called &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.layoutspagebase.rightsrequired.aspx" target="_blank"&gt;RightsRequired&lt;/a&gt;, this property can be used to programatically set which rights (on the current Site) that are required to use the application page. By default the rights are checked at the end of the OnLoadComplete, but using the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.layoutspagebase.rightscheckmode.aspx" target="_blank"&gt;RightsCheckModes&lt;/a&gt; property you can disable the check or perform it in OnPreInit instead. &lt;/p&gt;  &lt;p&gt;There are also a property called &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.layoutspagebase.requiresiteadministrator.aspx" target="_blank"&gt;RequireSiteAdministrator&lt;/a&gt; that can be overridden to make sure that the user is site administrator.&lt;/p&gt;  &lt;h4&gt;Exit from the Application Page&lt;/h4&gt;  &lt;p&gt;If you are creating an application page the uses the ButtonSection control template you will have a Cancel button. The target of this Cancel button is controlled using the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.unsecuredlayoutspagebase.pagetoredirectoncancel.aspx" target="_blank"&gt;PageToRedirectOnCancel&lt;/a&gt; property. Just override the property and return a string containing the target of your cancel page.&lt;/p&gt;  &lt;h3&gt;&lt;/h3&gt;  &lt;h3&gt;UnsecuredLayoutsPageBase class&lt;/h3&gt;  &lt;p&gt;The LayoutsPageBase class derives from the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.unsecuredlayoutspagebase.aspx" target="_blank"&gt;UnsecuredLayoutsPageBase&lt;/a&gt; class, which derives from the System.Web.UI.Page. Only derive from this one directly if you need anonymous and non-authenticated users to access your application page. Most of the methods and properties used in the LayoutsPageBase class comes from this class.&lt;/p&gt;  &lt;p&gt;For example the Login Page uses this one as a base.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;This was a quick post to get you started with creating custom application pages in SharePoint. So what are you waiting for...&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KXA5AzNHIxPvZXoHcRoT7n-5Aoo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KXA5AzNHIxPvZXoHcRoT7n-5Aoo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KXA5AzNHIxPvZXoHcRoT7n-5Aoo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KXA5AzNHIxPvZXoHcRoT7n-5Aoo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=7C_cYsKBDlc:mcnq6wZvjuw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=7C_cYsKBDlc:mcnq6wZvjuw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=7C_cYsKBDlc:mcnq6wZvjuw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=7C_cYsKBDlc:mcnq6wZvjuw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=7C_cYsKBDlc:mcnq6wZvjuw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=7C_cYsKBDlc:mcnq6wZvjuw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=7C_cYsKBDlc:mcnq6wZvjuw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=7C_cYsKBDlc:mcnq6wZvjuw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/7C_cYsKBDlc" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-07-24 03:30:25Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-07-24 03:30:25Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">4</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=490</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Use-the-LayoutsPageBase-class-when-creating-SharePoint-Application-Pages.aspx</feedburner:origLink></item><item><title>Creating SharePoint 2010 workflows with Visio 2010</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/GIXK8m2-oTQ/Creating-SharePoint-2010-workflows-with-Visio-2010.aspx</link><category>Microsoft Office</category><category>SharePoint 2010</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Mon, 20 Jul 2009 00:46:07 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Creating-SharePoint-2010-workflows-with-Visio-2010.aspx</guid><description>&lt;p&gt;The new &lt;a href="http://www.office2010themovie.com/" target="_blank"&gt;Office 2010 clients&lt;/a&gt; have been released as a Technical Preview and I'm fortunate to get my hands on them and free to talk about them. The new clients are awesome!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://office.microsoft.com/visio/" target="_blank"&gt;Visio&lt;/a&gt; is one of the applications from the Office suite that I use on a daily basis to design, model and draw diagrams, workflows and solutions. Visio 2010 has gotten a really nice facelift and a whole new set of features. The Ribbon has been one of the things I really missed in the 2007 release and the &lt;a href="http://www.microsoft.com/Sharepoint/default.mspx"&gt;SharePoint&lt;/a&gt; &lt;a href="http://sharepoint.microsoft.com/XAPS/FeatureImages/Overview/Visio.png" target="_blank"&gt;integration&lt;/a&gt;, that can be seen in the &lt;a href="http://sharepoint.microsoft.com/2010/Sneak_Peek/Pages/Overview-Video.aspx" target="_blank"&gt;Sneak Peak&lt;/a&gt;, looks awesome!&lt;/p&gt;  &lt;p&gt;Building workflows for SharePoint has mainly been done using either SharePoint Designer 2007 (dull and not reusable) or Visual Studio (complex). SharePoint 2010 will use the new Windows Workflow Foundation (4.0) and &lt;em&gt;rumors &lt;/em&gt;say that SharePoint Designer 2010 and Visual Studio 2010 has even better support for building workflows.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/CreatingSharePoint2010workflowswithVisio_E5C5/image_2.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="Microsoft SharePoint Workflow Visio Template" border="0" alt="Microsoft SharePoint Workflow Visio Template" align="right" src="http://www.wictorwilen.se/WindowsLiveWriter/CreatingSharePoint2010workflowswithVisio_E5C5/image_thumb.png" width="153" height="194" /&gt;&lt;/a&gt; Visio 2010 comes with a brand new template; &lt;a href="http://www.microsoft.com"&gt;&lt;em&gt;Microsoft&lt;/em&gt;&lt;/a&gt;&lt;em&gt; SharePoint Workflow&lt;/em&gt;. Using this template you can design your workflow and then export it. This exported file can then be imported to SharePoint Designer 2010 or Visual Studio 2010 (just a guess - Visual Studio 2010 with SharePoint 2010 dev tools is not yet publically available). Another guess is that you can export the workflows from SharePoint Designer 2010 and import them into Visio for better visualization or documentation of the workflow.&lt;/p&gt;  &lt;p&gt;You can design your SharePoint workflow just as you would design any other workflow using Visio, drag and drop and make a nice layout. This is great when you are making a specification for your SharePoint solution. Far better is that the ones responsible for the actual workflow or processes can design the workflows for you without knowing a bit about SharePoint, just some basic knowledge of Visio.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/CreatingSharePoint2010workflowswithVisio_E5C5/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Workflow sample" border="0" alt="Workflow sample" src="http://www.wictorwilen.se/WindowsLiveWriter/CreatingSharePoint2010workflowswithVisio_E5C5/image_thumb_2.png" width="404" height="116" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once you're done with your workflow you can validate it, so that you have not missed any branches or any mandatory information. Then you save it as a Visio or file or better export it as a &lt;em&gt;Visio Workflow Interchange&lt;/em&gt; (.vwi file).&lt;/p&gt;  &lt;p&gt;In Visio you can only make the actual design of the workflow, not the configuration which is done in SharePoint Designer 2010.&lt;/p&gt;  &lt;p&gt;The .vwi file is a zip compressed file containing the XOML files (XAML files for workflows) and some Visio information. This XOML file can of course be opened in Visual Studio for editing, you just require the SharePoint 2010 dlls :-)&lt;/p&gt;  &lt;p&gt;What I have not been able to test yet is the import in SharePoint Designer 2010, since it requires SharePoint 2010. &lt;/p&gt;  &lt;p&gt;I will start using it immediately for designing workflows!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-nd7h-WoWuhdZZDRQpOR7dW7IDs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-nd7h-WoWuhdZZDRQpOR7dW7IDs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-nd7h-WoWuhdZZDRQpOR7dW7IDs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-nd7h-WoWuhdZZDRQpOR7dW7IDs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=GIXK8m2-oTQ:g9BKb0zQAG0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=GIXK8m2-oTQ:g9BKb0zQAG0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=GIXK8m2-oTQ:g9BKb0zQAG0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=GIXK8m2-oTQ:g9BKb0zQAG0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=GIXK8m2-oTQ:g9BKb0zQAG0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=GIXK8m2-oTQ:g9BKb0zQAG0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=GIXK8m2-oTQ:g9BKb0zQAG0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=GIXK8m2-oTQ:g9BKb0zQAG0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/GIXK8m2-oTQ" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-07-20 07:46:07Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-07-20 07:46:07Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">18</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=489</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Creating-SharePoint-2010-workflows-with-Visio-2010.aspx</feedburner:origLink></item><item><title>Use Windows Azure as your SharePoint Records Center</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/IA6g8qfkhFc/Use-Windows-Azure-as-your-SharePoint-Records-Center.aspx</link><category>SharePoint</category><category>Windows Azure</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Thu, 09 Jul 2009 17:23:30 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Use-Windows-Azure-as-your-SharePoint-Records-Center.aspx</guid><description>&lt;h3&gt;Introduction&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com"&gt;Microsoft&lt;/a&gt; &lt;a href="http://www.microsoft.com/Sharepoint/default.mspx"&gt;SharePoint&lt;/a&gt; contains functionality for Records Management, which essentially is a storage for documents that you would like to store and manage in a separate records center to meet certain legal or other requirements or just to make &lt;em&gt;backups&lt;/em&gt; of certain document revisions. To be able to create a Records Center you need to have Microsoft Office SharePoint Server 2007 (MOSS). On the other hand you only need Windows SharePoint Services 3.0 (WSS) to send documents to the Records Center. &lt;/p&gt;  &lt;p&gt;You configure the Records Center connection in the Central Administration. When connecting to the Records Center all you do is specify a Url to a web service and a name. The Url points to a special MOSS web service called OfficialFile.asmx (http://server/_vti_bin/OfficialFile.asmx). Your receiving Records Center server does not have to be in the same farm as from where you send the document (and it should probably not be either). Another thing is that the receiving Records Center does not even have to be a SharePoint server. It's just a web service and we can implement it anywhere we like.&lt;/p&gt;  &lt;p&gt;I thought why not implement it using the &lt;a href="http://www.microsoft.com/azure/default.mspx" target="_blank"&gt;Windows Azure&lt;/a&gt; technologies? This would be a great solution when you do not want to invest in either MOSS or a new MOSS farm, when you really want your important documents to be stored on a completely different physical location etc. &lt;/p&gt;  &lt;h3&gt;&lt;/h3&gt;  &lt;h3&gt;Requirements&lt;/h3&gt;  &lt;p&gt;For this &lt;em&gt;exercise&lt;/em&gt; I have used Visual Studio 2008, Windows Azure SDK and the Windows Azure Visual Studio plugin. You also need to have access tokens/claims to the Windows Azure beta.&lt;/p&gt;  &lt;h3&gt;The Mission&lt;/h3&gt;  &lt;p&gt;To create our Cloud Records Center we need to create an Azure Web Role, which hosts the Records Management web service and a page to show our documents and some other logic. Our Records Center should also be able to handle some very basic record routing and metadata.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Note: the complete sample code can be downloaded &lt;a href="http://www.wictorwilen.se/files/AzureRecordsCenter.zip" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;Create the Web Role project&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/UseWindowsAzureasyourSharePointRecordsCe_1D97/image_2.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="Create a Web Cloud Service" border="0" alt="Create a Web Cloud Service" align="right" src="http://www.wictorwilen.se/WindowsLiveWriter/UseWindowsAzureasyourSharePointRecordsCe_1D97/image_thumb.png" width="199" height="72" /&gt;&lt;/a&gt; First of all we need to fire up Visual Studio 2008 with the plugins as above and create a new Web Cloud Service called &lt;em&gt;AzureRecordsCenter&lt;/em&gt;.&lt;/p&gt;  &lt;h3&gt;Create the data storage&lt;/h3&gt;  &lt;p&gt;Without digging to deep into the Windows Azure table and blob storage I just briefly describe how the storage is implemented. This sample has two tables; one for storing the routings and one to store information about the submitted documents. The blob storage is used to store the actual documents. The Windows Azure SDK contains a sample &lt;em&gt;StorageClient&lt;/em&gt; which makes it really easy to work with the data, and this sample is used as a reference in the application.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/UseWindowsAzureasyourSharePointRecordsCe_1D97/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Storage class diagram" border="0" alt="Storage class diagram" src="http://www.wictorwilen.se/WindowsLiveWriter/UseWindowsAzureasyourSharePointRecordsCe_1D97/image_thumb_1.png" width="523" height="250" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I've created two classes to represent the tables; DocumentEntity and RecordRoutingEntity and a class that handles the actual data services called DataContext. The data classes has a primary key property combination; PartitionKey and RowKey (inherited from TableStorageEntity from the StorageClient sample) - &lt;a href="http://www.25hoursaday.com/weblog/2009/01/07/SomeThoughtsOnChoosingPartitionKeysInWindowsAzuresTableStorage.aspx" target="_blank"&gt;I only use the PartitionKey and RowKey has a static value&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The RecordRoutingEntity is used to store the name and optional description of the record routings and the DocumentEntity contains some information about the documents and a reference (Guid) to the name of the blob. &lt;/p&gt;  &lt;p&gt;Take a look at the &lt;a href="http://www.wictorwilen.se/files/AzureRecordsCenter.zip" target="_blank"&gt;code&lt;/a&gt; for more information.&lt;/p&gt;  &lt;p&gt;To be able to add routings the default.aspx was modified and I also added a Setup.aspx page which creates the tables in the Windows Azure storage. &lt;/p&gt;  &lt;h3&gt;The OfficialFile.asmx web service&lt;/h3&gt;  &lt;p&gt;To be able to create our own Cloud Records Center we have to implement the same web service as MOSS offers - the &lt;a href="http://msdn.microsoft.com/en-us/library/aa981147.aspx" target="_blank"&gt;OfficialFile.asmx&lt;/a&gt;. The .NET Framework SDK contains a great tool, &lt;a href="http://msdn.microsoft.com/en-us/library/7h3ystb6(VS.80).aspx" target="_blank"&gt;wsdl.exe&lt;/a&gt;, for converting a WSDL from a web service into a server side interface. Use the Url to the web service from any of your MOSS servers.&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; wsdl /out:IRecordsRepositorySoap.cs /n:AzureRecordsCenter_WebRole /serverinterface &lt;br /&gt;http://xxxxx/_vti_bin/OfficialFile.asmx?WSDL&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;This will generate an IRecordsRepositorySoap.cs file containing the correct interface for the records management web service. So we create a new Web Service in our project, called OfficialFile.asmx, add our generated interface file to the solution and then we let this new web service implement the interface we extracted from the WSDL. The namespace for the web service is also changed into the same namespace as the official OfficialFile.asmx use.&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; [WebService(Namespace = &lt;span style="color: #006080"&gt;"http://schemas.microsoft.com/sharepoint/soap/recordsrepository/"&lt;/span&gt;)]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; [System.ComponentModel.ToolboxItem(&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;)]    &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; OfficialFile : System.Web.Services.WebService, IRecordsRepositorySoap &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; ...&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This interface now contains four methods:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa981121.aspx" target="_blank"&gt;SubmitFile&lt;/a&gt; - the method which retrieves the submitted documents &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa981102.aspx" target="_blank"&gt;GetServerInfo&lt;/a&gt; - should return info about the implementation &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa981149.aspx" target="_blank"&gt;GetRecordRoutingCollection&lt;/a&gt; - returns all record routing types &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa981455.aspx" target="_blank"&gt;GetRecordRouting&lt;/a&gt; - returns info about a specified record routing &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The three latter are pretty straight forward and the SubmitFile method receives the file, the route to use (the name of the Content Type) and all metadata of the file. First it creates the document entry in the Document table and the uploads the blob. My sample also validates that there is a valid route and otherwise returns an error.&lt;/p&gt;

&lt;h3&gt;&lt;/h3&gt;

&lt;h3&gt;Put it in the cloud&lt;/h3&gt;

&lt;p&gt;To get it all to work you have to create a new Hosted Service in the &lt;a href="https://lx.azure.microsoft.com/" target="_blank"&gt;Windows Azure Developers Portal&lt;/a&gt; and then you have to create a Storage Account. Modify the Service Configuration of your cloud service to match your storage account.&lt;/p&gt;

&lt;p&gt;Build the solution and use the Publish function from Visual Studio to publish your application to the cloud and put it in either the Staging or Production environment and wait for it to start (this may take a while).&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/UseWindowsAzureasyourSharePointRecordsCe_1D97/image_20.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Azure Records Center is running" border="0" alt="Azure Records Center is running" src="http://www.wictorwilen.se/WindowsLiveWriter/UseWindowsAzureasyourSharePointRecordsCe_1D97/image_thumb_9.png" width="244" height="180" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Swapping between staging and production has been quite troublesome and results in an error or timeout quite often for me the last few days.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Browse to your cloud web application and add a route or two. The name of the route should correspond to the name of your Content Types.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/UseWindowsAzureasyourSharePointRecordsCe_1D97/image_14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Azure Records Center" border="0" alt="Azure Records Center" src="http://www.wictorwilen.se/WindowsLiveWriter/UseWindowsAzureasyourSharePointRecordsCe_1D97/image_thumb_6.png" width="244" height="222" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;In the image above I have added a new Route called Document.&lt;/p&gt;

&lt;h3&gt;Configure SharePoint&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/UseWindowsAzureasyourSharePointRecordsCe_1D97/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="Records center configuration in Central Administration" border="0" alt="Records center configuration in Central Administration" align="right" src="http://www.wictorwilen.se/WindowsLiveWriter/UseWindowsAzureasyourSharePointRecordsCe_1D97/image_thumb_2.png" width="196" height="107" /&gt;&lt;/a&gt; To be able to send the documents from SharePoint to our cloud records center, all we have to do is go to Central Administration of your SharePoint farm and configure the Records Center Connection, found under Application Management/External Service Connections/Records Center. Enter the Url of your hosted service and append the OfficialFile.asmx path (http://&lt;em&gt;&lt;strong&gt;nnnn&lt;/strong&gt;&lt;/em&gt;.cloudapp.net/OfficialFile.asmx) and enter a name for your Records Center connection.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/UseWindowsAzureasyourSharePointRecordsCe_1D97/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.wictorwilen.se/WindowsLiveWriter/UseWindowsAzureasyourSharePointRecordsCe_1D97/image_thumb_3.png" width="287" height="272" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;Record it!&lt;/h3&gt;

&lt;p&gt;To try it out, just head on over to a Document Library and add a document and the open up the list item menu and choose Send To - Azure Records Center (in my case).&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/UseWindowsAzureasyourSharePointRecordsCe_1D97/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Send it to Windows Azure" border="0" alt="Send it to Windows Azure" src="http://www.wictorwilen.se/WindowsLiveWriter/UseWindowsAzureasyourSharePointRecordsCe_1D97/image_thumb_5.png" width="404" height="197" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Wait for the file to be uploaded to your Cloud Records Center.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/UseWindowsAzureasyourSharePointRecordsCe_1D97/image_16.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Document uploaded successfully" border="0" alt="Document uploaded successfully" src="http://www.wictorwilen.se/WindowsLiveWriter/UseWindowsAzureasyourSharePointRecordsCe_1D97/image_thumb_7.png" width="244" height="56" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Then head back to your Azure web application and load the default page. You should now be able to see the document there and click on the link to bring it up.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/UseWindowsAzureasyourSharePointRecordsCe_1D97/image_18.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="There it is!" border="0" alt="There it is!" src="http://www.wictorwilen.se/WindowsLiveWriter/UseWindowsAzureasyourSharePointRecordsCe_1D97/image_thumb_8.png" width="244" height="94" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;If you upload a document of a content type that is not registered as a route, then you should get an error.&lt;/p&gt;

&lt;h3&gt;Conclusions&lt;/h3&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Now you know how to build a simple Records Center utilizing Windows Azure and known .NET techniques. This is in no way limited to Windows Azure, you can host it or similar solutions anywhere on any platform whenever you want.&lt;/p&gt;

&lt;p&gt;If you want to have a Records Center and don't want to buy a MOSS license, then this solution can be a good fit.&lt;/p&gt;

&lt;h3&gt;Disclaimer&lt;/h3&gt;

&lt;p&gt;The &lt;a href="http://www.wictorwilen.se/files/AzureRecordsCenter.zip" target="_blank"&gt;provided code&lt;/a&gt; is in no way ready for production. It has no good exception handling nor security checks. It is provided as a sample for you to look at if you need to get started with either building a Records Center or just want to learn something about Windows Azure.&lt;/p&gt;

&lt;p&gt;Have a nice summer!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4ct-HZXjEwSQeKh8QGCIzNs8Ptk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4ct-HZXjEwSQeKh8QGCIzNs8Ptk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4ct-HZXjEwSQeKh8QGCIzNs8Ptk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4ct-HZXjEwSQeKh8QGCIzNs8Ptk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=IA6g8qfkhFc:V60OoZDZ3Ns:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=IA6g8qfkhFc:V60OoZDZ3Ns:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=IA6g8qfkhFc:V60OoZDZ3Ns:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=IA6g8qfkhFc:V60OoZDZ3Ns:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=IA6g8qfkhFc:V60OoZDZ3Ns:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=IA6g8qfkhFc:V60OoZDZ3Ns:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=IA6g8qfkhFc:V60OoZDZ3Ns:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=IA6g8qfkhFc:V60OoZDZ3Ns:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/IA6g8qfkhFc" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-07-10 00:23:30Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-07-10 00:23:30Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">4</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=488</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Use-Windows-Azure-as-your-SharePoint-Records-Center.aspx</feedburner:origLink></item><item><title>SharePoint Virtualization Survey - results</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/5g32d4WUfu0/SharePoint-Virtualization-Survey-results.aspx</link><category>SharePoint</category><category>Virtual Server</category><category>Hardware</category><category>Virtual PC</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Sun, 21 Jun 2009 19:31:59 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/SharePoint-Virtualization-Survey-results.aspx</guid><description>&lt;p&gt;About two months ago I tried to reach out to the &lt;a href="http://www.microsoft.com/Sharepoint/default.mspx"&gt;SharePoint&lt;/a&gt; community with a small survey on how Virtualization is used with SharePoint. The survey was primarily for my own interest to benchmark what others are doing, but I also thought that I should share this with everyone. SharePoint and Virtualization is an interesting piece of discussion; some despise it and some love it. For more information on SharePoint and virtualization read &lt;a href="http://sharepointmagazine.net/technical/administration/sharepoint-farm-configuring-and-deployment-part-5-virtualization"&gt;this great article&lt;/a&gt; from &lt;a href="http://sharepointmagazine.net/" target="_blank"&gt;SharePointMagazine.net&lt;/a&gt;.&lt;/p&gt;  &lt;h3&gt;And now the results&lt;/h3&gt;  &lt;p&gt;All but one answering this survey said that they were using virtualization in their SharePoint environment. Not that surprising - I guess that if you don't virtualize then you do not even bother to look at the survey.&lt;/p&gt;  &lt;h4&gt;Virtualization technology&lt;/h4&gt;  &lt;p&gt;Since this survey did not specify if it was for production, test, staging or development the answers on what virtualization technology that was used was quite spread. &lt;a href="http://www.microsoft.com"&gt;Microsoft&lt;/a&gt; Hyper-V and VMWare ESX Server was the two products that most survey participants used. Not surprisingly was Microsoft Virtual PC right behind those two.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/SharePointVirtualizationSurveyresults_98E5/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.wictorwilen.se/WindowsLiveWriter/SharePointVirtualizationSurveyresults_98E5/image_thumb.png" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;What is virtualized?&lt;/h4&gt;  &lt;p&gt;Almost everyone (95.7%) is virtualizing their development environment and half (50%) of the survey participants is virtualizing their production environment. This was a bit higher than I expected.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/SharePointVirtualizationSurveyresults_98E5/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.wictorwilen.se/WindowsLiveWriter/SharePointVirtualizationSurveyresults_98E5/image_thumb_1.png" width="244" height="135" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;But what is virtualized then? The Web Front End was the clear "winner" with the Query service as a runner up. A quite high number of respondents answered that they were virtualizing the database role (73,9%) but only half of them could really recommend it (37,2%). The Excel Services role was something that about half of the participants virtualized (47,8%) and recommended for virtualiztion (44,2%).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/SharePointVirtualizationSurveyresults_98E5/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.wictorwilen.se/WindowsLiveWriter/SharePointVirtualizationSurveyresults_98E5/image_thumb_2.png" width="244" height="145" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The majority did not recommend virtualizing the database role (80%) nor the Index role (43,3%).&lt;/p&gt;  &lt;h4&gt;Satisfaction!&lt;/h4&gt;  &lt;p&gt;Almost everyone was very satisfied (40%) or satisfied (53%) with virtualizing their SharePoint environments and only a few were dissatisfied (7%). 98% of the respondents do recommend virtualizing SharePoint.&lt;/p&gt;  &lt;h4&gt;&lt;/h4&gt;  &lt;h4&gt;Why?&lt;/h4&gt;  &lt;p&gt;One thing that I really wanted to find out was why SharePoint is virtualized and here are what the survey participants thought:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="447"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="167"&gt; &lt;/td&gt;        &lt;td valign="top" width="85" align="center"&gt;&lt;strong&gt;Agrees&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="85" align="center"&gt;&lt;strong&gt;Neutral&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="108" align="center"&gt;&lt;strong&gt;Does not agree&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="165"&gt;Lower hardware cost&lt;/td&gt;        &lt;td valign="top" width="86" align="center"&gt;&lt;strong&gt;82%&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="86" align="center"&gt;14%&lt;/td&gt;        &lt;td valign="top" width="108" align="center"&gt;5%&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="163"&gt;Lower license costs&lt;/td&gt;        &lt;td valign="top" width="86" align="center"&gt;21%&lt;/td&gt;        &lt;td valign="top" width="86" align="center"&gt;&lt;strong&gt;47%&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="108" align="center"&gt;33%&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="163"&gt;Lower maintenance costs&lt;/td&gt;        &lt;td valign="top" width="86" align="center"&gt;&lt;strong&gt;62%&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="87" align="center"&gt;29%&lt;/td&gt;        &lt;td valign="top" width="108" align="center"&gt;9%&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="162"&gt;Better performance&lt;/td&gt;        &lt;td valign="top" width="86" align="center"&gt;7%&lt;/td&gt;        &lt;td valign="top" width="87" align="center"&gt;&lt;strong&gt;52%&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="108" align="center"&gt;40%&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="162"&gt;Improves scalability&lt;/td&gt;        &lt;td valign="top" width="86" align="center"&gt;&lt;strong&gt;64%&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="87" align="center"&gt;24%&lt;/td&gt;        &lt;td valign="top" width="108" align="center"&gt;12%&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="162"&gt;Improved security&lt;/td&gt;        &lt;td valign="top" width="86" align="center"&gt;27%&lt;/td&gt;        &lt;td valign="top" width="87" align="center"&gt;&lt;strong&gt;56%&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="108" align="center"&gt;17%&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="162"&gt;Improved redundancy&lt;/td&gt;        &lt;td valign="top" width="86" align="center"&gt;&lt;strong&gt;60%&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="87" align="center"&gt;36%&lt;/td&gt;        &lt;td valign="top" width="108" align="center"&gt;5%&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="162"&gt;Safe backup&lt;/td&gt;        &lt;td valign="top" width="86" align="center"&gt;&lt;strong&gt;55%&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="87" align="center"&gt;31%&lt;/td&gt;        &lt;td valign="top" width="108" align="center"&gt;14%&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="162"&gt;Simplifies development&lt;/td&gt;        &lt;td valign="top" width="86" align="center"&gt;&lt;strong&gt;86%&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="87" align="center"&gt;14%&lt;/td&gt;        &lt;td valign="top" width="108" align="center"&gt;0%&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="162"&gt;Simplifies deployment&lt;/td&gt;        &lt;td valign="top" width="86" align="center"&gt;&lt;strong&gt;73%&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="87" align="center"&gt;20%&lt;/td&gt;        &lt;td valign="top" width="108" align="center"&gt;7%&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="162"&gt;Positive effect on the environment&lt;/td&gt;        &lt;td valign="top" width="86" align="center"&gt;&lt;strong&gt;74%&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="87" align="center"&gt;26%&lt;/td&gt;        &lt;td valign="top" width="108" align="center"&gt;0%&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Simplified development and lower hardware costs was the two ones that was quite expected. When looking at the license costs most people were neutral or thought that the license costs were higher with virtualization, probably due to the fact that you might need more (virtual) servers to have the same performance (only 7% thought performance was better with virtualization).&lt;/p&gt;  &lt;p&gt;The numbers speaks for themselves and I do like that 74% also thinks that this has a positive effect on the environment.&lt;/p&gt;  &lt;p&gt;Any other comments on this survey, pleas post a comment below.&lt;/p&gt;  &lt;p&gt;Have a nice summer&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/U5r20kaKC0McwTdUbuMMdtnBrJE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/U5r20kaKC0McwTdUbuMMdtnBrJE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/U5r20kaKC0McwTdUbuMMdtnBrJE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/U5r20kaKC0McwTdUbuMMdtnBrJE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=5g32d4WUfu0:qcv44srofJg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=5g32d4WUfu0:qcv44srofJg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=5g32d4WUfu0:qcv44srofJg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=5g32d4WUfu0:qcv44srofJg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=5g32d4WUfu0:qcv44srofJg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=5g32d4WUfu0:qcv44srofJg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=5g32d4WUfu0:qcv44srofJg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=5g32d4WUfu0:qcv44srofJg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/5g32d4WUfu0" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-06-22 02:31:59Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-06-22 02:31:59Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">4</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=487</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/SharePoint-Virtualization-Survey-results.aspx</feedburner:origLink></item><item><title>70-630 passed! Do you really call this a certification!</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/-siQieDFocs/70630-passed-Do-you-really-call-this-a-certification.aspx</link><category>SharePoint</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Thu, 11 Jun 2009 07:24:16 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/70630-passed-Do-you-really-call-this-a-certification.aspx</guid><description>&lt;p&gt;Just in time for next version of &lt;a href="http://www.microsoft.com/Sharepoint/default.mspx"&gt;SharePoint&lt;/a&gt; to arrive I just completed the final certification exam for SharePoint 2007, the &lt;a href="http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-630&amp;locale=en-us"&gt;70-630 Microsoft Office SharePoint Server 2007, Configuring&lt;/a&gt;. As always I did think that it should be some tricky questions or problems to solve in the exam, I even installed a MOSS RTM last night just to walk through the admin interfaces before the infrastructure upgrade. But to my disappointment this certification was by no means any challenge. This was by far the easiest of the four exams.&lt;/p&gt;  &lt;p&gt;After taking the two developer (&lt;a href="http://www.wictorwilen.se/Post/70541-passed.aspx"&gt;70-541&lt;/a&gt; and &lt;a href="http://www.wictorwilen.se/Post/70542-passed.aspx"&gt;70-540&lt;/a&gt;) and the configuring exams (&lt;a href="http://www.wictorwilen.se/Post/70631-passed.aspx"&gt;70-631&lt;/a&gt; and now 70-630) I really think that &lt;a href="http://www.microsoft.com"&gt;Microsoft&lt;/a&gt; has failed in creating exams that has any kind of value as a certification. To have some kind of validity on these exams/certifications they should give you a challenge, it should be (must be) hard to pass them. I really hope that Microsoft totally changes how these certifications are outlined and put together for the certifications of the next version of SharePoint. Passing these exams today says nothing (and do not even mention if you failed them). Make the questions into more troubleshooting, especially the configuring exams, have questions on the best practices, make some kind of scenario with linked questions and perhaps even some kind of virtual lab I understand that all problems and best practices are not "invented" when the exams hits the streets, but why not having a level 2 exam coming a year or so later, that has some higher status.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.zimmergren.net/archive/2009/06/05/sweden-sharepoint-user-group-may-28th-re-cap.aspx"&gt;Last week&lt;/a&gt; at the SharePoint User Group meeting we had a session with Sweden's first SharePoint Master who told us about the Master certification program - and that is what I call certification. Ok, not everyone will be or even have the chance to be a Master (&lt;a href="http://www.harbar.net/archive/2009/05/07/reality-check-microsoft-certified-master-for-sharepoint-2007.aspx"&gt;read Spencer Harbars post&lt;/a&gt;) and I do not want the standard exams to be this hard/impossible. Those who passes the MCM are not only Masters they are immortals!&lt;/p&gt;  &lt;p&gt;Anyways, I know have the four ones and really looking forward to being acquainted with SharePoint 2010. Not all was bad with these exams though, they made me read through a set of books, making some labs on my own and with that I learned a whole lot.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qC4TeH6yPFRtdHBE8khlupCfn20/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qC4TeH6yPFRtdHBE8khlupCfn20/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qC4TeH6yPFRtdHBE8khlupCfn20/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qC4TeH6yPFRtdHBE8khlupCfn20/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=-siQieDFocs:ll-N9JcwAUI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=-siQieDFocs:ll-N9JcwAUI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=-siQieDFocs:ll-N9JcwAUI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=-siQieDFocs:ll-N9JcwAUI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=-siQieDFocs:ll-N9JcwAUI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=-siQieDFocs:ll-N9JcwAUI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=-siQieDFocs:ll-N9JcwAUI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=-siQieDFocs:ll-N9JcwAUI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/-siQieDFocs" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-06-11 14:24:16Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-06-11 14:24:16Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">6</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=486</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/70630-passed-Do-you-really-call-this-a-certification.aspx</feedburner:origLink></item><item><title>Six ways to store settings in SharePoint</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/GGCaWc3JEfE/Six-ways-to-store-settings-in-SharePoint.aspx</link><category>SharePoint</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Tue, 09 Jun 2009 05:15:39 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Six-ways-to-store-settings-in-SharePoint.aspx</guid><description>&lt;p&gt;When developing applications or custom solutions for &lt;a href="http://www.microsoft.com/Sharepoint/default.mspx"&gt;SharePoint&lt;/a&gt; you will on several occasions have to store settings for you application of some kind. When developing database driven or other custom solutions you easily create a database table or make the settings in app/web.config file. You can of course use these approaches when developing for SharePoint, but there are some things to consider when doing this. This post will outline some approaches you can use to store your settings.&lt;/p&gt;&lt;p&gt;What I mean with application or solution settings is some kind of settings that you need for you application to work, such as a Url to a web service or a username and password. These settings are normally only editable by administrators, which requires you to have some security plans, and you need an interface to edit the settings.&lt;/p&gt;&lt;p&gt;Worth to have in mind is that SharePoint can span multiple servers and web applications, it also has the Site Collection and Site scopes which might need different settings if your application runs on several places.&lt;/p&gt;&lt;h3&gt;&lt;/h3&gt;&lt;h3&gt;Using a SharePoint List&lt;/h3&gt;&lt;p&gt;Creating a database table for storing settings is not the best way in a SharePoint solution - you would use a SharePoint list for this instead. This is the easiest way. Creating a custom list with Title and a Value allows you to store all your settings in one place. There is no need to create a user interface, since you use out-of-the-box functionality and you can secure the list by using permissions on it. The drawback is you need some information (read other setting) that tells you where this list is located, so you're back on square one.&lt;/p&gt;&lt;h3&gt;Using web.config&lt;/h3&gt;&lt;p&gt;Using web.config is another way to store your settings. It's easy to store information in the &lt;a href="http://msdn.microsoft.com/en-us/library/ms228154.aspx"&gt;appSettings&lt;/a&gt; element using a key/value combo. The .NET Framework have built-in functionality to read these settings and SharePoint has some (not so good working) features to deploy the settings in your farm with the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebconfigmodification.aspx"&gt;SPWebConfigModification&lt;/a&gt; class. This approach can only be applied if your settings are web-application wide and you either deploy the settings with the SharePoint object model, which can be quite cumbersome, or manually edit the web.config file on all WFE's.&lt;/p&gt;&lt;h3&gt;Using the SPWeb object&lt;/h3&gt;&lt;p&gt;The &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.aspx"&gt;SPWeb&lt;/a&gt; object has a &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.properties.aspx"&gt;Properties&lt;/a&gt; property that is persistable &lt;a href="http://msdn.microsoft.com/en-us/library/system.collections.specialized.stringdictionary.aspx"&gt;StringDictionary&lt;/a&gt; stored on the Site (SPWeb) level. This is a perfect solution when you have to store Site specific settings and have the setting available over all your farm. The Properties property is used like this:&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; SPWeb  web = ...;&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color: #008000"&gt;// set the value&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; web.Properties[&lt;span style="color: #006080"&gt;&amp;quot;TheSetting&amp;quot;&lt;/span&gt;] = &lt;span style="color: #006080"&gt;&amp;quot;the value&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span style="color: #008000"&gt;// update the value&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; web.Properties.Update();&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; &lt;span style="color: #008000"&gt;// get the value&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; val = web.Properties[&lt;span style="color: #006080"&gt;&amp;quot;TheSetting&amp;quot;&lt;/span&gt;];&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Easy and simple when you have to store key/value combinations, but not so good when you have to store more complex objects, then you have to make some Xml serialization/deseralization yourself.&lt;/p&gt;&lt;p&gt;The permissions in this case is controlled by the MangedWeb permission and you have to build your custom interface.&lt;/p&gt;&lt;h3&gt;Using the SPSite object&lt;/h3&gt;&lt;p&gt;The &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsite.aspx"&gt;SPSite&lt;/a&gt; object does not have any Properties property like the SPWeb object, so if you have to store your settings on the Site Collection level you just use the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsite.rootweb.aspx"&gt;SPSite.RootWeb&lt;/a&gt; SPWeb object and use the approach above.&lt;/p&gt;&lt;h3&gt;Using SPWebApplication Properties&lt;/h3&gt;&lt;p&gt;If you need to store your settings on the Web Application level and you don't to make changes to the web.config, then you can use the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebapplication.aspx"&gt;SPWebApplication&lt;/a&gt; object. The SPWebApplication object inherits from the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.sppersistedobject.aspx"&gt;SPPersistedObject&lt;/a&gt; which has a &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.sppersistedobject.properties.aspx"&gt;Properties&lt;/a&gt; property. This property is a HashTable so you can store key/value combos here. The value can be of any type, as long as it can be serialized.&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; SPWebApplication webApp = ...&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;object&lt;/span&gt; obj = ...&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color: #008000"&gt;// set value&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; webApp.Add(&lt;span style="color: #006080"&gt;&amp;quot;TheSetting&amp;quot;&lt;/span&gt;, obj);&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; &lt;span style="color: #008000"&gt;// persist it&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; webApp.Update();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;This approach requires the user to be farm administrator and you have to build your own interface.&lt;/p&gt;&lt;h3&gt;Using custom SPPersistedObjects&lt;/h3&gt;&lt;p&gt;Perhaps the best (imho) way to store settings for your web application is to use custom SPPersistedObjects. This approach is very handy when you have to store multiple settings and more complex values. You create your own class that derives from the SPPersistedObject and add your settings as properties to the class and marks them with the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.persistedattribute.aspx"&gt;Persisted&lt;/a&gt; attribute.&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; TheSettings: SPPersistedObject {&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; TheSettings() {}&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;&amp;#160; &lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; TheSettings(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; name, SPPersistedObject parent, Guid id) &lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;         : &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;(name, parent, id) { }&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;     &lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;     [Persisted]&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; WebServiceUrl;&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Then you use the SPWebApplication &lt;a href="http://msdn.microsoft.com/en-us/library/aa543304.aspx"&gt;GetChild&lt;/a&gt; method to retrieve your settings.&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; TheSettings settigs = webApplication&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;     .GetChild&amp;lt;TheSettings&amp;gt;(&lt;span style="color: #006080"&gt;&amp;quot;theSettings&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;I usually add two static methods to my settings class for easy creating and retrieval of settings:&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; TheSettings GetSettings(SPWebApplication webApplication) {&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;     TheSettings settings = webApplication.GetChild&amp;lt;TheSettings&amp;gt;(&lt;span style="color: #006080"&gt;&amp;quot;theSettings&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;(settings == &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;) {&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; TheSettings.CreateNew(webApplication);&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; settings;&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; TheSettings CreateNew(SPWebApplication webApplication) {&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;    &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; TheSettings(&lt;span style="color: #006080"&gt;&amp;quot;theSettings&amp;quot;&lt;/span&gt;,  webApplication, Guid.NewGuid());&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;This also requires farm administrator to persist and you have to create an interface&lt;/p&gt;&lt;h3&gt;&lt;/h3&gt;&lt;h3&gt;That's it&lt;/h3&gt;&lt;p&gt;There you have it; six different ways to store and retrieve settings for you SharePoint custom application. When to use which one is up to you and your needs.&lt;/p&gt;&lt;p&gt;What are you preferred ways or do you have any other suggestions or additions?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Q9gFLSaIHeuLt4Ei9bRL9vC3NEw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Q9gFLSaIHeuLt4Ei9bRL9vC3NEw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Q9gFLSaIHeuLt4Ei9bRL9vC3NEw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Q9gFLSaIHeuLt4Ei9bRL9vC3NEw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=GGCaWc3JEfE:HgmXSjYGmZk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=GGCaWc3JEfE:HgmXSjYGmZk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=GGCaWc3JEfE:HgmXSjYGmZk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=GGCaWc3JEfE:HgmXSjYGmZk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=GGCaWc3JEfE:HgmXSjYGmZk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=GGCaWc3JEfE:HgmXSjYGmZk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=GGCaWc3JEfE:HgmXSjYGmZk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=GGCaWc3JEfE:HgmXSjYGmZk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/GGCaWc3JEfE" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-06-09 12:15:39Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-06-09 12:15:39Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">8</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=485</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Six-ways-to-store-settings-in-SharePoint.aspx</feedburner:origLink></item><item><title>New release for SPExLib with SharePoint Linq extensions</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/Txi1tQ5nhwU/New-release-for-SPExLib-with-SharePoint-Linq-extensions.aspx</link><category>SharePoint</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Fri, 29 May 2009 18:00:39 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/New-release-for-SPExLib-with-SharePoint-Linq-extensions.aspx</guid><description>&lt;p&gt;I'm really glad that we have managed to get a really nice release of the &lt;a href="http://spexlib.codeplex.com/"&gt;SharePoint Extensions Lib&lt;/a&gt;, SPExLib, out. This &lt;a href="http://spexlib.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=28038"&gt;brand new release (12.0.0.0)&lt;/a&gt; has significantly been improved since the first release a couple of weeks ago.&lt;/p&gt;&lt;p&gt;&lt;a href="http://solutionizing.net/"&gt;Keith Dahlby&lt;/a&gt; has made some really nice Linq extensions for &lt;a href="http://www.microsoft.com/Sharepoint/default.mspx"&gt;SharePoint&lt;/a&gt; which is available in this release. These extensions are also IDisposable safe when using on SPWeb and SPSite collections. &lt;/p&gt;&lt;p&gt;By referencing the SPExLib.dll and include the namespaces you can easily write code like this (taken directly from one of my current projects):&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; SPList regions = web.Lists[&lt;span style="color: #006080"&gt;&amp;quot;Regions&amp;quot;&lt;/span&gt;];         &lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; regions.GetItems(&lt;span style="color: #006080"&gt;&amp;quot;&amp;lt;Where&amp;gt;&amp;lt;Eq&amp;gt;&amp;lt;FieldRef Name='Customer'/&amp;gt;&amp;lt;Value Type='Lookup'&amp;gt;{0}&amp;lt;/Value&amp;gt;&amp;lt;/Eq&amp;gt;&amp;lt;/Where&amp;gt;&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;                     .FormatWith(lookupValue)&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;                 )&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;            .ForEach&amp;lt;SPListItem&amp;gt;(&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;                     item =&amp;gt; ddlRegion.Items.Add(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ListItem(item[&lt;span style="color: #006080"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt;].ToString(), item.ID.ToString()))&lt;/pre&gt;&lt;!--CRLF--&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;             );&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;As you can see the sample uses a number of extension methods; SPList.GetItems() can accept a CAML query directly, System.String has a FormatWith method, the SPListItemCollection has a ForEach method.&lt;/p&gt;&lt;p&gt;&lt;a href="http://spexlib.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=28038"&gt;Download it&lt;/a&gt; and try it out, you will find yourself more productive!&lt;/p&gt;&lt;p&gt;Have a nice weekend.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/aDGredenEqqXmxymQpDQLG5Ey7s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aDGredenEqqXmxymQpDQLG5Ey7s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/aDGredenEqqXmxymQpDQLG5Ey7s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aDGredenEqqXmxymQpDQLG5Ey7s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=Txi1tQ5nhwU:1gxfRNq3JfM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=Txi1tQ5nhwU:1gxfRNq3JfM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=Txi1tQ5nhwU:1gxfRNq3JfM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=Txi1tQ5nhwU:1gxfRNq3JfM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=Txi1tQ5nhwU:1gxfRNq3JfM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=Txi1tQ5nhwU:1gxfRNq3JfM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=Txi1tQ5nhwU:1gxfRNq3JfM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=Txi1tQ5nhwU:1gxfRNq3JfM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/Txi1tQ5nhwU" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-05-30 01:00:39Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-05-30 01:00:39Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=484</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/New-release-for-SPExLib-with-SharePoint-Linq-extensions.aspx</feedburner:origLink></item><item><title>SharePoint Online updated</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/EE8ZROgt1CE/SharePoint-Online-updated.aspx</link><category>SharePoint</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Wed, 27 May 2009 17:10:38 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/SharePoint-Online-updated.aspx</guid><description>&lt;p&gt;&lt;a href="http://www.microsoft.com"&gt;Microsoft&lt;/a&gt; has updated &lt;a href="http://www.microsoft.com/online/default.mspx"&gt;SharePoint Online&lt;/a&gt; with a patch that resolves the bug that prohibited you from getting the service descriptions from the web services, that &lt;a href="http://www.wictorwilen.se/Post/Update-to-the-Custom-code-with-SharePoint-Online-and-Windows-Azure-due-to-bug-in-SharePoint-Online.aspx"&gt;I previously described&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;This means that you now can use Visual Studio or SharePoint Designer (or any other tool that you like) to connect to the &lt;a href="http://www.microsoft.com/Sharepoint/default.mspx"&gt;SharePoint&lt;/a&gt; Online web services and code away, instead of going to some local instance to get the descriptions.&lt;/p&gt;  &lt;p&gt;Does anybody know where the Microsoft Online team posts all updates/changes to the BPOS? I got this information from Troy (from the BPOS team) commenting on my post.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/arQueTqTiXffmxmHljX9U9fRY9Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/arQueTqTiXffmxmHljX9U9fRY9Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/arQueTqTiXffmxmHljX9U9fRY9Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/arQueTqTiXffmxmHljX9U9fRY9Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=EE8ZROgt1CE:msS8BjjDSy0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=EE8ZROgt1CE:msS8BjjDSy0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=EE8ZROgt1CE:msS8BjjDSy0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=EE8ZROgt1CE:msS8BjjDSy0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=EE8ZROgt1CE:msS8BjjDSy0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=EE8ZROgt1CE:msS8BjjDSy0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=EE8ZROgt1CE:msS8BjjDSy0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=EE8ZROgt1CE:msS8BjjDSy0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/EE8ZROgt1CE" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-05-28 00:10:38Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-05-28 00:10:38Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=483</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/SharePoint-Online-updated.aspx</feedburner:origLink></item><item><title>SharePoint Service Pack 2 known, found and experienced problems</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/o4KulUahBag/SharePoint-Service-Pack-2-known-found-and-experienced-problems.aspx</link><category>SharePoint</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Thu, 21 May 2009 17:41:18 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/SharePoint-Service-Pack-2-known-found-and-experienced-problems.aspx</guid><description>&lt;p&gt;Installing a new service pack onto a server product is not just firing up the installer and hit next-&gt;next-&gt;finish. You should carefully read through the documentation and test it thoroughly. Service Pack 2 for &lt;a href="http://www.microsoft.com/SharePoint/" target="_blank"&gt;SharePoint&lt;/a&gt; has been long awaited and I’ve seen people the last 24 hours installing it like madness just wanting to get their hands on the new features/updates. I did also install it just minutes after it was released (on my dev machine that is being reinstalled any hour now, when Windows 7 RC is out).  &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.andrewconnell.com/"&gt;Andrew Connell&lt;/a&gt; said it well in a tweet just recently: &lt;a href="http://twitter.com/andrewconnell/status/1650788194"&gt;“I’s watching everyone else install #sharepoint SP2 to see if there are issues (ala IU's AAM fiasco)... thanks in advance guys :)”&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.twitter.com/"&gt;Twitter&lt;/a&gt; is one nice source of real-time update on what is happening right now on just about everything, especially when it comes to &lt;a href="http://search.twitter.com/search?q=%23SharePoint"&gt;#SharePoint&lt;/a&gt;. I’ve collected some of the known, found and discovered problems with Service Pack 2 for Windows SharePoint Services 3.0 and Office SharePoint Server 2007.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;IMPORTANT UPDATE&lt;/font&gt;&lt;/strong&gt;: &lt;a href="http://blogs.msdn.com/sharepoint/archive/2009/05/21/attention-important-information-on-service-pack-2.aspx"&gt;Important information on Service Pack 2&lt;/a&gt; from the &lt;a href="http://www.microsoft.com"&gt;Microsoft&lt;/a&gt; &lt;a href="http://www.microsoft.com/Sharepoint/default.mspx"&gt;SharePoint&lt;/a&gt; Team. (&lt;strong&gt;Added 2009-05-22&lt;/strong&gt;)&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Service Pack 2 has unfortunately a serious bug which makes SharePoint &lt;em&gt;time bombed&lt;/em&gt; after 180 days. Workaround is described (&lt;a href="http://support.microsoft.com/kb/971620"&gt;KB article&lt;/a&gt;) and hotfix is on the way!&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;a href="http://connect.nintex.com/forums/thread/3640.aspx"&gt;Nintex Workflow 2007 problem with Service Pack 2&lt;/a&gt; (&lt;strike&gt;Nintex currently advises users not to install SP2&lt;/strike&gt;) – the forum thread contains a workaround (&lt;strong&gt;Updated 2009-05-01&lt;/strong&gt;)       &lt;ul&gt;       &lt;li&gt;Why did they not have a public (or semi-public beta) for SP2 so companies like Nintex could be proactive &lt;/li&gt;        &lt;li&gt;&lt;strong&gt;Update 2009-05-08&lt;/strong&gt;: &lt;a href="http://www.nintexdownload.com/sl/supportfiles/NW2007_version_history.pdf"&gt;Nintex Workflow 2007 1.9.4 fixes these issues&lt;/a&gt; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;a href="http://home.kbworks.nl/blog/archive/2009/04/29/failure-during-update-sharepoint-sp2.aspx"&gt;Failure when running configuration wizard after applying SP2 (problem and solution)&lt;/a&gt;       &lt;ul&gt;       &lt;li&gt;The search service seems to be causing trouble for some users, either when running the config wizard or the b2b timer job &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hezser.de/blog/archive/2009/04/28/installation-of-sharepoint-sp2-fails.aspx"&gt;Problem with SQL Server and AWE memory allocation&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Some people says that it takes some time to start SharePoint after applying the update      &lt;ul&gt;       &lt;li&gt;Note that the content-dbs may automatically be defragmented after the update using the new defragmentation job &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Me and some others had some problems when running the installer which was due to the fact that the download of the updates failed so the installation package was corrupt. I had to retry a few times to get all the bits &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msmvps.com/blogs/laflour/archive/2009/04/30/sharepoint-sp2-and-spdatabasegbwsequence-error-is-caused-by-free-sharepoint-templates.aspx"&gt;SharePoint SP2 and SPDatabaseGbwSequence error is caused by free SharePoint templates&lt;/a&gt; (&lt;strong&gt;Added 2009-04-30&lt;/strong&gt;)       &lt;ul&gt;       &lt;li&gt;Another reason to test your installation &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;a href="http://twitter.com/brianlala/status/1658976044"&gt;SharePoint Designer needs Service Pack 2 to connect to a SharePoint Service Pack 2 farm&lt;/a&gt; (&lt;strong&gt;Added 2009-04-30&lt;/strong&gt;) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.wssdemo.com/Blog/archive/2009/05/05/SharePoint-2007-SP2.aspx"&gt;MSI error 1603 while installing MOSS Service Pack 2&lt;/a&gt; (&lt;strong&gt;Added 2009-05-04&lt;/strong&gt;) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Have you experienced any other troubles, I’ll gladly update the list!&lt;/p&gt;  &lt;p&gt;If you’re anxious to install it, &lt;a href="http://msmvps.com/blogs/shane/archive/2009/04/29/install-guide-sp2-for-sharepoint-wss-v3-and-moss-2007.aspx"&gt;here is a great guide&lt;/a&gt; by &lt;a href="http://msmvps.com/blogs/shane/"&gt;Shane Young&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/AlsVkwKf4ZOFALthHBV6IKmsUE4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AlsVkwKf4ZOFALthHBV6IKmsUE4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/AlsVkwKf4ZOFALthHBV6IKmsUE4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AlsVkwKf4ZOFALthHBV6IKmsUE4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=o4KulUahBag:KulaGwj3s5c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=o4KulUahBag:KulaGwj3s5c:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=o4KulUahBag:KulaGwj3s5c:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=o4KulUahBag:KulaGwj3s5c:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=o4KulUahBag:KulaGwj3s5c:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=o4KulUahBag:KulaGwj3s5c:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=o4KulUahBag:KulaGwj3s5c:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=o4KulUahBag:KulaGwj3s5c:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/o4KulUahBag" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-05-22 00:41:18Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-05-22 00:41:18Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">22</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=474</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/SharePoint-Service-Pack-2-known-found-and-experienced-problems.aspx</feedburner:origLink></item><item><title>Introducing SharePoint Extensions Lib</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/l_56FoQY3us/Introducing-SharePoint-Extensions-Lib.aspx</link><category>SharePoint</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Wed, 20 May 2009 18:40:43 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Introducing-SharePoint-Extensions-Lib.aspx</guid><description>&lt;p&gt;I've had an idea for some time to gather all mine and others nifty extension, utility and helper methods into a shared library so that these can be reused in different projects and I finally got my act together and created a new project on &lt;a href="http://www.codeplex.com"&gt;Codeplex&lt;/a&gt; called &lt;a href="http://spexlib.codeplex.com/"&gt;SharePoint Extensions Lib&lt;/a&gt;, &lt;a href="http://spexlib.codeplex.com/"&gt;http://spexlib.codeplex.com/&lt;/a&gt;, &lt;strong&gt;SPExLib&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/IntroducingSharePointExtensionsLib_97C2/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="SharePoint Extensions Lib" border="0" alt="SharePoint Extensions Lib" src="http://www.wictorwilen.se/WindowsLiveWriter/IntroducingSharePointExtensionsLib_97C2/image_thumb.png" width="397" height="89" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This is a library filled with extension methods to the &lt;a href="http://www.microsoft.com/Sharepoint/default.mspx"&gt;SharePoint&lt;/a&gt; object model and to the &lt;a href="http://www.microsoft.com"&gt;Microsoft&lt;/a&gt;.NET 3.5 SP1 classes as well as some helper classes. All you have to do is reference it in your solution and add the &lt;em&gt;using SPExLib.Extensions&lt;/em&gt; statement to your code and you are ready to go.&lt;/p&gt;  &lt;p&gt;The goal with this project is to make SharePoint programming easier and to fill in the gaps left out in the standard SharePoint APIs.&lt;/p&gt;  &lt;h3&gt;&lt;/h3&gt;  &lt;h3&gt;Version 1.0.0.0&lt;/h3&gt;  &lt;p&gt;This &lt;a href="http://spexlib.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=27623"&gt;first version&lt;/a&gt; contains extension methods such as:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;SPWeb.ListExists() - checks if a list exists in a site &lt;/li&gt;    &lt;li&gt;SPList.ViewExists() - checks if a list contains a specific view &lt;/li&gt;    &lt;li&gt;SPListItem.Contains() - checks if a list item contains a specific field &lt;/li&gt;    &lt;li&gt;SPListItemCollection.FindByField() - returns all items with a certain value to a specific field &lt;/li&gt;    &lt;li&gt;Extensions to the XElement and XmlNode objects &lt;/li&gt;    &lt;li&gt;A set of classes to make creation of WebParts with EditorParts easier to create &lt;/li&gt;    &lt;li&gt;and more &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;New versions will be released as soon as we have some new and cool extensions.&lt;/p&gt;  &lt;h3&gt;Contributions - I want you&lt;/h3&gt;  &lt;p&gt;I really would like to see contributions to this library, so feel free to &lt;a href="http://www.wictorwilen.se/Contact.aspx"&gt;contact&lt;/a&gt; me or write suggestions on the &lt;a href="http://spexlib.codeplex.com/Thread/List.aspx"&gt;Codeplex discussions page&lt;/a&gt;. I know that you are sitting on really good stuff out there.&lt;/p&gt;  &lt;p&gt;If you have similar or better implementations that the ones already there, please feel free to show me a better implementation. Let's make this first class.&lt;/p&gt;  &lt;p&gt;You can also get &lt;a href="http://spexlib.codeplex.com/SourceControl/ListDownloadableCommits.aspx"&gt;the source&lt;/a&gt; and check it out and borrow some methods if you like. &lt;a href="http://spexlib.codeplex.com/license"&gt;SPExLib is licensed under Ms-PL&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wZc6-gKW_V3Pb2v9BO7CHGGxMlI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wZc6-gKW_V3Pb2v9BO7CHGGxMlI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wZc6-gKW_V3Pb2v9BO7CHGGxMlI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wZc6-gKW_V3Pb2v9BO7CHGGxMlI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=l_56FoQY3us:34N8aq2pSxo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=l_56FoQY3us:34N8aq2pSxo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=l_56FoQY3us:34N8aq2pSxo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=l_56FoQY3us:34N8aq2pSxo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=l_56FoQY3us:34N8aq2pSxo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=l_56FoQY3us:34N8aq2pSxo:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=l_56FoQY3us:34N8aq2pSxo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=l_56FoQY3us:34N8aq2pSxo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/l_56FoQY3us" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-05-21 01:40:43Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-05-21 01:40:43Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=482</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Introducing-SharePoint-Extensions-Lib.aspx</feedburner:origLink></item><item><title>Virtualizing XP applications using Windows 7</title><link>http://feedproxy.google.com/~r/WictorWilen/~3/6-PvF9ToCx8/Virtualizing-XP-applications-using-Windows-7.aspx</link><category>Visual Studio</category><category>Windows XP</category><category>Windows 7</category><category>Virtual PC</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wictor Wilén</dc:creator><pubDate>Thu, 14 May 2009 18:53:33 PDT</pubDate><guid isPermaLink="false">http://www.wictorwilen.se/Post/Virtualizing-XP-applications-using-Windows-7.aspx</guid><description>&lt;p&gt;&lt;a href="http://www.microsoft.com/windows/windows-7/default.aspx"&gt;Windows 7&lt;/a&gt; has an upgrade to &lt;a href="http://www.microsoft.com/windows/virtual-pc/download.aspx"&gt;Virtual PC&lt;/a&gt; which allows you to run Windows XP applications virtualized on your Windows 7, without having to run the whole desktop running.&lt;/p&gt;  &lt;p&gt;I still have to use Visual Studio 2003 to support some old good applications including &lt;a href="http://www.microsoft.com/Sharepoint/default.mspx"&gt;SharePoint&lt;/a&gt; 2003 apps. So I have used a Windows XP virtual machine to run it, but now I can fire up Visual Studio 2003 directly from my Start menu in Windows 7. As most of you know, you can't install VS2003 on a Vista or Windows 7 machine, and I don't even want it there either.&lt;/p&gt;  &lt;p&gt;It's also great for having Internet Explorer 6, 7 and 8 on the same machine!&lt;/p&gt;  &lt;p&gt;Here are some pictures of the Windows XP Mode features.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/VirtualizingXPapplicationsusingWindows7_9A89/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Visual Studio 2003 running on Windows 7 using Windows XP mode" border="0" alt="Visual Studio 2003 running on Windows 7 using Windows XP mode" src="http://www.wictorwilen.se/WindowsLiveWriter/VirtualizingXPapplicationsusingWindows7_9A89/image_thumb_2.png" width="244" height="224" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Visual Studio 2003 running on Windows 7 using Windows XP mode&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/VirtualizingXPapplicationsusingWindows7_9A89/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Published XP Mode apps" border="0" alt="Published XP Mode apps" src="http://www.wictorwilen.se/WindowsLiveWriter/VirtualizingXPapplicationsusingWindows7_9A89/image_thumb.png" width="168" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The published Windows XP applications in the Windows 7 start menu.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.wictorwilen.se/WindowsLiveWriter/VirtualizingXPapplicationsusingWindows7_9A89/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.wictorwilen.se/WindowsLiveWriter/VirtualizingXPapplicationsusingWindows7_9A89/image_thumb_1.png" width="186" height="241" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The Windows XP notification icons appear in the Windows 7 notification area. Note  the Windows Update and Windows Security Alert icons. I thought this was really cool.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9_p9nEeU5Ni_XUXgfwJa-_kHkww/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9_p9nEeU5Ni_XUXgfwJa-_kHkww/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9_p9nEeU5Ni_XUXgfwJa-_kHkww/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9_p9nEeU5Ni_XUXgfwJa-_kHkww/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=6-PvF9ToCx8:nJhbxnONIFY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=6-PvF9ToCx8:nJhbxnONIFY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=6-PvF9ToCx8:nJhbxnONIFY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=6-PvF9ToCx8:nJhbxnONIFY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=6-PvF9ToCx8:nJhbxnONIFY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=6-PvF9ToCx8:nJhbxnONIFY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WictorWilen?a=6-PvF9ToCx8:nJhbxnONIFY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WictorWilen?i=6-PvF9ToCx8:nJhbxnONIFY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WictorWilen/~4/6-PvF9ToCx8" height="1" width="1"/&gt;</description><atom:author xmlns:atom="http://www.w3.org/2005/Atom">
                    <atom:name>Wictor Wilén</atom:name>
                </atom:author><atom:published xmlns:atom="http://www.w3.org/2005/Atom">2009-05-15 01:53:33Z</atom:published><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2009-05-15 01:53:33Z</atom:updated><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://www.wictorwilen.se/trackback.aspx?id=481</trackback:ping><feedburner:origLink>http://www.wictorwilen.se/Post/Virtualizing-XP-applications-using-Windows-7.aspx</feedburner:origLink></item></channel></rss>
